Invio di checkboxes multiple a un file PHP con jQuery ajax

 Oggi vediamo come inviare valori di checkboxes multiple a un file PHP per poter elaborare i dati grazie all’uso di jQuery ajax.

[lightgrey_box] Per comprendere appieno questo articolo è necessario leggere anche come inviare dati tramite .ajax. Clicca qui.  [/lightgrey_box]

Struttura e panoramica dello script

La struttura html è molto semplice, ovviamente oltre alle checkboxes potete aggiungere anche altri elementi come si vede in questo mio precedente articolo. 

<input  type="checkbox"  id="mycheck"  name="mycheck[]" value="mycheck1" />
<input  type="checkbox"  id="mycheck"  name="mycheck[]" value="mycheck2" />

Come vedete ho associato oltre al classico attributo name anche l’attributo ID essenziale per poter recuperare agevolmente il valore della checkbox.

Per elaborare le checkboxes dobbiamo creare un loop tramite l’utilizzo della funzione .each() (per ciascun elemento), al fine di recuperare i valori selezionati dall’utente in questo modo:

var mycheck = new Array();
$("#mycheck:checked").each(function() {
mycheck.push($(this).val());
});

Da notare anche l’utilizzo della funzione .push() forse poco conosciuta, che consente di “trasferire” il valore a cui è applicata ad un altro elemento. Ovviamente i dati vanno poi inviati usando la funzione ajax di jQuery. Se non sai di cosa parlo leggi questo mio articolo.

Recupero ed elaborazione dei dati PHP

Una volta inviati i dati con .ajax dobbiamo recuperare i valori dall’array ed elaborarli con PHP. Un modo molto utile (uno dei tanti, ovviamente) è usare uno script di questo tipo:

$mycheck = $_POST['mycheck']; //recupero array delle check

$tot_mycheck = ""; //inizializzo la variabile
foreach ($mycheck as $value) { 
$tot_mycheck .= "$value,"; 
}

//Risultato $tot_mycheck = mycheck1,mycheck2 etc

In pratica lo script (una volta recuperati i valori dell’array con POST) crea una struttura del tipo: dato1,dato2 etc. I dati sono poi facilmente separabili usando la funzione explode di php che consente di dividere le stringhe a partire da un delimeter (nel nostro caso è la virgola).

Per estrarre ogni singolo elemento ed usarlo a nostro piacere ad esempio:

$single_value = explode(",",$tot_mycheck);

echo $single_value[1]; // Risultato: val1 ;
echo $single_value[2]; // Risultato: val2 ;
echo $single_value[3]; // Risultato: val3 ;

Conclusioni e approfondimenti utili

 [button link=”http://www.targetweb.it/uso-di-jquery-serialize-passare-dati-di-un-form-via-ajax/” color=”blue”]Metodo alternativo per il recupero dei valori[/button]

[button link=”http://api.jquery.com/jQuery.each/” color=”blue” target=”blank”]Documentazione .each()[/button]

[button link=”http://php.net/manual/en/function.explode.php” color=”blue” target=”blank”]Documentazione Explode PHP[/button]

Questa è una delle soluzioni che prediligo per affrontare il “problema” delle checkboxes multiple da inviare e da elaborare con PHP. Ovviamente esistono altre vie, ma questo è il mio, personalissimo, metodo. Spero possa esservi utile 😉

  1. Ciao buon pomeriggio, questo script funziona con tutti i browser tranne che con IE 9.
    C’è un modo per rimediare?
    Grazie mille.

Lascia un commento

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

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

Up Next:

Font Inspiration per loghi e web design: Almelo

Font Inspiration per loghi e web design: Almelo