![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 3 Всего: 137 |
Как организовать поиск, читая данные из БД по слову введенное в инпут.
Из мыслей - только http://dev.mysql.com/doc/mysql/ru/fulltext-search.html |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 11 Всего: 261 |
Поиск это выборка, тобишь SELECT, а какие ты условия выборки будешь делать (WHERE) это уже отдельный разговор. Можно и =, можно и LIKE, можно и REGEX и т.п.
|
|||
|
||||
| Illuminaty |
|
|||
![]() /*Антон Захаров*/ ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1238 Регистрация: 19.3.2005 Где: Россия, Казань Репутация: 1 Всего: 56 |
Для начала считать ввденное слово из $_GET или $_POST, потом проверить это слово на корректность (если введено 1324425, а искать надо по фамилии, например), затем составит SQL запрос при помощи ссылки, что ты указал и передать его (запрос) базе данных
|
|||
|
||||
| Aliance |
|
||||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 3 Всего: 137 |
Вводить можно любые латинские и русские слова.
Лучше передавать Постом, думаю(?)
их отличия "на пальцах" объяснишь? Мне нужно искать не строго слово ( \bSEARCH\b ), а часть в слове/слово, т.е. вводя aaa юзер найдет и все страницы, где встречается aaa но и bbbaaabbb Запрос чтот-то вроде такого:
|
||||
|
|||||
| Illuminaty |
|
|||
![]() /*Антон Захаров*/ ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1238 Регистрация: 19.3.2005 Где: Россия, Казань Репутация: 1 Всего: 56 |
||||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 11 Всего: 261 |
Aliance
почитай в мане про операторы сравнения (логические). Тебе нужен LIKE '%aaa%' |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 3 Всего: 137 |
Не люблю я англ. маны читать
Что понимаю - то не спрашиваю :-) А...как выводить страницы, где есть такие совпадения? |
|||
|
||||
| Mal Hack |
|
||||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 11 Всего: 261 |
Средствами PHP.. mysql_fetch_array
там и русский есть, к ьтму же где-то на форуме книжка была... |
||||
|
|||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 3 Всего: 137 |
А алгоритм расскажи. У меня нет поля с url каждого поискогого слова... не представляю себе пока... |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 11 Всего: 261 |
Ты выполнил запрос.
далее пишешь while( $row = mysql_fetch_assoc( $result ) ) { print $row['имя поля'] . "<br>"; } $row - массив полей одной записи. |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 3 Всего: 137 |
Так мне не имя поля нужно выдавать - мне нужно URL
|
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 11 Всего: 261 |
URL час ть которого берется из базы? Ну дык сгенерируй строку в print L) |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 3 Всего: 137 |
Нет, в том-то и дело - URL нет в БД.
Есть страница alert.htm и index.php. На индексе в поиск ввожу alert и выводиЦЦа ссылка на alert.htm, т.к. в БД есть такая запись и она выводЦЦа на странице alert.htm |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 11 Всего: 261 |
Сорри, не понял.. В популярном виде объясни
|
|||
|
||||
| Irokez |
|
|||
![]() индеец ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1180 Регистрация: 20.10.2004 Репутация: 3 Всего: 53 |
а каким образом ты выводишь данные из базы в alert.htm? |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 3 Всего: 137 |
fetch_row Вот тут кидал мой код: http://forum.vingrad.ru/index.php?showtopi...ndpost&p=402283 |
|||
|
||||
| Irokez |
|
|||
![]() индеец ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1180 Регистрация: 20.10.2004 Репутация: 3 Всего: 53 |
если честно, то так и не понял твой код
но если ты хочешь получить ссылку на страницу, где выводятся найденные данные, то у тебя должно быть какое либо соответствие между твоими данными в базе и страницами в которых ты их выводишь. это соответствие - либо еще одна таблица либо название страниц в записях данных. |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 3 Всего: 137 |
Итак. Я написал неподумав, признаюсь. Сам себя запутал. Бред...
Давайте все заного. Я не шибко сильно разбираюсь в мускулах, собсна столкнулся на высшем уровне только позавчера Мне нужно организовать поиск по полю из БД. Это, думаю, легко. Но выводится результаты должны ввиде страниц - где вывод данного поля состоялся, т.е. где есть слово поисковое. Как это сделать? Для меня (да и Sardar говорит) наиболее перспективным вариантом является MySQL Fulltext-search |
|||
|
||||
| Irokez |
|
|||
![]() индеец ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1180 Регистрация: 20.10.2004 Репутация: 3 Всего: 53 |
ну к примеру у тебя есть такая таблица:
+---+-------+ | ID | Text | +---+-------+ т.е. при заходе на index.php?id=3, у тебя будет выводится текст из этой таблицы с ID=3 теперь когда проводишь поиск, тебе выдаются результаты - ID рядов которые удовлетворяют твоему запросу, теперь ты можешь вывести на страницу результаты поиска с урлами: index.php?id=$ID |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 3 Всего: 137 |
Не хочу ?id =/
Ведь на большинстве сайтах поиск нормально функционирует... Эх, сложно это так =( |
|||
|
||||
| Irokez |
|
|||
![]() индеец ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1180 Регистрация: 20.10.2004 Репутация: 3 Всего: 53 |
а как хочешь? |
|||
|
||||
| Aliance |
|
||||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 3 Всего: 137 |
простые странички. Сделаем пример на 2ух:
index.php
array.php
Вводим в индексую слово array и болжно вывестись ссылка на вторую, причем независи от е имени (имени страницы). Учитываем: регистр не влияет побокам могут быть другие символы |
||||
|
|||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 3 Всего: 137 |
Вот такой код будет работать:
Но искаться будет только по полю name, а можно ли искать по всем полям (name, qwer, abc...) И зачем вот это: LIMIT 0 , 30 Это сообщение отредактировал(а) Aliance - 22.5.2005, 23:39 |
|||
|
||||
| Mal Hack |
|
||||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 11 Всего: 261 |
Добавляем AND `somepole` LIKE 'somevalue'...
первые 30 записей (по сорировке, которй у тебя, кстати, нет), а не все, что есть в таблице |
||||
|
|||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 3 Всего: 137 |
Так?
|
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 11 Всего: 261 |
Это сообщение отредактировал(а) Mal Hack - 22.5.2005, 23:44 |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 3 Всего: 137 |
Mal Hack
ууу, а если у меня 20 таких полей =(
а если мне лимит не нужен - она тоже не нужна? |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 11 Всего: 261 |
Нужна сортировка - делаешь сортирвку. Нужен лимит - делаешь лимит. Вот и все. Они не зависимы друг от друга. Просто если есть сортировка, то лимит будет делать по данным, уже отсортированным. |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 3 Всего: 137 |
Окей.
И все же вернемся к тому, что мне необходимо было сперва: выводить по найденным совпадениям URL где они встречаются. Нельзя ли как-то обойтись без доп. столбца с url? |
|||
|
||||
| PARROT |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2339 Регистрация: 5.1.2005 Где: Спб-ЦарьГрад Репутация: 3 Всего: 50 |
Пишу поиск, вот код, укажите на ошибки пожалуйста.
Скрипт ничего не выводит, даже ошибки нет. Не совсем понимаю что писать в LIKE, сейчас там стоит та переменная которая приходит из формы. -------------------- Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим! |
|||
|
||||
| Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 2 Всего: 55 |
PARROT
Скрипт ничего не выводит, потому что не находит, AND замени на OR и mysql_fetch_row на mysql_fetch_assoc Добавлено @ 22:52 function import ($imp) хм, а не $poisk? |
|||
|
||||
| PARROT |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2339 Регистрация: 5.1.2005 Где: Спб-ЦарьГрад Репутация: 3 Всего: 50 |
Так находит все данные и выводит их на страницу, то есть не то что задаешь в инпуте, но и сверх того. Сейчас заменю AND на OR
Почему??? -------------------- Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим! |
||||
|
|||||
| Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 2 Всего: 55 |
function import ($imp){
$imp=mysql_query("SELECT * FROM `import` WHERE `mark` LIKE '%$poisk' AND `model` LIKE '%$poisk' AND `year` LIKE '%$poisk' AND `title` LIKE '%$poisk'") or die(mysql_error()); while ($full=mysql_fetch_assoc($imp)) { print ($full['mark']."<br/>".$full['model']."<br/>".$full['year']."<br/>".$full['title']."<br/>"); } } да и % лучше ставить с обеих сторон.
потому что он ишет по пробелу, т.к в переменной не то, что нужно. см. выше. |
|||
|
||||
| PARROT |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2339 Регистрация: 5.1.2005 Где: Спб-ЦарьГрад Репутация: 3 Всего: 50 |
Вот так заработало:
Всем Спасибо!!! Это сообщение отредактировал(а) PARROT - 10.7.2005, 21:45 -------------------- Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим! |
|||
|
||||
| Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 2 Всего: 55 |
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |