Простой поиск по сайту
Пятница, 27 августа 2010 г.Рубрика: PHP программирование -> MySQL -> Готовые решения
Метки: php | простой поиск по сайту
Просмотров: 2310
Подписаться на комментарии по RSS
Допустим у Вас есть сайт и имеется База Данных, тогда текст, в котором будет искать пользователь должен храниться в Базе Данных, если всё так, то читайте дальше.
На большинстве сайтов имеются поиски по сайту, но есть те, кто не знают как организовать поиск, да ещё и с малыми знаниями в php и mysql, ведь чтобы создать нормальный поиск, нужно не мало времени. Но в интернете полно подходящих скриптов, можно было бы взять один из них, но не все предпочитают не понятные скрипты, написанные не понятно как, и не понятно кем. Тогда им нужно создать свой, простой, удобный, и легко настраиваемый поиск по сайту. Именно такой поиск мы и рассмотрим с Вами в этом уроке.
Представим у нас есть сайт,
На котором выложены статьи,
И эти статьи находятся в Базе Данных,
И у нас будет отдельный файл с поиском(так проще для понимания), тогда:
Создаём файл search.php
<form action="scr_search.php" method="post"> <tt> Поиск<br /> <input type="text" name="search" value="что искать?" onclick="search.value='';"/><br /><br /> <input type="submit" name="submit" value="искать"/> </tt> </form>
У нас будет форма с обработчиком scr_search.php, в форме есть текстовое поле, изначально в котором есть строка "что искать?", и при нажатии на поле строка исчезает.
Теперь займёмся обработчиком, у нас уже подготовлен небольшой скрипт с описанием:
файл scr_search.php
<?php
/**
* Подключаемся к базе
*/
$db=mysql_connect("localhost", "root", "");
mysql_select_db("mybase", $db);
/**
* Обрабатываем полученные данные из формы
*/
if(isset($_POST["search"])and($_POST["search"]!=='')){
$search=$_POST["search"];
$search=trim($search);
$search=htmlspecialchars($search);
$search=stripslashes($search);
if(strlen($search)>=4){
/**
* Вытаскиваем из базы всё по этому запросу
*/
$result=mysql_query("SELECT * FROM articles WHERE MATCH (text) AGAINST ($search)");
$myrow=mysql_fetch_array($result);
/**
* Если что-то есть, то выводим
*/
if(!empty($myrow["id"])){
echo $myrow["title"]."<br />".$myrow["description"]."<br /><br />";
}else{
die("По Вашему запросу ни чего не найдено");
}
}else{
die("Длина текста должна быть не менее четырёх символов");
}
}else{
die("Вы не ввели данные для поиска");
}
Сразу же поясним при помощи чего искали:
Мы Вытаскивали из базы все данные о статьях где MATCH(в тексте) AGAINST(встречается наша строка).
И для того чтобы это работало, надо в Базе Данных поставить полный текст в том поле, где Вы собираетесь искать, для этого нажмите на букву Т рядом с описанием поля.
Этот приём очень слабый, и поэтому требует вводить слова не меньше 4-х символов, поэтому сделаем пояснение на странице с поиском:
<tt> Вводимый текст не должен быть меньше 4-х символов<br /><br /> <form action="scr_search.php" method="post"> Поиск<br /> <input type="text" name="search" value="что искать?" onclick="search.value='';"/><br /><br /> <input type="submit" name="submit" value="искать"/> </form> </tt>


php лишний раз доказывает свою полезность простотой решения важный и полезных задач
А можно ли его, как-то настроить, чтобы он мог находить слова из менее 4-х символов
К сожалению нет, но мы вскоре напишем урок по созданию своего поиска, который сможет работать с поисковыми запросами длиной от 1 символа.
А почему нельзя -- ведь всего то if(strlen($search)>=4) --- меняем на нужное !!
Ромка
Не всё так просто... Это особенность функций MATCH и AGAINST.
Так что не менее 4-х символов...