• User Newbie

    form dinamico prepolato e update dei dati

    Ciao a tutti,

    ho una form prepolata in modo dinamico da una query sul db.

    Sino qui tutto bene. Il ciclo while crea una nuova riga per ogni record trovato ma assegna sempre lo stesso nome alle variabili così che, quando vado a fare nello script successivo, l'update dei dati mi trovo solo l'ultimo record proposto aggiornato e no anche gli altri.

    Come devo risolvere?

    Grazie,

    marco


  • User Attivo

    EEh?? Una form prepolata... nuove righe (dove?) e assegnare nomi alle variabili?
    Sinceramente e senza offesa... non ci ho capito nulla di quello che hai scritto...

    Comunque, andando un po' a caso, mi pare di capire che leggi dei dati all'interno di un ciclo while; concluso il ciclo fai un inserimento nel database.
    Se ho capito bene, il problema è semplicemente che devi eseguire una insert (o update) all'interno del ciclo while e non alla fine. Oppure potresti aggiungere un pezzo di query ogni volta che passi per il while ed eseguirla una volta terminato il ciclo (più efficiente).


  • User Attivo

    Crea una variabile di servizio $i che si incrementa ad ogni giro del ciclo e aggiungila ad ogni name dei vari input text.

    Avrai poi il contenuto in una variabile del tipo $_POST["nome_1"]


  • User Newbie

    Provo a spiegarmi meglio:

    ho un database alunni con i record degli allievi (nome, cognome, classe, voto, ecc) con uno script eseguo una select che mi filtra gli allievi di una certa classe (esempio la quarta).

    $sql = "select * from alunni WHERE classe='$classe' order by cognome";
    $query = mysql_query ($sql, $connessione) or die ("Problemi con la visualizzazione della lista utenti");
    echo "<h2 align="left">Recupero dati alunni</h2>";

    while ($rigo = mysql_fetch_array ($query))
    {
    $id = $rigo["id"];
    $classe = $rigo["classe"];
    $txtnome = $rigo["txtnome"];
    $txtcognome = $rigo["txtcognome"];
    $txtannonascita = $rigo["txtannonascita"];
    $txtnazione = $rigo["txtnazione"];
    $voto1 = $rigo["voto1"];
    $voto2 = $rigo["voto2"];

    segue form con campi già popolati ad esclusione del voto1 e voto2 che io voglio invece modifcare facendo l'update di tutti i record ...

    nello script successivo mi si presentano a video correttamente tutti gli allievi di quella classe, ma quando faccio l'update ciò avviene SOLO per l'ultimo record ...

    So essere un problema di array, ma non ne vengo fuori.

    grazie, ancora.


  • User Attivo

    Il problema allora è solo in parte in questo script e per la maggior parte in quello di update.
    Qui devi preoccuparti che il form abbia un input con name univoco per ogni campo studente.
    Per esempio, avendo un id univoco per ogni studente (ad esempio la matricola, o un campo int con autoincrement), potresti chiamare il campo dove inserisci il voto "voto_$idstudente". Così, quando invii il form, ti troverai delle variabili su $_REQUEST che hanno già l'id dello studente e il voto che vuoi inserire. A quel punto basta che per ogni studente fai un update inserendo il voto contenuto in $REQUEST["voto$idstudente"].