WordPress: gestire le checkbox multiple

WordPress: gestire le checkbox multiple

Esiste una tecnica PHP antichissima (e a mio avviso a volte discutibile da un punto di vista della semantica HTML) per gestire le checkbox multiple in un form. Vale la pena illustrare questa tecnica perché si rivela utile anche in WordPress.

Abbiamo questo form:


<form action="" method="post">
	<div>
		<label for="one">Scelta 1</label>
		<input type="checkbox" name="choice" id="one" value="1" />
	</div>
	<div>
		<label for="two">Scelta 2</label>
		<input type="checkbox" name="choice" id="two" value="2" />
	</div>
	<p><input type="submit" value="Scegli" /></p>

</form>

Scrivendo in questo modo il codice HTML vogliamo permettere l'invio di più opzioni. Il problema è che l'attributo name è il medesimo e se abbiamo molti campi simili diventa arduo elaborare la richiesta tramite l'array superglobale $_POST, senza contare il fatto che i valori si sovrapporrebbero.

Ecco quindi una soluzione (rozza) ma efficace:


<form action="" method="post">
	<div>
		<label for="one">Scelta 1</label>
		<input type="checkbox" name="choice[one]" id="one" value="1" />
	</div>
	<div>
		<label for="two">Scelta 2</label>
		<input type="checkbox" name="choice[two]" id="two" value="2" />
	</div>
	<p><input type="submit" value="Scegli" /></p>

</form>

PHP effettuerà una conversione in array associativo usando come base i nuovi valori degli attributi name, ossia:


print_r( $_POST );

// Array ( [choice] => Array ( [one] => 1 [two] => 2 ) )

Quindi ora $_POST['choice'] contiene un array associativo con tutti i campi richiesti. E se vogliamo che contenga un array lineare è sufficiente scrivere gli attributi name come name="choice[]".

Torna su