2013-08-13 3 views
-2

Пожалуйста, помогите мне ... Я новичок! Скажите, пожалуйста, что делать.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

+0

Вы можете увидеть некоторые примеры с удаленной загрузки здесь, http://jqueryui.com/autocomplete/#remote – lsouza

+0

@Hisamu Я искал Интернет, но я не нашел ничего полезного! Например, веб-сайт, на котором вы ссылались, не имеет php-файла – Daniyal

+0

, потому что ваш запрос sql ищет все. вы должны иметь что-то подобное в своем заявлении sql 'LIKE '%". mysql_real_escape_string ($ _ GET [' search-term ']). "%'" ' –

ответ

2

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

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

Строка: Когда строка используется, плагин автозаполнения ожидает, что строка, чтобы указать на URL ресурса, который будет возвращать данные в формате JSON. Он может находиться на том же хосте или на другом (должен предоставить JSONP). Плагин Autocomplete не фильтрует результаты, вместо строки запроса добавляется строка с полем термина, для которого серверный сценарий должен использовать для фильтрации результатов. Например, если параметр источника установлен на «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); 
+0

Я не знаю как поблагодарить вас! Я потратил целый день на это. – Daniyal

2

Эта функция автозаполнения, вероятно, проходящее несколько переменных на страницу processed.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() исключительно может, что у вас уже есть. В то время как это работает (вождение вокруг busted-ass chevy pacer работает тоже, но есть намного лучшие способы), его не рекомендуется, что задает нам для пункта 2.

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

  3. вам нужно будет избежать ваших данных, this is how its done with mysqli.

+0

Спасибо за ответ. Я в замешательстве! – Daniyal

Смежные вопросы