Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Autouzupełnianie Jquery i PHP:wypełnianie pola wejściowego danymi z bazy danych mySQL na podstawie wybranej opcji w polu autouzupełniania

Zbudowałem dokładnie tę funkcję w mojej aplikacji. Istnieje dodatkowa warstwa złożoności, ponieważ istnieją dwa wyszukiwania podmiejskie (adres domowy i służbowy), z których każde wypełnia pasujące pola stanu i kodu pocztowego. Back-end to raczej perl niż PHP, ale nie ma to znaczenia dla obsługi po stronie klienta. Ostatecznie back-end zwraca strukturę JSON z tablicą skrótów w ten sposób:

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

Klucz identyfikatora zawiera nazwę przedmieścia, a klucz wartości zawiera ciągi takie jak „JOLIET IL 60403”, więc poprawny zestaw danych jest wybieranych raz, rozwiązując problem wielu miast / przedmieść o tej samej nazwie w różnych miejscach i wykonując oddzwonienia, aby rozwiązać ten problem.

Po wybraniu wartości przedmieścia (id), stanu i pcode są wstrzykiwane do pasujących parametrów.

Poniższy kod przechowuje również w pamięci podręcznej poprzednie wyniki (a pamięć podręczna jest współdzielona między wyszukiwaniem domowym i roboczym).

$('#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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uzyskaj wyniki z MySQL za pomocą PDO

  2. Tabele MyISAM i InnoDB w jednej bazie danych

  3. PHP nie może rozwiązać nazwy kontenera mysql w pewnych okolicznościach

  4. php:SQLSTATE[HY000] [2002] Nie można nawiązać połączenia, ponieważ maszyna docelowa aktywnie je odrzuciła

  5. Nieprawidłowe wyrażenie ścieżki. Musi być StateFieldPathExpression