Форум сетевых администраторов
Показаны 8 сообщений на этой странице

Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- MySQL (http://netadmin.ws/forum/forumdisplay.php?forumid=40)
-- Поиск в найденом (http://netadmin.ws/forum/showthread.php?threadid=7910)


Помещено Warlock 20-02-2004 в 18:29:

Unhappy Поиск в найденом

Помогите пожалуйста, у меня есть следущая задача: я по таблице делаю поиск, и результат вывожу на html страницу, затем мне надо сделать поиск в найденом, это у меня как раз и не получается, причем после поиска в найденом должна быть возможность еще раз искать в найденом и так до тех пор пока не найдешь, то, что надо, т.е. элементарная поисковая система.
К MySQL серверу обращаюсь по средствам PHP.

__________________
Warlock


Помещено polo 20-02-2004 в 18:37:

для каждого поиска используй новый запрос, можно использовать два варианта:
1. Сохранять ID найденного а потом использовать WHERE IN(...)
2. Манипулировать операторами.

Первый способ мне нравится больше.

__________________
Всегда есть решение.


Помещено Warlock 21-02-2004 в 07:46:

quote:
Первоначальное сообщение от polo
для каждого поиска используй новый запрос, можно использовать два варианта:
1. Сохранять ID найденного а потом использовать WHERE IN(...)
2. Манипулировать операторами.

Первый способ мне нравится больше.



Т.е. если запрос выполняется $result = mysql_query($query);
далее мы делаем запрос WHERE IN $result Sname LIKE '$keyword'
я правильно понял?

__________________
Warlock


Помещено polo 21-02-2004 в 12:07:

По твоим словам не понятно понял ты или нет но объясню по подробнее:
1. Делаем первый поиск например по словам 'Mysql'.
SELECT * FROM tbl_name WHERE field_text LIKE 'Mysql'
Допустим было найдено 5 результатов, каждая запись имеет уникальное поле ID. Допустим найденные ID: 10, 12, 16, 25, 89.
Сохраняем эти ID в массиве:
$search_results_ids = array(10, 12, 16, 25, 89); //это так для примера, в реальном случае эти ID будут заносится в массив при обработке результатов.
На странице с результатами в форме поиска делаем скрытое поле
<input type='hidden' name='search_results_ids' value='<php echo serialize($search_results_ids) ?>'>
Выполняем второй поиск например по словам database:
SELECT * FROM tbl_name WHERE id IN(" . explode(',' unserialize($_POST[search_results_ids])) . ") AND field_text LIKE 'database'
Все легко и доступно.

__________________
Всегда есть решение.


Помещено Warlock 21-02-2004 в 19:03:

Спасибо за ответ. я попробую.

__________________
Warlock


Помещено ANDRY 21-02-2004 в 20:06:

polo, круто, сам учюсь, на заметку запомню, ещё раз спасибо

__________________
Web-Zona


Помещено Warlock 24-02-2004 в 19:53:

quote:
Первоначальное сообщение от polo
По твоим словам не понятно понял ты или нет но объясню по подробнее:
1. Делаем первый поиск например по словам 'Mysql'.
SELECT * FROM tbl_name WHERE field_text LIKE 'Mysql'
Допустим было найдено 5 результатов, каждая запись имеет уникальное поле ID. Допустим найденные ID: 10, 12, 16, 25, 89.
Сохраняем эти ID в массиве:
$search_results_ids = array(10, 12, 16, 25, 89); //это так для примера, в реальном случае эти ID будут заносится в массив при обработке результатов.
На странице с результатами в форме поиска делаем скрытое поле
<input type='hidden' name='search_results_ids' value='<php echo serialize($search_results_ids) ?>'>
Выполняем второй поиск например по словам database:
SELECT * FROM tbl_name WHERE id IN(" . explode(',' unserialize($_POST[search_results_ids])) . ") AND field_text LIKE 'database'
Все легко и доступно.



Но такой способ не совсем преемлем если результатом первого запроса является несколько тысяч записей, подобная передача данных сильно раздует html документ, а что если в качестве параметров передавать слова которые использовались в запросах к примеру стопт|питание, потом это разбивать explode и выполнять два запроса первый из которых будет искать ID записей по первому слову, а второй уже будет выполнять поиск по второму слову и ID полученным по первому запросу. Я полагаю это сократит время загрузки страницы.

__________________
Warlock


Помещено polo 25-02-2004 в 13:43:

Ну можно и так, это уже тестировать и смотреть что быстрее будет.
P.S. Оверквотинг не приветсвуется на форуме.

__________________
Всегда есть решение.


Формат времени GMT. Текущее время 09:39.
Показаны 8 сообщений на этой странице

Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.