Подсказки при вводе данных

CyberX
На сайте с 08.03.2008
Offline
51
6369

Сначала хочу всех поздравить с наступившими праздниками. А теперь вопрос...

Хочу чтобы при вводе имени или телефона в поле высвечивалась подсказка...

Например я уже ввел "Ма"

А скрипт делает запрос в базу и высвечивает мне что есть уже

МАша

МАксим

МАкар

Я продолжаю писать свое имя и пишу еще "Мак"

Тут система должна убрать

МАша

и оставить только

МАксим

МАкар

В общем что-то вроде яндексовой подсказке при вводе запроса.

Может быть кто-то видел или имеет в своем хозяйстве где готовое решение. Буду оч. признателен.

Шустрый хостинг (http://www.colocat.ru) за нормальные деньги (Москва). 30 дней тестовый период. Рекомендую копирайтера aronskaya (/ru/users/73753). Отличные авторские тексты.
Buble-Gum
На сайте с 03.07.2008
Offline
53
#1

а может: красткость - сестра таланта? к чему нагромождения? Или вы свою ПС открыватете? :)

подпись... была...
CyberX
На сайте с 08.03.2008
Offline
51
#2

Buble-Gum, сам не хотел нагромождений, но количество записей стало настолько огромным (более 2х миллионов) что при поиске появилась серьёзная задержка по времени в выборе нужного результата (в основном из-за ошибочного введения данных в поиск). (у молодежи плохо с правописанием). В общем нужны подсказки. Без них не вижу простого выхода.

bukachuk
На сайте с 07.09.2008
Offline
97
#3

У Jquery есть плагин autocomplete, посмотрите у них в репе

http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/

Программирование PHP,Mysql (/ru/forum/934470)
WL
На сайте с 26.08.2008
Offline
12
#4

ТС, используйте для поля "onchange" и пишите свою js функцию обработки изменения поля. Или же воспользуйтесь предложенным плагином для jquery.

wwwlab.biz (http://wwwlab.biz) - он-лайн биллинг для разработки ПО. Закажи разработку сайта сегодня!
H
На сайте с 11.09.2008
Offline
26
#5
Buble-Gum, сам не хотел нагромождений, но количество записей стало настолько огромным (более 2х миллионов) что при поиске появилась серьёзная задержка по времени в выборе нужного результата (в основном из-за ошибочного введения данных в поиск). (у молодежи плохо с правописанием). В общем нужны подсказки. Без них не вижу простого выхода.

в таком случае вам надо сделать индекс по именам в виде xml файлов, чтобы не тревожить БД по пустякам и в процессе вврда юзером имени подгружать нужный фаил js, парсить и предлогать юзеру нужный вариант(ы).

подсказки можно выводить аналогичным этому образом

Ceterum censeo Carthaginem esse delendam
[Удален]
#6
Hutch:
в таком случае вам надо сделать индекс по именам в виде xml файлов

ЛУчше уж индекс по нумеричному (цифровому) хэшу имени. А то по строковым полям индекс не особо ускоряет поиск. Приводите всё в нормальную форму (без приставок, суффиксов, окончаний..) и храните хэш этой формы.

peterpro
На сайте с 14.11.2007
Offline
35
#7

Вот пример:

http://demo.script.aculo.us/ajax/autocompleter

Вот документация:

http://demo.script.aculo.us/ajax/autocompleter

Ессесно, это требует установленных prototype.js и scriptaculous.js (качать здесь: http://script.aculo.us/downloads)

CyberX
На сайте с 08.03.2008
Offline
51
#8

Все выше предложенные варианты не работают с базой а используют файлики с словами-подсказками. Такой вариант мне не подходит. Нужно чтобы работало именно с базой. Тоесть запрашивала базу каждый раз на конкретный ввод данных.

Может есть у кого мысли какие как это выполнить ?

CyberX добавил 09.01.2009 в 01:20

Вот нашел небольшой пример того что нужно, работает с базой. Но есть проблема, не хочет выдавать подсказки на русском языке. Подскажите что может быть.

=== server.php ===

<?php

$host = "localhost";
$database = "******";
$user = "******";
$password = "******";

mysql_connect($host,$user,$password);
mysql_select_db($database);

$sql = "SELECT title FROM autocomplete_demo WHERE title LIKE '%" . $_POST['search'] . "%'";
$rs = mysql_query($sql);

?>

<ul>

<? while($data = mysql_fetch_assoc($rs)) { ?>
<li><? echo stripslashes($data['title']);?></li>
<? } ?>

</ul>

=== index.php ===

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=cp1251"/>

<title>Autocomplete demonstration</title>

<script type="text/javascript" src="javascripts/prototype.js"></script>
<script type="text/javascript" src="javascripts/effects.js"></script>
<script type="text/javascript" src="javascripts/controls.js"></script>

<style>
body {font-family: verdana; arial, sans-serif; font-size: 12px; }
#search, ul { padding: 3px; width: 150px; border: 1px solid #999; font-family: verdana; arial, sans-serif; font-size: 12px;}
ul { list-style-type: none; font-family: verdana; arial, sans-serif; font-size: 12px; margin: 5px 0 0 0}
li { margin: 0 0 5px 0; cursor: default; color: red;}
li:hover { background: #ffc; }
</style>


</head>

<body>
<div>
<label>Type here</label> <input type="text" id="search" name="search" />
</div>
<div id="hint"></div>
<script type="text/javascript">
new Ajax.Autocompleter("search","hint","server.php");
</script>
</body>
</html>

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий