Ecco una procedura molto semplice. Mostrerò solo lo scheletro principale. L'aggiunta di flash-meat sarà da parte tua.
Supponiamo di avere due <select>
in ajax.php
così:
<select id="parent">
<option value="1">value1</option>
<option value="2">value2</option>
<option value="3">value3</option>
<option value="4">value4</option>
</select>
<select id="child">
</select>
Allora di cosa abbiamo bisogno? Dobbiamo popolare il 2° <select>
in caso di sua selezione.
Ecco la parte javascript (ajax.php)
<script type="text/javascript">
$(function(){
$('#parent').change(function(){ //on change event
var parentVal = $('#parent').val(); //<----- get the value from the parent select
$.ajax({
url : 'process.php', //the url you are sending datas to which will again send the result
type : 'GET', //type of request, GET or POST
data : { parentValue: parentVal}, //Data you are sending
success : function(data){$('#child').html(data)}, // On success, it will populate the 2nd select
error : function(){alert('an error has occured')} //error message
})
})
})
</script>
Questo invierà la richiesta a process.php
Ora arriva il process.php
Qui abbiamo bisogno dei dati per popolare il 2° <select>
Ora cosa c'è dentro <select>
?
<option value="someValue">someText</option>
Devi produrre qualcosa del genere:
<option value="11">value11</option>
<option value="12">value12</option>
<option value="13">value13</option>
<option value="14">value14</option>
Il valore e il testo all'interno riempiono le tue esigenze.
Come verrà dal database:
- Puoi ottenere il valore di selezione del genitore in
process.php
con$_GET['parentValue']
- Con quel valore, interroga il database
- Quindi dal risultato restituito dal database, usa un ciclo
while
,foreach
ofor
(a seconda del modo in cui lo stai recuperando), crea il<option value="someValue">someText</option>
. - hai finito!
Per la selezione multipla
per semplificarti la vita, puoi utilizzare chosen multiselect
Un consiglio
mysql_*
è deprecato. usa invece DOP. Ecco un link a un esercitazione