 |
 |
Форум сетевых администраторов » Базы данных » MySQL » Поиск в найденом
| Автор |
| Тема |
 |
|
 |
|
|
|
Участник
Зарегистрирован: Feb 2004
Место проживания:
Публикаций: 4
Статус:  |
Помогите пожалуйста, у меня есть следущая задача: я по таблице делаю поиск, и результат вывожу на html страницу, затем мне надо сделать поиск в найденом, это у меня как раз и не получается, причем после поиска в найденом должна быть возможность еще раз искать в найденом и так до тех пор пока не найдешь, то, что надо, т.е. элементарная поисковая система.
К MySQL серверу обращаюсь по средствам PHP. 
__________________
Warlock
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
20-02-2004 18:29 |
|
|


Администратор
|
| для каждого поиска используй новый запрос,... |
[сооб. #61347]
20-02-2004 18:37 |
|
Администратор


Зарегистрирован: May 2001
Место проживания:
Публикаций: 4642
Статус:  |
для каждого поиска используй новый запрос, можно использовать два варианта:
1. Сохранять ID найденного а потом использовать WHERE IN(...)
2. Манипулировать операторами.
Первый способ мне нравится больше.
__________________
Всегда есть решение.
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
20-02-2004 18:37 |
|
|
Участник
|
[QUOTE]Первоначальное сообщение от polo
[B]для... |
[сооб. #61370]
21-02-2004 07:46 |
|
Участник
Зарегистрирован: Feb 2004
Место проживания:
Публикаций: 4
Статус:  |
quote: Первоначальное сообщение от polo
для каждого поиска используй новый запрос, можно использовать два варианта:
1. Сохранять ID найденного а потом использовать WHERE IN(...)
2. Манипулировать операторами.
Первый способ мне нравится больше.
Т.е. если запрос выполняется $result = mysql_query($query);
далее мы делаем запрос WHERE IN $result Sname LIKE '$keyword'
я правильно понял?
__________________
Warlock
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
21-02-2004 07:46 |
|
|
Администратор
|
| По твоим словам не понятно понял ты или нет... |
[сооб. #61392]
21-02-2004 12:07 |
|
Администратор


Зарегистрирован: May 2001
Место проживания:
Публикаций: 4642
Статус:  |
По твоим словам не понятно понял ты или нет но объясню по подробнее:
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'
Все легко и доступно.
__________________
Всегда есть решение.
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
21-02-2004 12:07 |
|
|
Участник
|
| Спасибо за ответ. я попробую. |
[сооб. #61413]
21-02-2004 19:03 |
|
|
Участник+
|
| polo, круто, сам учюсь, на заметку запомню,... |
[сооб. #61417]
21-02-2004 20:06 |
|
Участник+


Зарегистрирован: May 2002
Место проживания: Новокузнецк
Публикаций: 223
Статус:  |
polo, круто, сам учюсь, на заметку запомню, ещё раз спасибо
__________________
**censored**
Сообщение было отредактировано ANDRY 21-02-2004 в 20:09
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
21-02-2004 20:06 |
|
|
Участник
|
[QUOTE]Первоначальное сообщение от polo
[B]По... |
[сооб. #61580]
24-02-2004 19:53 |
|
Участник
Зарегистрирован: Feb 2004
Место проживания:
Публикаций: 4
Статус:  |
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
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
24-02-2004 19:53 |
|
|
Администратор
|
| Ну можно и так, это уже тестировать и смотреть... |
[сооб. #61621]
25-02-2004 13:43 |
|
Администратор


Зарегистрирован: May 2001
Место проживания:
Публикаций: 4642
Статус:  |
Ну можно и так, это уже тестировать и смотреть что быстрее будет.
P.S. Оверквотинг не приветсвуется на форуме.
__________________
Всегда есть решение.
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
25-02-2004 13:43 |
|
|
|
Формат времени GMT. Текущее время 06:43.
|
Правила форума:
Вы не можете создавать новые темы.
Вы не можете отвечать на существующие темы.
Вы не можете прикреплять файлы.
Вы не можете редактировать свои сообщения. |
HTML теги выкл.
Спец. код вкл.
Смайлики вкл.
[IMG] тег выкл.
|
|
|
|
| |
Page generated in 0.01662588 seconds (59.85% PHP - 40.15% MySQL) with 26 queries.
|
 |