Hier is een heel eenvoudige procedure. Ik zal alleen het hoofdskelet laten zien. Het toevoegen van flash-meat is van jouw kant.
Stel we hebben twee <select>
in ajax.php
zoals dit:
<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>
Dus wat hebben we nodig? We moeten de 2e <select>
. invullen op het moment van zijn selectie.
Hier komt het javascript-gedeelte (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>
Dit stuurt het verzoek naar process.php
Nu komt de process.php
Hier hebben we de gegevens nodig om de 2e <select>
in te vullen
Wat zit er nu in <select>
?
<option value="someValue">someText</option>
Je moet zoiets als dit uitvoeren:
<option value="11">value11</option>
<option value="12">value12</option>
<option value="13">value13</option>
<option value="14">value14</option>
Waarde en de tekst binnenin vullen met uw behoeften.
Zoals het uit de database komt:
- Je kunt de bovenliggende selectiewaarde krijgen in
process.php
met$_GET['parentValue']
- Vraag met die waarde naar de database
- Gebruik vervolgens uit het resultaat dat is geretourneerd uit de database een lus
while
,foreach
offor
(afhankelijk van de manier waarop u het ophaalt), maak de<option value="someValue">someText</option>
. - je bent klaar!
Voor meervoudige selectie
om het leven een beetje makkelijker te maken, kun je gekozen multiselect gebruiken
Een advies
mysql_*
wordt afgeraden. gebruik in plaats daarvan PDO. Hier is een link naar een zelfstudie