Inviare dati da Select Multiple con PHP

Durante lo sviluppo di un sito web, spesso si ha a che fare con moduli per l’invio di dati, i cosiddetti forms HTML. Se hai già esperienza con HTML, sicuramente ti sarai imbattuto negli elementi di input con cui gli utenti compilano determinati campi e inviano una richiesta via server (che sia una richiesta di contatto, una email o di altro genere).

Uno degli elementi HTML di tipo input molto usato e utile è sicuramente <select>, che permette di selezionare una voce specifica da una lista preimpostata, grazie all’ausilio del tag <option>, oppure di selezionare più voci con il parametro multiple.

Proprio su multiple volevo fermarmi, poiché ho notato che molti sviluppatori trovano difficoltosa la gestione dei valori inviati tramite l’elemento HTML select multiple. Se fai parte di questo gruppo, qui di seguito ti spiegherò come fare ad inviare dati al server con PHP attraverso <select multiple> e la selezione di due o più voci.

Invio e gestione dati da <select multiple> con PHP

Prima di spiegarti come inviare ed elaborare dati con PHP e l’elemento “select “multiple devo spiegarti necessariamente alcune cose.

Do per scontato che chiunque legga questa guida abbia un minimo di esperienza con HTML e PHP, almeno il minimo per la gestione delle richieste al server tramite moduli. Anche se cercherò di spiegare il codice nel modo più semplice a me possibile, è comunque richiesto un minimo di intervento personale per l’adattamento alle proprie esigenze (fare copia/incolla non servirà a molto).

Detto questo, come ben saprai il tag <select> in HTML viene generalmente utilizzato per le selezionare una singola voce, ma con l’aggiunta del parametro “multiple” l’utente ha la possibilità di cliccare e selezionare più di una voce (premendo contemporaneamente il tasto CTRL).

form con select multiple
Esempio di un form con “select multiple”

Come puoi notare inoltre, il tag deve essere inserito in un form per poter inviare le informazioni (i valori delle voci selezionate). Il metodo di invio può essere fatto sia con “POST” che con “GET“, poiché con PHP possiamo ricevere e gestire i dati in ugual modo (basta specificare correttamente la variabile globale $_GET[..] o $_POST[..].

Se non necessiti della seleziona multipla, elimina il parametro multiple dal tag select per non complicare lo sviluppo della pagina.

Il codice

Per inviare dati ed elaborare una richiesta di valori multipli con PHP dobbiamo fare in modo che, all’invio di un modulo (submit) dove è presente un elemento select con parametro multiple, il server rilevi un array contenente tutti i valori selezionati.

Un array è un contenitore di valori, dunque dobbiamo necessariamente usare un ciclo (loop) per la lettura di ognuno di essi. In PHP il ciclo più adatto a questo scopo è foreach().

Per fare quanto detto, inseriamo questo codice all’inizio della pagina PHP (con formato .php), prima del tag <!doctype html> e <html>:

<?php 
if(isset($_POST['submit']))
{
   $gruppoVoci = $_POST['lista[]'];
   foreach($gruppoVoci as $singolaVoce)
   {
      echo $singolaVoce;
      //esegui una funzione o fai qualcosa...
   }
}
?>

In questo modo avremo definito il comportamento della pagina all’invio di un modulo. Come puoi vedere, la selezione multipla viene gestita dichiarando il nome lista[] nell’attributo name dell’elemento <select>.

<form method="post">
<label for="lista[]">Seleziona le tue città preferite</label><br>
   <select name="lista[]" multiple>
     <option value="1">Roma</option>
     <option value="2">Milano</option>
     <option value="3">Torino</option>
     <option value="4">Napoli</option>
     <option value="5">Firenze</option>
   </select><br>
  <input type="submit" name="submit" value="invia">
</form>

Se vuoi utilizzare una richiesta “GET“, basta modificare i testi dove è presente la dicitura “POST” e sostituirla con “GET”, e cambiare anche il parametri method nel tag <form>.

Iscriviti alla nostra Newsletter qui e seguici su Facebook per aggiornamenti!


Articoli recenti:

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

CAPTCHA