Друзья, подскажите пожалуйста, как сделать живой поиск:
технологии - PHP + MYSQL + JQUERY + AJAX
На странице должен быть INPUT
При вбивании в INPUT текста по средствам AJAX обращаемся к обработчику search.php в котором есть запрос к БД и возвращает результат в div
Хочу собрать поиск по играм
Если кто читал какие-нибудь статьи, поделитесь опытом
Сразу скажу...в PHP и MYSQL я начинающий...поэтому вот как то так...
Сразу приведу пример который я попытался интегрировать для решения своей задачи но в нем есть минусы которые я не смог решить, может потому что где-то что-то не указал...
Итак погнали
Для начала напишу html код моей поисковой формы:
<div style="background:#ccc; padding:15px;">
<form action="search.php" method="post" name="form" onsubmit="return false;">
<input type='text' name='search' value='' id="search"><br />
<input type='submit' value='Найти' />
</form>
</div>
Далее я вставляю под формой DIV с id="resSearch" в который должны выводиться результаты поиска:
<div id="resSearch">Начните вводить запрос</div>
на этом с HTML работа закончена.
Идем дальше JAVASCRIPT
подключаю Jquery:
<script src="http://ajaxs.ru/demo/ajax/liveSearch/js/jquery-1.5.1.min.js" type="text/javascript"></script>
Делаю посредством Jquery AJAX запрос:
<script type="text/javascript">
$(function(){
$("#search").keyup(function(){
var search = $("#search").val();
$.ajax({
type: "POST",
url: "search.php",
data: {"search": search},
cache: false,
success: function(response){
$("#resSearch").html(response);
}
});
return false;
});
});
</script>
И остается только создать обработчик search.php к которому мы обращаемся средствами нашего AJAX запроса:
<?php
header("Content-type: text/html; charset=windows-1251");
$search = $_POST['search'];
$search = addslashes($search);
$search = htmlspecialchars($search);
$search = stripslashes($search);
if($search == ''){
exit("Начните вводить запрос");
}
$db = mysql_connect("host","user","password");
mysql_select_db("data_base_name",$db);
mysql_query("SET NAMES UTF-8");
$query = mysql_query("SELECT * FROM sb_plugins_1 WHERE MATCH(p_title) AGAINST('$search')",$db);
if(mysql_num_rows($query) > 0){
$sql = mysql_fetch_array($query);
do{
echo "<div>".$sql['p_title']."</div>";
}while($sql = mysql_fetch_array($query));
}else{
echo "Нет результатов";
}
?>
Сначала когда только подкрепил не работало вообще! Потом вычитал что для поле по которому выполняю поиск доkжен быть тип FULLTEXT - установил! И все равно ищет не так как я хочу.
Должен начинать вбивать название и должно выводить возможные варианты. Например есть названия HALF-LIFE, DEADPOOL, DOOM. Должно быть если я вбиваю dead то он должен сразу мне выкинуть только DEADPOOL в див с id="resSearch". Однако у меня работает совсем иначе - пока я полностью не вобью deadpool он будет мне писать что нет результатов....и это отстой! Помогите плиз...может кто знает как сие задачу решить...
Кстати если решение найдем - не плохой пост будет...