- Home
- Categorie
- Coding e Sistemistica
- PHP
- Checkbox dinamico con database
-
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 />";
}
?>
-
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.
-
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.
-
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).
-
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.
-
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.