Durante lo sviluppo di un software che usiamo al lavoro mi sono trovato difronte ad un problema.
Ho un form generato dinamicamente pescando da un DB mysql e quindi mi trovo con tanti campi con lo stesso identico nome.
La cosa diventa problematica quando poi cerchi di lavorare sui dati di quel form in una pagina php, perchè usando
$var=$_POST['nome_campo'];
ti vedi ritornare solo l’ultimo valore del form e non tutti gli altri.
La soluzione in questo caso è piuttosto semplice, bisogna però effettuare due piccole modifiche a livello di codice sia nel form html che nella pagina php che andrà poi a gestire i dati ricevuti.
Supponiamo di avere un campo di testo, la modifica dovrà essere effettuata sul nome del campo in questo modo
<input type=text name="nome_campo[]">
è quindi sufficiente inserire le parentesi quadre al nome del campo. Ovviamente la stessa sintassi vale anche nel caso di checkbox o altri tipi di input.
Passando ora dalla parte del php procederemo in questo modo.
Innanzitutto dobbiamo ricevere il contenuto dei campi e lo facciamo nel modo classico, cioè
$var=$_POST['nome_campo'];
a questo punto per poter scorrere tutti gli elementi useremo un ciclo for (o se preferite potete usare anche un foreach) in questo modo
for($i=0;$i<count($var);$i++){
echo $var[$i];
}
Et voilà