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.
Volem implementar una llista de la compra com aquesta:
Resoldríem la part HTML així:
<h3>Llista de la compra</h3> <form action="checkboxes2.php" method="post"> <input type="checkbox" id="patates" name="patates"> <label for="patates">Patates</label> <br> <input type="checkbox" id="ous" name="ous"> <label for="ous">Ous</label> <br> <input type="checkbox" id="cebes" name="cebes"> <label for="cebes">Cebes</label> <br> <input type="submit"> </form>
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:
<?php $productes = ["patates","ous","cebes"]; echo "<p>A la cistella hi ha:</p>\n"; echo "<ul>\n"; foreach( $productes as $elem ) { if( in_array($elem,array_keys($_POST)) ) echo "<li>$elem</li>\n"; } echo "</ul>"; var_dump($_POST);
Observa que:
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».name.foreach per recórrer la llista d'elements de l'array productes.in_array() per saber si un element concret està dins de la llista de productes.array_keys() obtenim un array amb les claus del diccionari $_POST on hi ha les dades enviades pel formulari.
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[]:
<h3>Llista de la compra amb array</h3> <form action="checkboxes_array2.php" method="post"> <input type="checkbox" id="patates" name="prod[]"> <label for="patates">Patates</label> <br> <input type="checkbox" id="ous" name="prod[]"> <label for="ous">Ous</label> <br> <input type="checkbox" id="cebes" name="prod[]"> <label for="cebes">Cebes</label> <br> <input type="submit"> </form>
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ó?