Показать сообщение отдельно
  #1 (permalink)  
Старый 24.09.2013, 13:52
Интересующийся
Отправить личное сообщение для dimi007 Посмотреть профиль Найти все сообщения от dimi007
 
Регистрация: 10.05.2011
Сообщений: 11

Живой поиск JQUERY + AJAX + PHP + MYSQL
Друзья, подскажите пожалуйста, как сделать живой поиск:
технологии - 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 он будет мне писать что нет результатов....и это отстой! Помогите плиз...может кто знает как сие задачу решить...

Кстати если решение найдем - не плохой пост будет...
Ответить с цитированием