Вернуться   Дизайнерский форум » ВЕБ-ПРОГРАММИРОВАНИЕ » ASP, Perl, PHP и MySQL

Небольшой вопрос по поиску в блоке текста?

Обсуждение темы Небольшой вопрос по поиску в блоке текста? в разделе ASP, Perl, PHP и MySQL, часть категории ВЕБ-ПРОГРАММИРОВАНИЕ; Читал целый день литературу по php и скриптам , но так и не понял как решить проблему, а для вас это наверно все ...


Закрытая тема
 
Опции темы
Старый 25.02.2010, 16:49   #1
Читал целый день литературу по php и скриптам , но так и не понял как решить проблему, а для вас это наверно все просто. Хочу сделать поиск по сайту, но не по всему а только по разделу новостей. Новости находятся в бд, в таблице, в поле TEXT, то есть имеется несколько строк или абзатцев не знаю как правильно сказать. Если бы я делал поиск в файле , то это просто - открыть файл , построчно внести его в массив и уже каждую строку массива проверять на наличие какого то слова, если есть то эту новость потом на вывод. Но у меня не файл , а многострочное поле таблицы в бд, подскажите пожалуйста как мне сделать в нем проверку на наличие нужного слова в строке. Что вообще подразумевается под словом СТРОКА , это все поле в таблице считается строкой или строка это имеется в виду один обзатц в поле или вообще нужно пробовать а не спрашивать в форуме ...
 
Старый 25.02.2010, 16:49
Ссылки
Старый 25.02.2010, 17:38   #2
Вот

Почитайте статьи по этому запросу. Думаю, разберетесь.
 
Этот пользователь сказал спасибо Nielson за это полезное сообщение:
Вертер (25.02.2010)
Старый 25.02.2010, 20:50   #3
Цитата:
Сообщение от Nielson Посмотреть сообщение
Вот

Почитайте статьи по этому запросу. Думаю, разберетесь.
Спасибо, кажется действително понятно, тем более что надо же было быть таким чайником, что бы искать решение в php, а не в MySql ...
 
Старый 25.02.2010, 21:28   #4
vt-aas, ничего страшного.
 
Старый 25.02.2010, 23:02   #5
Цитата:
Сообщение от Nielson Посмотреть сообщение
vt-aas, ничего страшного.
Код:
$Q1 = mysql_query("SELECT * FROM tnews  WHERE MATCH (news) AGAINST ('$poisk*' IN BOOLEAN MODE)");
так вот работает , но почему то не все 100% , придется наверно еще поискать варианты, а может вы мне упростите жизнь и скажете где ошибка?
 
Старый 25.02.2010, 23:50   #6
1. И опять у вас маленький недочётик в SQl (хотя на этот запрос влиять не должён, но в целом можете намучиться:
правильно писать так:
"SELECT * FROM tnews WHERE MATCH (news) AGAINST ('{$poisk}*' IN BOOLEAN MODE)"
Забыл об этом в предыдущем вашем вопросе.

А так вроде должно работать.
И попробуйте более простой оператор LIKE. Возможно он для ваших целей будет лучше
 
Старый 26.02.2010, 06:24   #7
Цитата:
Сообщение от Асмодиан Посмотреть сообщение
1. И опять у вас маленький недочётик в SQl (хотя на этот запрос влиять не должён, но в целом можете намучиться:
правильно писать так:
"SELECT * FROM tnews WHERE MATCH (news) AGAINST ('{$poisk}*' IN BOOLEAN MODE)"
Забыл об этом в предыдущем вашем вопросе.

А так вроде должно работать.
И попробуйте более простой оператор LIKE. Возможно он для ваших целей будет лучше
спасибо
 
Старый 26.02.2010, 11:21   #8
Ктса. вам примерчик один хочу предложить.
Вот представим, что в $poisk попадает то, что я вбиваю в некоем поле на страничке.
И я вобью туда следующее:

hello' IN BOOLEAN MODE); DROP TABLE tnews; SELECT * FROM tnews WHERE MATCH (news) AGAINST ('hello

теперь посмотрите, какова будет ваша строка, после того, как php подставить вбитое мной. Правда весело?
 
Старый 28.02.2010, 08:25   #9
Цитата:
Сообщение от Асмодиан Посмотреть сообщение
Ктса. вам примерчик один хочу предложить.
Вот представим, что в $poisk попадает то, что я вбиваю в некоем поле на страничке.
И я вобью туда следующее:

hello' IN BOOLEAN MODE); DROP TABLE tnews; SELECT * FROM tnews WHERE MATCH (news) AGAINST ('hello

теперь посмотрите, какова будет ваша строка, после того, как php подставить вбитое мной. Правда весело?
А разве такое может попасть , если я при вводе данных делаю защиту от записи тегов, или запросы не подпадпют под теги и нужно дополнительно прописывать опасные команды MySql , да вопрос интересный, а если мне по входу запретить вообще всю латиницу?
 
Старый 28.02.2010, 18:06   #10
помните что я говорил про SQL escape.
после переработки этой функцией мой запрос станет таким:
hello\' IN BOOLEAN MODE); DROP TABLE tnews; SELECT * FROM tnews WHERE MATCH (news) AGAINST (\'hello

Всего пара слешей, но теперь sql будет искать мою никчёмную строчку текста (и выдаст наверняка нулевой результат), а не убъёт таблицу.
Разумеется защита от тэгов работать не будет, да в данном случае она и не нужна.
вот регэкс для определния тэга: "<[a-zA-Z]" ничего из мной введённого под него не попадает... Защита от латиницы - ну это очень жестоко
 
Старый 28.02.2010, 18:06
Закрытая тема


Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прокрутка содержимого ul в другом блоке fos HTML, CSS, JavaScript 0 29.09.2015 13:38
Какой фон сделать в блоке? STRICKEN Скамейка запасных 4 09.04.2008 22:56
Небольшой опрос... Artem A.S. Кальянная 2 26.03.2008 07:48
Как выравнять текст в блоке div? Dims HTML, CSS, JavaScript 11 08.03.2008 19:21
Вместо текста иероглифы в поле ввода текста IgorQ Технологии Flash 1 22.03.2007 20:49


Текущее время: 12:42. Часовой пояс GMT +4.

Реклама на форуме Условия размещения рекламы
Биржа ссылок Заработай на сайте!
Дизайнерский форум