sql >> Database >  >> RDS >> Mysql

2 invoervakken voor automatisch aanvullen/suggesties met behulp van jQuery of Ajax met tweede vak op basis van eerste selecties met meerdere items

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 of for (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




  1. Recursieve subquery's met sorteren

  2. Dynamische query met variabel aantal IN (p1, p2, p3) argumenten

  3. Vernieuwen van SQL Server-tabellen met minder onderbrekingen met behulp van Partition Switching

  4. Wat is het doel van systeemtabel master..spt_values ​​en wat is de betekenis van de waarden?