Mysql
 sql >> Database >  >> RDS >> Mysql

2 Caselle di immissione di completamento automatico/suggerimento utilizzando jQuery o Ajax con la seconda casella in base alle prime selezioni con più elementi

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