• User Attivo

    Checkbox dinamico con database

    Salve a tutti, ho un problema alquanto banale ma che non so risolvere perché è la prima volta che mi capita.
    Devo creare una lista check box estrapolando le voci da una tabella di un database e poi vedere quelle che sono state selezionate e salvarle sun un'altra tabella.

    La check box statica è la seguente:

    <form method="post" action="recuperaCheckbox.php">
    <input type="checkbox" name="myCheck[a]" value="Valore A" /> Valore A
    <br />
    <input type="checkbox" name="myCheck**" value="Valore B" /> Valore B
    <br />
    <input type="checkbox" name="myCheck" value="Valore C" /> Valore C
    <br />
    <input type="submit" value="invia form" />
    </form>

    Mentre questa è la pagina recuperaCheckbox.php

    <?php
    $myCheck = $_POST['myCheck'];

    foreach ($myCheck as $key => $value) {
    echo "Hai selezionato la checkbox: $key con valore: $value<br />";
    }
    ?>


  • User

    Ciao,
    Non ho mai usato molto quel tipo di acquisizione dati ma per prima cosa proverei a stampare l'array myCheck[] con una
    print_f($myCheck);
    In modo da vedere se il problema è nell'array oppure dopo.


  • User Attivo

    Forse non è chiaro: questo codice così come è funziona perfettamente.
    Quello che devo fare io è sostituire i campi statici con quelli dinamici, ovvero le voci che vengono visualizzate nel form devono essere prelevate da una tabella.
    Successivamente, alla conferma del form, devo estrapolare i dati che sono stati spuntati e scriverli su un'altra tabella.


  • User

    Se non ho capito male, tu vuoi valorizzare i vari campi Check con dei valori già presenti sul DB; quindi credo che basti leggere i dati dal DB e metterli nel 'value' al posto di 'Valore A, Valore B, ecc.' (se è questo che volevi sapere).


  • User Attivo

    Si esatto, e questa prima parte riesco a farla tranquillamente.

    <input type="checkbox" name="<?php echo $srv['nome']?>" value="<?php echo $srv['nome']?>" /> <?php echo $srv['nome']?>

    Mi manca la parte dopo, ovvero quando devo prelevare i dati selezionati e poi andarli a memorizzare su un'altra tabella.


  • User

    Invece di usare 'nome' (string) nell'echo, usa un valore numerico progressivo per identificare il nome di 'valore', e fallo diventare:

    echo 'Valore'.$Numero;

    e poi per scrivere i records ti basta fare l'esatto opposto di quello che fai per leggere; fai una query di scrittura inserita in un ciclo 'for' (se conosci il numero di Record da inserire) oppure con un 'while' (se non sai quanti record hai).

    I valori da inserire li trovi sempre con $_POST e, naturalmente, devi inserire anche questo nel ciclo

    FOR ($i=0; $i <= $MaxRk; ++$i) {
    $RkAgg = $_POST["$srv['Valore'.$i]"];

    qui poi fai la query di INSERT utilizzando $RkAgg come dato da inserire

    }

    Controlla solo il discorso degli apici perchè spesso mi confondo (non sono ancora molto esperto in php) ed anche il codice non è del tutto completo, ma quello che volevo darti è una strada.

    Se ti può essere utile.