Реализовать полноценный поиск по сайту таким способом конечно весьма сложно, но поиск по каталогу продукции и т.п. организовать с помощью запроса SQL весьма несложно.
Итак. Простой запрос для поиска по определенным столбцам будет выглядеть так:
А теперь по пунктам. С оператором SELECT вы уже знаком, если нет, можно почитать здесь. Имя таблицы, из которой производится выборка table. some_field – название поля (столбца) таблицы table. '$query_text’ – текст поискового запроса, который пользователь ввел в форме для поиска. Ну вот, это самый простой пример организации поиска по базе MySQL. Однако, иногда необходимо произвести поиск не по определенному полю, а по всей таблице. Решается такая задача тоже довольно просто. Первым шагом необходимо извлечь названия всех столбцов таблицы table:
а дальше при помощи разбиения запроса $query на массив функцией mysql_fetch_assoc() и цикла while перебираем все столбцы нужной таблицы:
while($tbl=mysql_fetch_assoc($query2))
{
$query2 = mysql_query("SELECT * FROM table WHERE ".$tbl['Field']." LIKE '$query_text'");
/* А здесь уже выводятся результаты поиска по отдельным столбцам */
}
Обратим внимание на элемент массива $tbl[‘Field’] – это и есть название столбца таблицы. Также полезным будет ввести ограничение на тип столбцов, если вы хотите организовать поиск только по тексту. Для этого с помощью оператора if можно поставить условие:
if ($tbl['Type']=='varchar(255)')
{
/*varchar(255) – тип ячейки, в скобках указана длина (lenght) поля varchar*/
/*Производим поиск*/
}
Или так:
if($tbl['Type']=='text')
{
/*Производим поиск*/
}
Или оба варианта одновременно:
if($tbl['Type']=='text' or $tbl['Type']=='text')
{
/*Производим поиск*/
}
Конечно это не все, также можно организовать и поиск по всем таблицам базы данных, для этого понадобится вначале извлечь имена всех таблиц в базе данных.
© 2010-2024 При использовании материалов ссылка на сайт www.webchaynik.ru обязательна