• User

    Controllare validità valori presi da db per creare un form

    Ciao a tutti torno a chiedervi consiglio 🙂 spero possiate aiutarmi a capire. Premetto che sono alle prime armi e vi spiego cosa volevo fare: in pratica volevo far generare un form con checkbox che verificasse che la scelta che si voleva selezionare fosse più o meno disponibile recuperando i dati da un db in cui sono inserite le scelte già fatte. Io ho scritto il seguente codice, ma purtroppo mi mostra solo un campo di quelli già scelti mentre in realtà quelli già scelti e presenti nel db sono 2. Ecco il codice:
    [PHP]
    <form name="form_POST" action="nomepagina.php" method="POST">
    Inserisci un nominativo:<br />
    <input type="text" name="nome" /><br /><br />
    Seleziona un campo qui sotto<br />
    <?php
    $a = 0;
    $b = 0;

    $query = 'SELECT * FROM valori';
    $risul = @$conn->query($query);
    $ctrl = @$risul->fetch_array();

    while ($a < 12){
        $a++;
        $b++;
        ?>
    <input type="checkbox" name="sessioni[]" value="<? echo $a; ?>" /><?php if($a == $ctrl['valore']){echo $b."° - "."Occupato da ".$ctrl['nome'];}else{echo $b."°";} ?><br />
    

    <?php
    }
    ?>
    <br />
    <input type="submit" value="Invia" />
    </form>
    [/PHP]

    Nel Db ho il nome e il valore, e anche se mettiamo io nel db ho due righe che hanno nella colonna valore una 2 l'altra 3 il form quando appare mi mostra occupato solo il 3. Dove è l'errore? Potete aiutarmi. Il fatto che faccio generare dal codice tutte le opzioni è dovuto al fatto che potrebbero essere anche più di 50. Grazie a tutti e per ora ciao


  • User

    Perdonami, ma non ho capito bene il problema.
    Azzardo: sei sicuro di ciclare il risultato della query e di non mantenere sempre lo stesso record (per via di $ctrl dichiarato fuori dal ciclo)?


  • User Attivo

    Ciao,
    visualizi solo un risultato perchè, come ti ha segnalato sydarex, non effettui alcun ciclo per visualizzarli tutti.
    Per farlo devi utilizzare, ad esempio, un ciclo while:
    [PHP]
    while ($ctrl = @$risul->fetch_array())
    {
    //qui il resto del codice che devi eseguire per ogni risultato ottenuto dalla query
    }
    [/PHP]

    Alessandro


  • User

    Ciao, prima di tutto grazie per le risposte, in seconda battuta proverò subito a fare le correzioni che mi avete suggerito. Anche se non dubito del fatto che siano giuste. A presto


  • User

    Ho provato a inserire il WHILe come proposto, ma o sbaglio io il posto dove metterlo o credo non funzioni:smile5:. Rispiego meglio il mio problema . In una pagina io ho un forum che presenta un campo con risposte multiple. Una volta inviati i dati, queste risposte vengono inserite in un db che crea una riga per ogni valore immesso. Nell'esempio del codice che vi ho postato per esempio l'utente Mario sceglierà tra valori che vanno dall'1 al 12(mettiamo che scelga 3 e 4), nel db troveremo ID 1 nome mario **valore **3; ID 2 nome mario valore 4. A questo punto io vorrei che ricaricando la pagina questa vada a cercare nel db i valori già prenotati, e accanto alla casella 3 e 4 appaia occupato da Mario. Io pensavo di aver reitarato la query mettendola nel nel while per la creazione del campo multiscelta, ma si ferma solo al primo valore. Spero di essermi spiegato meglio, grazie ancora e ciao


  • User

    Qualcuno ha qualche altro suggerimento da darmi... secondo me con il codice che avevo scritto sopra ogni volta che mi riciclava il form fino a che la $a fosse inferiore a 12 avrebbe dovuto farmi sempre il controllo... come mai non avviene?