autocomplete показывает все записи, не делает никакого поиска

Пожалуйста, помогите … Я новичок! Скажите, пожалуйста, что делать.

processed.php

<?php include_once('../../dbConnect.inc.php'); $sql="SELECT name FROM artist"; $artist = select($sql); disconnect(); $output_items = array(); while($row = mysql_fetch_array($artist)) { $results[] = array('label' => $row['name']); } echo json_encode($results); ?> 

index.php

 <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/smoothness/jquery-ui.css" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("#artist").autocomplete( { source: 'processed.php', }); }); </script> 

У меня есть эта проблема: http://jsbin.com/alaci5

Related of "autocomplete показывает все записи, не делает никакого поиска"

Autocomplete ожидает источник (когда URL-адрес указан, чтобы отфильтровать результаты).

Из документации:

Строка: когда используется строка, плагин Autocomplete ожидает, что эта строка укажет на ресурс URL, который будет возвращать данные JSON. Он может находиться на одном и том же хосте или на другом (должен предоставить JSONP). Плагин Autocomplete не фильтрует результаты, вместо строки запроса добавляется поле term, которое серверный сценарий должен использовать для фильтрации результатов. Например, если для параметра источника выбрано значение « http://example.com », а пользователь вводит foo, запрос GET будет сделан на http://example.com?term=foo . Сами данные могут быть в том же формате, что и локальные данные, описанные выше.

Итак, в вашем PHP-коде вам нужно сделать:

 include_once('../../dbConnect.inc.php'); $sql="SELECT name FROM artist WHERE `name` like '%".mysql_real_escape_string($_GET['term'])."%'"; $artist = select($sql); $output_items = array(); while($row = mysql_fetch_array($artist)) { $results[] = array('label' => $row['name']); } echo json_encode($results); 

Эта функция автозаполнения, вероятно, передает несколько переменных на вашу страницу обработанных.php.

Используйте var_dump($_GET) чтобы просмотреть все, что вы передаете.

Внутри одного из этих элементов $_GET вас будет содержимое текстового поля, как оно есть на странице. Для демонстрации я собираюсь использовать $_GET['text'] . Вам нужно будет выяснить, какая часть содержит данные, которые вам нужны.

Вам нужно будет выполнить поиск в базе данных, используя это значение для списка возвращаемых результатов.

 $sql="SELECT name FROM artist"; $artist = select($sql); 

Это ваш скрипт, поскольку он существует. То, что это может выглядеть похоже на это.

 $text_input = mysql_escape_string($_GET['text']); $sql="SELECT name FROM artists WHERE name LIKE '%$text_input%'"; $artist = select($sql); 

Вы хотите получить результаты, похожие на введенный текст на странице, обращенной к пользователю.

Несколько заметок для вас

  1. Я использовал mysql_escape_string() исключительно для того, что вы уже имеете. В то время как это работает (вождение вокруг переполненного побратиста также работает, но есть намного лучшие способы, хотя), его не рекомендуется, что подводит нас к пункту 2.

  2. Использование старого расширения mysql на самом деле не очень хорошая идея, его заменили mysqli и PDO .

  3. вам нужно будет избежать ваших данных, вот как это делается с mysqli .