Есть некий начальный список запросов, которые пользователи однозначно будут запрашивать на сайте. Допустим это список городов. Как реализовать поисковые подсказки на основе этого списка?
Пока план таков: смотрим, что уже введено в поисковую форму, сравниваем с заданным списком, выводим в подсказку найденные совпадения. Или можно проще?
<input type=text name=pole onChange="chk()">
function chk()
{
тут запрос ajax'ом на сервер с параметром pole.value, я в этом не силен.
обратно приходит JSON массив который отображается всплывающим списком
}
на сервере
Код:
$p=$_GET["p"]; //вообще то фильтрация кавычек и прочей дряни
$r=mysql_query("SELECT * FROM table WHERE query LIKE '%$p%'");
$a=array();
while ($row=mysql_fetch_assoc($r))
{
$a[]=$row[query];
}
$a=json_encode($a);
echo $a;
Если использовать typeahead.js, то php не понадобится. Достаточно воспользоваться примером со страницы _http://twitter.github.io/typeahead.js/examples/ . ТС, смотрите первый пример, просто добавьте его перед закрывающимся тегом </body> обрамив тегом <script>. Там Вам понадобится файл countries.json. Взять его можно тут _http://twitter.github.io/typeahead.js/data/countries.json. В примере поменять расположение файла на своё.
Теперь вопрос. На примере тех-же городов. Известно, что пользователь будет вводить только названия городов, при том с опечатками, синонимами и "старыми" названиями городов (весь этот список заранее известен).
При этом в поисковой подсказке должно отображаться корректное название города и ссылка на определенную страницу. Далее пользователь либо кликает по предложенной ссылке, либо продолжает вводить то, что вводил. При этом по окончании ввода и нажатии кнопки "поиск" пользователь должен перейти на определенную страницу (в примере на страницу Санкт-Петербурга). Как это реализовать?
В принципе не сложно сформировать json с прописанными в нем синонимами и словоформами городов. А вот как при этом реализовать переход на страницу?
Да, по сути это уже не поисковая форма, а элемент удобной навигации. (Не городить длинный список городов в столбик, а оформить в виде окна с вводом текста, показом подсказок на основе введенного текста и переход на страницу).
Да, может я и пытаюсь изобрести велосипед. Но мне нужен этот функционал с минимальными трудозатратами. У самого не получается, прошу вашей помощи...
Последний раз редактировалось hronny; 18.11.2013 в 16:22.