sql >> Databasteknik >  >> RDS >> Mysql

Jquery autocomplete och PHP:fyller i inmatningsfält med data från mySQL-databas baserat på valt alternativ i autocomplete-fältet

Jag har byggt exakt denna funktion till en app till mig. Det finns ett extra lager av komplexitet här, i det att det finns två förortssökningar (hem- och arbetsadresser), var och en fyller i matchande delstats- och postnummerfält. Back-end är perl snarare än PHP, men det är inte relevant för hanteringen på klientsidan. I slutändan returnerar back-end en JSON-struktur med en uppsättning hash så här:

[ { "id":"...", "value":"...", "state":"...", "pcode":"..." }, ... ]

ID-nyckeln innehåller förortsnamnet och värdenyckeln innehåller strängar som "JOLIET IL 60403", så den korrekta uppsättningen data väljs en gång, vilket löser problemet med flera städer/förorter med samma namn på olika platser, och ringer tillbaka för att lösa det.

När de har valts injiceras värdena för förort (id), tillstånd och pcode i de matchande parametrarna.

Följande kod cachar också tidigare resultat (och cachen delas mellan hem- och arbetsuppslagningarna).

$('#hm_suburb').addClass('suburb_search').attr(
         {suburb: '#hm_suburb', pcode: '#hm_pcode', state: '#hm_state'});
$('#wk_suburb').addClass('suburb_search').attr(
         {suburb: '#wk_suburb', pcode: '#wk_pcode', state: '#wk_state'});
var sub_cache = {};
$(".suburb_search").autocomplete({
    source: function(request, response) {
        if (request.term in sub_cache) {
                response($.map(sub_cache[request.term], function(item) {
                    return { value: item.value, id: item.id,
                             state: item.state, pcode: item.pcode }
                }))
            return;
        }
        $.ajax({
            url: suburb_url,
            data: "term=" + request.term,
            dataType: "json",
            type: "GET",
            contentType: "application/json; charset=utf-8",
            dataFilter: function(data) { return data; },
            success: function(data) {
                sub_cache[request.term] = data;
                response($.map(data, function(item) {
                    return {
                        value: item.value,
                        id: item.id,
                        state: item.state,
                        pcode: item.pcode
                    }
                }))
            } //,
            //error: HandleAjaxError  // custom method
        });
    },
    minLength: 3,
    select: function(event, ui) {
        if (ui.item) {
            $this = $(this);
            //alert("this suburb field = " + $this.attr('suburb'));
            $($this.attr('suburb')).val(ui.item.id);
            $($this.attr('pcode')).val(ui.item.pcode);
            $($this.attr('state')).val(ui.item.state);
            event.preventDefault();
        }
    }
});


  1. SQL:Hur man väljer en post per dag, förutsatt att varje dag innehåller mer än 1 värde MySQL

  2. PDO PHP infoga i DB från en associativ array

  3. Generera en slumpmässig och unik sträng med 8 tecken med MySQL

  4. Hur ställer jag in det valda objektet i en rullgardinsmeny