JQuery UI автозаполнение с базой данных MySQL - PullRequest
0 голосов
/ 16 января 2012

Я борюсь с автозаполнением jQuery целый день.Я не могу понять, как подключить JQuery UI автозаполнения с базой данных MySQL.Я не знаю, как должен выглядеть php-файл, как запрос отправляется на php и т. Д. В демонстрациях и документации на сайте jQuery есть простой пример с удаленным источником данных, где source: source: "search.php".Так как search.php знает, что я набрал в поле ввода?к search.php не добавлено ни одного запроса: / Я заметил, что используется json. Я запутался и перепробовал дюжину методов без результатов.Что мне нужно, так это простое автозаполнение с названием городов, которое содержит текст, который я ввел в текстовое поле.

Моя БД выглядит так:

table_cities:
-------------
id:   -city id
name: -city name

И мне нужно автозаполнение, чтобы показать мне города, содержащиетекст, который я ввел в текстовое поле, например

"po" приведет к "liverpool" "Portsmouth" ...

html
----
<input type="text" id="cities" />

js
--
$( "#cities" ).autocomplete({
...

Спасибо!

Ответы [ 3 ]

2 голосов
/ 16 января 2012

Вам просто нужно вернуть JSON-кодированный массив объектов id / value. Плагин автозаполнения также передает параметр get с именем «q», который содержит то, что в данный момент находится в поле ввода. Простой пример файла search.php, который будет работать:

$autocomplete_value = mysql_real_escape_string($_GET["q"]);
$sql = "select id, name from table_cities where name LIKE '%$autocomplete_value%'";
$query = mysql_query($sql);

$results = array();
while ($row = mysql_fetch_array($query, MYSQL_ASSOC)) {
    array_push($results, array('id' => $row['id'], 
                               'value' => $row['name']) );
}
echo json_encode($results);

Вам нужно будет адаптировать это к любой PHP-среде, которую вы можете использовать, но шаблон должен быть таким же - цикл по результатам создает массив объектов 'id' и 'value', а затем кодирует его в json.

Редактировать: вам может потребоваться обновить SQL, чтобы выполнять сравнение в нижнем регистре (чтобы заглавные буквы игнорировались) и другие подобные улучшения, но это должно по крайней мере заставить вас двигаться в правильном направлении.

0 голосов
/ 31 марта 2019

Вы можете использовать ". =" В цикле while.

$data = "";
while($row = mysqli_fetch_assoc($result))
{
$data .= "bla bla bla..."
}
0 голосов
/ 16 января 2012

Я не использовал автозаполнение jQuery, но кажется очевидным, что он вызывает AJAX-вызов на ваш веб-сервер, предоставляя данные, которые уже были введены в поле. Веб-сервер будет запрашивать базу данных по своему усмотрению и возвращать результаты, которые должны быть отображены.

Запрос не будет частью плагина jQuery; Вы должны написать это сами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...