|
|
|
| Собственно, как организовать поиск в нескольких таблицах MySQL?
К примеру у меня есть таблицы со статьями, новостями и т.п. Как искать во всех и выводить результаты поиска с пометкой "найдено в разделе Новости", если что-то найдено?? | |
|
|
|
|
|
|
|
для: Clocker
(20.11.2005 в 23:06)
| | Мне кажется, многотабличный запрос здесь не уместен, т.к. не уверен, что есть средства при таком запросе сохранить информацию о месте, где найдено.
То есть можно организовать ряд однотабличных запросов. Вроде:
<?php
$find_it = $_POST['find_it'];
$str = "select * from news";
$res = mysql_query($str);
while ($mas = mysql_fetch_array($res))
{
if (strstr($mas['text'], $find_it))
{
?>
<a href = "
<?php
echo $mas['href'];
?>
"> "Найдено в разделе news, под датой <?php
echo $mas['date'];
?>
Конечно, это подразумевает, что в таблице news есть атрибуты: href (адрес страницы), text(содержимое страницы) и date(дата новости). | |
|
|
|
|
|
|
|
для: ck
(20.11.2005 в 23:29)
| | Ну и можно сделать всю эту историю функцией, принимающей в качестве параметров имя таблицы и имена атрибутов в ней. А затем вызвать ее столько раз, в скольких таблицах нужно провести запрос.
Опять-таки, если очень хочется, можно затем представить список имен таблиц, где нужно искать, в виде массива, в каждый элемент заложить в свою очередь массив с атрибутами, и прогнать все это через описанную функцию.
ps. В первом сообщении забыл в конце указать закрытие:
</a>
<?php
}
}
?> | |
|
|
|
|
|
|
|
для: ck
(20.11.2005 в 23:29)
| | Что бы не сильно нагружать скрипт, лучше искать на уровне базы. Читаем тут: http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=9539&page=1 | |
|
|
|
|
|
|
|
для: Clocker
(20.11.2005 в 23:06)
| | Используется полнотекстовый поиск или при помощи RLIKE? | |
|
|
|
|
|
|
|
для: cheops
(21.11.2005 в 12:52)
| | А как организовать лучше? В принципе можно искать по одному слову. | |
|
|
|
|
|
|
|
|
для: cheops
(22.11.2005 в 01:15)
| | благодарю за ссылки, обязательно посмотрю | |
|
|
|