[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: "бантики" к скрипту Поиска по БД
Хиросим
Здравствуйте!
Братцы, помогите начинающему.
1. Очень понравилось как работает скрипт поиска на всемизвестном озоне, там в процессе набора запроса высыпаются в выпадающем окне варианты окончания запрашиваемой фразы исходя из уже введенных букв. В яндексе нечто похожее, (но почему то в фаерфоксе не работает). Так вот прошу подсказать какими командами организуется подобное действо, может примеры какие или ссылочки. Если уже была тема, извиняюсь, поискал не нашел...
2. Еще вопрос по теме организации того же поиска.
не могу сообразить, если вводимый в поле формы поисковый запрос состоит из нескольких слов через пробел, как разбить такую текстовую переменную на несколько, чтобы организовать поиск по каждому слову отдельно?
Поясню, что поиск хочу организовать по базе MySQL, сам скрипт нашел, подредактировал, все работает, вот хотелось бы обвесить бантиками полезными.
заранвсемспасиб!!!



Спустя 3 минуты, 10 секунд (10.03.2010 - 04:32) Хиросим написал(а):
Ой, забыл самое главное то по первому пункту - конечно же предполагается, что "вываливающиеся" в списке варианты поискового запроса должны быть из выбранных мной полей базы данных.

Спустя 4 часа, 28 минут, 53 секунды (10.03.2010 - 09:01) sergeiss написал(а):
1. AJAX - технология. Позволяет подгружать данные на страницу без перезагрузки всей страницы.
2. explode() - функция ПХП, разбивает строку на элементы, используя в качестве разделителя любой символ, указанный программером.

Спустя 1 час, 1 минута, 50 секунд (10.03.2010 - 10:03) Nikitian написал(а):
jQuery-плагин автокомплит + обработка того, что он вам будет слать.
Делали такое. Правда делали не для поиска как такового, а для выбора города, т.е. выборка по бд была простая: select name from citys where name like "$typed%"

Спустя 7 часов, 27 минут, 12 секунд (10.03.2010 - 17:30) Хиросим написал(а):
Спасибо, буду разбираться.

Но еще один бантик не могу прорюхать - бывший торент ру нынешний рутрекер орг, в поле поиска фраза "поиск..." по умолчанию, тут проблем нет - параметр value и все ок, но при клике в это поле фраза исчезает, вот тут интелект подводит... поможите.

Спустя 1 час, 44 минуты, 36 секунд (10.03.2010 - 19:15) Nikitian написал(а):

<input type="text" onblur="this.value=(this.value==''?'слово':this.value)" onfocus="this.value=(this.value=='слово'?'':this.value)" value="слово" />

Спустя 1 день, 18 часов, 27 минут, 58 секунд (12.03.2010 - 13:43) Хиросим написал(а):
Nikitian, спасибо за помощь.
Возникла еще одна мутная трудность, мутная потому что не хочу грузить сюда весь свой код, надеюсь может быть без этого получиться решение найти.
Суть в следующем - по запросу поиска высыпается некая табличка, элементы которой удовлетворяют запросу, с этой табличкой можно еще работать, сортировать по алфавиту столбцы, критерий поиска сохраняется (тоесть сортируются только те элементы, которые вывелись по результату запроса) НО если запрос состоит из нескольких слов через пробел, то при первой же сортировке все слова после первого пробела исчезают и отбор ведется только по первому. При этом я пока ничего не мутил с функцией explode. Всетаки пару строк кода запихну:
поисковый запрос в $_POST['nmag']

if (isset($_POST['nmag'])) {$zapros = $_POST['nmag'];} else {$zapros = $_GET['zapros'];}
$query = "SELECT * FROM bd1 WHERE (UPPER(brend) LIKE '%$zapros%') or (UPPER(art) LIKE '%$zapros%') or (UPPER(device) LIKE '%$zapros%' ) ORDER BY $sort $dir";

а сортировочные ссылки выглядят так:
<a href=search.php?sort=brend&zapros=<?=$zapros;?>&<?=(isset($_GET['reverse'])?'':'&reverse=1')?>>Производитель</a>

Спустя 1 час, 17 минут, 58 секунд (12.03.2010 - 15:01) Nikitian написал(а):
Откройте для себя функцию urlencode()

Спустя 4 часа, 10 минут, 8 секунд (12.03.2010 - 19:11) Хиросим написал(а):
Я блин ее открыл))) спасибо))))

Спустя 10 дней, 11 часов, 38 минут, 54 секунды (23.03.2010 - 06:50) Хиросим написал(а):
Всем привет, я опять со своим поиском. Хочу всетаки прорюхать поиск по нескольким словам. Разбивать фразу на слова я научился, теперь думаю как организовать сам поиск. Например возьму поисковый запрос Canon eos 400.
В базе соответственно Canon в одном поле, eos 400 в другом, да к тому же не просто eos 400, а eos 400 450 500.
Алгоритм видится мне такой = сначала делаю Select по canon, результат заношу insert ом в специальную таблицу базы, далее делаю Select по eos но уже в этой специальной таблице, результат заношу в другую специальную таблицу)))). Первую специальную таблицу при этом очищаю. Дальше естественно select по 400 из последней таблицы, результат в первую, последнюю очищаю. и так до победы.

Вот решил посоветоваться есть ли более изящные методы. Чтото мне подсказывает што лоховатый я алгоритм сочинил, уж больно сложный по сравнению с поиском по одному слову.

Заранвсемспасиб!

Спустя 2 часа, 24 минуты, 50 секунд (23.03.2010 - 09:15) Nikitian написал(а):
Специальную таблицу - это временная которая? Не используйте обычную таблицу, т.к. при одновременном поиске разных фраз такая ерунда получится.
Не самый элегантный способ, но может помочь для снижения нагрузки, особенно если таблица для поиска оочень большая.
Всё же рекомендую сфинкс.

Спустя 46 минут, 48 секунд (23.03.2010 - 10:01) sergeiss написал(а):
Есть еще БД Постгре... Там намногоО, принципиально бОльшие возможности текстового поиска заложены, по сравнению с MySQL. И если требуется не просто одно слово найти, а по пачке слов, то лучше поглядеть в сторону Постгре.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.