View Single Post
Old 28-05-2006, 22:22   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Sgurbat
Ciao,

ho un problema concettuale, voglio dinamicizzare un elenco di campi checkbox i cui nomi di campo sono elencati a DB.

Faccio una select e li elenco uno ad uno in output e fin qui nessun problema.

Ora voglio però leggere quali di questi sono "checked" in modo da tenere la spunta una volta inviata la form.

Come faccio?

Dato per assunto che la cosa deve essere completamente dinamica ovvero se aggiungessi/togliessi record a DB lo stesso script continui a funzionare senza modifiche del caso.

Coscio che forse non è facile da capire per come mi spiego vi chiedo come si fà a recuperare in post il valore di un campo il cui name è dinamico es:

<input type="checkbox" name="<?php echo $myrow['campo']; ?>" ... />

Grazie.
È possibile. Il problema sta solamente nel nome da dare ai checkbox.

Dal punto di vista del PHP, i dati li puoi prendere usando le variabili speciali $_GET e $_POST. Sono array associativi, quindi se sai il nome del campo, lo prendi direttamente con $_POST['nomecampo'] ma puoi anche fare un foreach ($_POST as $campo => $valore).

Se però hai anche altri campo (testo, hidden, ecc...) rischi di confondere i campi dei checkbox con gli altri. Quindi l'ideale sarebbe quello di mettere un prefisso nel nome dei checkbox:
Codice:
name="chk_<?php echo $myrow['campo']; ?>"
A questo punto, puoi fare:
Codice:
foreach ($_POST as $campo => $valore)
{
    if (substr ($campo, 0, 4) == "chk_")
    {
        $nome_checkbox = substr ($campo, 4);
        ....
    }
}
Questa è una possibile soluzione (e probabilmente non l'unica) che mi è venuta in mente.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso