Visualizzazione risultati 1 fino 15 di 15

Discussione: Manipolare lista utente in una form e con un submit solo

  1. #1
    Guest

    Predefinito Manipolare lista utente in una form e con un submit solo

    Ho una lista del genere, che mostra i vari utenti e ad ognuno si può impostare un nome:

    Codice:
    <form action='' method='post'>
    
    <?php
    while(utente trovato){
    echo "<br>$nome";
    echo "<input type='text' name='nome_da_dare' />";
    echo "<input type='hidden' value='$utente_id' />";
    }
    ?>
    
    <input type='submit' value='cambia i nomi' name='cambianomi'>
    </form>
    In pratica nell'input di testo assegno un nome a ciascun utente, e quando premo il bottone voglio che, per ognugno, prenda il nome inserito e lo metta all'id del campo hidden...
    Ho provato con un foreach ma non funziona nulla, mi prende solo l'ultimo...
    Forse devo mettere una form per ogni utente?
    Qualcuno sa aiutarmi?

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,807

    Predefinito

    Non ho capito bene a cosa ti serve il campo hidden. Non ha nemmeno un name! Puoi fare un esempio?

    Quando premi il bottone, il form viene inviato. Non ha molto senso dopo la pressione fare delle operazioni lato form, a parte eventuali controlli.

    Ciao!

  3. #3
    Guest

    Predefinito

    Si è vero mi son dimenticato di mettere il nome al campo hidden
    Comunque ciò che voglio fare quando il bottone viene premuto è:
    Per ogni utente viene aggiornato il database mettendogli il nome indicato nel campo text... Il campo hidden lo uso per prendere l'id utente infatti gli metto
    Value = $utenteid
    Quindi ad esempio ho 5 utenti ognugno col suo bel campo text a fianco:
    Mario ------ nel text scrivo Daniele
    Giovanni----nel text scrivo Giovannino
    Teresa----nel text scrivo Garibaldina
    Luigi---nel text scrivo Cristoforo
    Marco---nel text scrivo Polo

    Premo il submit, riaggiorno la pagina e mi vengono fuori, ognugno col campo text a fianco:
    Daniele
    Giovannino
    Garibaldina
    Cristoforo
    Polo

    Potrei fare un submit per ciscuno ma se ne devo cambiare 50, uno alla volta dovento nonno :D

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,807

    Predefinito

    Scusami mi sto sentendo stupido. Il problema è nel generare il form o nell'aggiornare i dati dopo la pressione del tasto "submit" del form?

    Visto che per ora non ho capito, non posso dir molto. Però potrei suggerirti di utilizzare degli array come name, in questo modo:

    Codice PHP:
    <form action='' method='post'>

    <?php
    while(utente trovato){
    echo
    "<br>$nome";
    echo
    "<input type='text' name='testo[]' />";
    echo
    "<input type='hidden' name='idutente[]' value='$utente_id' />";
    }
    ?>

    <input type='submit' value='cambia i nomi' name='cambianomi'>
    </form>
    In questo modo, dopo aver inviato il form avrai due array, del tipo:

    Codice:
    $_POST['testo'] = array('testo1', 'testo2', ...)
    $_POST['idutente'] = array('idUtente1', 'idUtente2', ...)
    Ciao!

  5. #5
    Guest

    Predefinito

    Il problema è nell'eseguire una query per ogni utente che viene elencato.
    Ad esempio la prima query sarà seguendo l'esempio che ho fatto prima:
    Update users set nome = Daniele where id =idUtente //l'id di mario
    La seconda
    Update users set nome =giovannino where id =idUtente //l'id di giovanni
    Ecc...
    Una query che modifchi ogni utente elencato, però tramite un solo pulsamte

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,807

    Predefinito

    Ah ok.
    Potresti fare le query dentro un ciclo (while, for, foreach,... vedi tu quello che ti risulta più comodo), dove ad ogni iterazione esegui la query UPDATE, aggiornando il valore.

    Altrimenti, sempre con i cicli potresti creare una sola query con case, come indicato qui.

    Ciao!
    Ultima modifica di alemoppo : 24-07-2015 alle ore 19.04.54

  7. #7
    Guest

    Predefinito

    Giusto per verificarne il funzionamento avevo provato qualcosa del genere:
    Foreach($_POST['nome_da_dare'] ){
    Echo $_POST['idUtente'];
    }
    E mi printava solo l'ultimo id

    Devo con gli array come mi hai scritto sopra?

  8. #8
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,807

    Predefinito

    Citazione Originalmente inviato da competenzepertutti Visualizza messaggio
    Devo con gli array come mi hai scritto sopra?
    Esattamente.

    Ciao!

  9. #9
    Guest

    Predefinito

    Infatti funziona :)
    Solo un'altra domanda...
    Per prendere gli id dall'array dei campi hidden, devo fare un altro foreach? perché mi restituisce "array"

  10. #10
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,807

    Predefinito

    Strano. Puoi mostrare il codice che stai usando?
    Ricordo che $_POST['idutente'] è un array, come lo è $_POST['testo'].
    Probabilmente stai accedendo a $_POST['idutente'] come fosse una semplice variabile e non un array.

    Ciao!
    Ultima modifica di alemoppo : 24-07-2015 alle ore 20.28.50

  11. #11
    Guest

    Predefinito

    Codice PHP:
    echo "<form action='' method='post'>";
    while(
    $user_data= mysqli_fetch_array($query)){
    echo
    "<br><input type='text' name='getvalue[]' />";
    echo
    "<input type='hidden' name='userid[]' value=' ".$user_data['id']." ' />";
    }
    echo
    "<input type='submit' name='save' value='save'></form>";

    if(
    $_POST['save']){
    foreach(
    $_POST['getvalue'] as $roles){
    echo
    "name = $roles id = ".$_POST['userid'];
    }}
    Questo mi fa uscire

    name = testo id = Array

  12. #12
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,807

    Predefinito

    Esattamente, perché $_POST['userid'] è un array.

    Prova così:

    Codice PHP:
    foreach($_POST['getvalue'] as $chiave => $roles){
    echo
    "name = $roles id = ".$_POST['userid'][$chiave];
    }
    Ciao!

  13. #13
    Guest

    Predefinito

    Perfetto funziona!
    Come al solito grazie mille :D
    Solo non ho capito cosa c'entra $chiave.
    Ultima modifica di competenzepertutti : 24-07-2015 alle ore 21.04.34

  14. #14
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,807

    Predefinito

    Come detto precedentemente, hai una cosa del tipo:
    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    [php]
    Codice:
    $_POST['testo'] = array('testo1', 'testo2', ...)
    $_POST['idutente'] = array('idUtente1', 'idUtente2', ...)
    Con il foreach scorri l'array $_POST['testo']. Quindi ad esempio al primo passo hai $_POST['testo'][0] (che sarebbe 'testo1'). Quindi vorresti l'id associato ovvero $_POST['idutente'][0] (che sarebbe 'idUtente1').
    Nel foreach, dopo as se metti una variabile, questa contiene ogni volta un valore dell'array. Se metti la struttura nel modo che ti ho indicato mette chiave e valore. Quindi conosci la chiave dell'elemento corrente di $_POST['testo']. Visto che la chiave corrispondente di $_POST['idutente'] è la stessa, l'ho utilizzata per ricavare il suo elemento.

    Se non hai capito dimmelo che faccio un esempio.

    Ciao!

  15. #15
    Guest

    Predefinito

    Ah capito!
    Grazie :D

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •