![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| essan |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 14.4.2006 Репутация: нет Всего: нет |
Подскажите плиз... в данном случае ищет буквально по одной букве, а как сделать правильно чтобы по полному совпадению слова, но не выражения!
бла-бла-бла <input type="text" name="searchfor" value="<?php echo $searchfor ?>"> <input type="submit" value="Поиск"><br> бла-бла-бла $sql_query = "SELECT * FROM movie WHERE (title LIKE '%$searchfor%' and catalog LIKE '%$ser%')"; бла-бла-бла Если в таблице текст: отпетые мошенники Например чтоб результат выдавался по запросу только либо если в строке поиска было указанно отпетые или мошенники а вааще я так думаю, что окончания могут быть разные, то правильней бы сделать по совпадению в слове например пяти букв Это сообщение отредактировал(а) essan - 17.4.2006, 10:27 |
|||
|
||||
| Darhazer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 28.9.2005 Где: HellCity (Sofia, Bulgaria) Репутация: 3 Всего: 29 |
...
Это сообщение отредактировал(а) Darhazer - 17.4.2006, 10:34 -------------------- I'm a wheel, I'm a wheel, I can roll, I can feel But you can't stop me turning 'Cause I'm the sun, I'm the sun, I can move, I can run But you'll never stom me burning |
|||
|
||||
| madFobos |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 7.12.2005 Репутация: 1 Всего: 3 |
Ну можно регулярные выражения использовать еще. Хотя тут надо просто перед поиском подготовить твою фразу, напрмер (я не буду описывать всякие проверки на ' и пр. попытки взлома юных хакеров, потому что обычно для этих целей PEAR:
Не тестил, но идея такая. Если же тебе по окончаниям надо, то напиши какую нибудь функцию, которая бы эти окончания анализировала и убирала из слов, тогда ты можешь сначала разбить с помощью preg_split("/\s/", ...) строку на составляющие слова, затем применить к каждому элементу функцию обрезания окончаний (с помощью, например array_map) и далее все слить опять в строку. |
|||
|
||||
| essan |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 14.4.2006 Репутация: нет Всего: нет |
Спасибо желание помочь!
$searchfor стала равна 'Отпетые','Мошенники' теперь ищет слово полностью :-) но только если оно одно в таблице если в таблице два слова, то по запросе одного слова из них, выдается нулевой результат. А если в строке поиска задать два слова например Отпетые мошенники, то тогда выдает ошибку... mysql_numrows(): supplied argument is not a valid MySQL у меня дальше вот такой код: $result = mysql_query($sql_query); $results = mysql_numrows($result); echo "По запросу <em>$searchfor</em> найдено видеосюжетов: $results"; if($results!='0') { echo " $lang[body] <LINK rel=stylesheet type=text/css href=phorum/styles.css><table width=\"100%\" border=\"0\" class=\"ramka\" cellspacing=\"1\" cellpadding=\"0\">"; while ($rows = mysql_fetch_array($result)) { echo "<tr class=back><td><img src=phorum/avat/$rows[id].jpg alt=\"$rows[title]\"></td><td>$rows[title]</td><td>$rows[description]</td><td>$rows[actor]</td><td>$rows[language]</td><td>$rows[format]</td><td>$rows[amount]</td><td>$rows[money]</td></tr>"; } echo "</table>"; } } |
|||
|
||||
| madFobos |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 7.12.2005 Репутация: 1 Всего: 3 |
Точно, я ошибся слегка, должно быть так:
Не факт, что это тоже будет работать, но идея такая, т.е. у тебя будет получаться "Отпетые|Мошенники", символ | означает или в регулярных выражениях. |
|||
|
||||
| essan |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 14.4.2006 Репутация: нет Всего: нет |
Замучался я совсем. Подскажите, а лучше поправьте. Мне необходимо чтобы поиск находил полное соответствие(буква в букву) слова. Именно слова а не всего содержимого ячейки. Например в поле есть ячека где записано: Улица разбитых фонарей. Надо так чтоб поиск нашел в случае если в строке поиска было набрано хотя бы одно слово, полностью совпадавшее. Например если набрать: Улица фонариков либо Улицы фонарей, то результат должен быть, так как есть полное соответствие в словах Улица и фонарей, а если слово обрезанное или неправильное окончание, то результата не должно быть, как например Улиц или фон.
$searchfor = preg_replace("/\s/", "|", trim($searchfor)); $searchfor = preg_replace("/^|$/", "'", $searchfor); if($searchfor!=''){ if ($ser!=actor) {$sql_query = "SELECT * FROM movie WHERE title REGEXP (".$searchfor.") and catalog LIKE '%$ser%'";} else {$sql_query = "SELECT * FROM movie WHERE actor LIKE (".$searchfor.")";} $result = mysql_query($sql_query); $results = mysql_numrows($result); while ($rows = mysql_fetch_array($result)) { //выводит найденное поле } |
|||
|
||||
| Medwoodu |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 20.4.2006 Где: Москва Репутация: нет Всего: нет |
прошу прощения, но по этим темам куча статей, например _http://phpclub.ru/detail/article/mysql_search посмотрите на дату статьи
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |