• User Newbie

    Recupero dati da un form generato da un ciclo while

    Ciao a tutti, eccomi qui per un altro problema che non riesco a risolvere nonostante mi stia arrovellando da un bel po'.

    Con una query select e un ciclo while recupero dei dati dal db, che vanno a formare enne numero di form per i quali devo dare un solo submit.

    Esempio:

    <? while ($valore=mysql_fetch_array($query)){
    $ID=$valore["ID"];
    $ABILITA=$valore["ABILITA"];
    $GRADI=$valore["GRADI"];

    //a ciascuna $ABILITA viene associato un campo per poter aumentare i gradi

    <input type="hidden" name="ID_ABIL" value="<?=$ID?>" id="ID_ABIL">
    <input type="text" name="ABIL" value="<?=$ABILITA?>" id="ABIL">
    <input type="text" name="GRADIATTUALI" value="<?=$GRADI?>" id="GRADIATTUALI">
    <input type="button" value=" - " onClick="javascript:this.form.ASSEGNA.value--;" class="tChiaro"> <input type="text" name="ASSEGNA" value="0" size="3" class="tChiaro" onChange="update();" id="ASSEGNA"> <input type="button" value=" + " onClick="javascript:this.form.ASSEGNA>.value++;" class="tChiaro">

    // praticamente io ho, nella pagina php, un elenco di abilità con accanto i tastini + e - per poter assegnare enne gradi, e poi andare a fare l'update nel db del campo $GRADI

    Come posso fare per far capire al sistema di prelevare i dati di tutte le righe, e di assegnare il valore di ASSEGNA all'abilità giusta, identificata dal campo ID?

    Mi era capitato un problema simile, ma in quel caso avevo solo un campo da trasportare e ho risolto con un array del tipo $campo[]

    Ma qua sono due, considerando anche che non tutte le abilità verranno incrementate, e quindi nella ricezione dei dati del post vorrei escludere quei valori di ASSEGNA = 0.

    Spero di essermi spiegata, e grazie in anticipo! :mmm:


  • Consiglio Direttivo

    Ciao Vento e benvenuto nel Forum GT 😉

    Credo ci aver capito a che serva 😄

    Mi sorge una domanda: a che ti serve questo?
    [html] <input type="text" name="ABIL" value="<?=$ABILITA?>" id="ABIL">[/html]c'è la possibilità di assegnare un testo qualsiasi all'abilita'?

    diversamente potresti semplicemente assegnare l'id abilità al name e quindi, snellendo un bel po, recuperarti gli id abilità con i relativi valori nuovi.

    [php] <? while ($valore=mysql_fetch_array($query)){
    $ID=$valore["ID"];
    $ABILITA=$valore["ABILITA"];
    $GRADI=$valore["GRADI"];
    ?>

    <p><?=$ABILITA?>
    <input type="text" name="<?=$ID?>" value="<?=$GRADI?>" id="<?=$ID?>">
    <input type="button" value=" - " onClick="javascript:this.form.<?=$ID?>.value--;" class="tChiaro">
    <input type="button" value=" + " onClick="javascript:this.form.<?=$ID?>.value++;" class="tChiaro">
    </p>
    <?
    }
    ?>[/php]in questo modo dovrai solo recuperarti i dati che hanno come name l'id abilità 😉

    Spero di aver capito il problema, facci sapere 😉


  • User Newbie

    No in effetti non c'è la possibilità di assegnare un testo, così è molto più logico! ^_^
    Ma poi come faccio a recuperare tutti i dati di ciascuna riga di form che mi viene creata dal ciclo while, e buttarli in db?

    Intanto grazie!!


  • Consiglio Direttivo

    Immagino che gli id delle abilità siano consecutivi e che tu sappia quanti sono, giusto?

    basta che cicli gli id recuperando i valori postati, salvando il tutto in un array, alla fina prendi il contenuto dell'array e lo inserisci nel Db 😉
    [php] for ($i=1, $i<=8, $i++) // immaginando che siano 8 abilità
    {
    $array*=$_POST*;
    }[/php]Una volta che hai l'array puoi inserire i dati relativi nel Db 😉
    Volendo puoi farlo anche direttamente
    [php]for ($i=1, $i<=8, $i++) // immaginando che siano 8 abilità
    {
    $sql="UPDATE abilita SET value='".$_POST*."' WHERE id='$i'";
    $query=@mysql_query etc etc etc.
    }[/php]


  • User Newbie

    Non c'è un numero esatto, perchè le condizioni da soddisfare variano da utente a utente.... però potrei mettere un mysql_num_rows per trovare una variabile che mi dia il totale, e quindi far diventare il ciclo
    ($i=1, $i<=$MAXAB, $i++)

    Grazie! ^__^