====== Checkboxes en PHP ======
Aquest article ve dels fonaments en [[PHP]].
Els checkboxes es poden resoldre com a variables independents cadascun, o bé a través d'un array, que ho fa mes convenient.
\\
===== Checkboxes bàsic =====
Volem implementar una llista de la compra com aquesta:
{{checkboxes_compra.png?300}}
Resoldríem la part HTML així:
Llista de la compra
Ens enviarà les dades com seria mes esperable (si seleccionem Ous i Cebes):
$_POST = array(2) {
["ous"]=>
string(2) "on"
["cebes"]=>
string(2) "on"
}
I el processament d'aquest formulari:
A la cistella hi ha:
\n";
echo "\n";
foreach( $productes as $elem ) {
if( in_array($elem,array_keys($_POST)) )
echo "- $elem
\n";
}
echo "
";
var_dump($_POST);
Observa que:
* Al ''var_dump()'' del final es mostren les dades que ens arriben. Cada producte marcat a la checkbox arribarà com un element del diccionari amb el valor "on".
* Cada element amb checkbox té una entrada al diccionari amb el seu ''name''.
* Enlloc de processar cada element fem un ''foreach'' per recórrer la llista d'elements de l'array ''productes''.
* Utilitzem la funció ''in_array()'' per saber si un element concret està dins de la llista de productes.
* Amb ''array_keys()'' obtenim un array amb les claus del diccionari ''$_POST'' on hi ha les dades enviades pel formulari.
\\
===== Checkboxes amb array =====
Si volem enviar tots els elements de la compra en un sol array, es pot fer canviant el formulari inicial, i al ''name'' de cada checkbox posar-hi el nom de la variable array, per nosaltres ''prod[]'':
Llista de la compra amb array
Això ens enviaria les dades via POST d'aquesta altra manera, diferent de l'exemple anterior:
$_POST = array(1) {
["prods"]=>
array(2) {
[0]=>
string(3) "ous"
[1]=>
string(5) "cebes"
}
}
Realitza el codi PHP que mostri els elements que hem seleccionat, similarment a com s'ha resolt en el primer exemple.
És més senzill o més complicat el codi d'aquesta nova versió?