Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск, Поиск по полному совпадению слова 
:(
    Опции темы
essan
Дата 17.4.2006, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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
PM MAIL   Вверх
Darhazer
Дата 17.4.2006, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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
PM MAIL WWW ICQ YIM   Вверх
madFobos
Дата 17.4.2006, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 7.12.2005

Репутация: 1
Всего: 3



Ну можно регулярные выражения использовать еще. Хотя тут надо просто перед поиском подготовить твою фразу, напрмер (я не буду описывать всякие проверки на ' и пр. попытки взлома юных хакеров, потому что обычно для этих целей PEAR:smileB использую):
Код


$searchfor = preg_replace("/\s/", "','", trim($searchfor));
$searchfor = preg_repalce("/^|$/", "'", $searchfor);
//Должно получиться что-то вроде "'Отпетые', 'Мошенники'"
//И теперь после бла-бла-бла :)

$sql_query = "SELECT * FROM movie WHERE title LIKE (".$searchfor.") and catalog LIKE '%$ser%'";


Не тестил, но идея такая. Если же тебе по окончаниям надо, то напиши какую нибудь функцию, которая бы эти окончания анализировала и убирала из слов, тогда ты можешь сначала разбить с помощью preg_split("/\s/", ...) строку на составляющие слова, затем применить к каждому элементу функцию обрезания окончаний (с помощью, например array_map) и далее все слить опять в строку. 
PM MAIL   Вверх
essan
Дата 17.4.2006, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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>";
}

PM MAIL   Вверх
madFobos
Дата 19.4.2006, 07:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 7.12.2005

Репутация: 1
Всего: 3



Точно, я ошибся слегка, должно быть так:
Код

$searchfor = preg_replace("/\s/", "|", trim($searchfor));
//Должно получиться что-то вроде "'Отпетые', 'Мошенники'"
//И теперь после бла-бла-бла :)
$sql_query = "SELECT * FROM movie WHERE title REGEXP '$searchfor' and catalog LIKE '%$ser%'";


Не факт, что это тоже будет работать, но идея такая, т.е. у тебя будет получаться "Отпетые|Мошенники", символ | означает или в регулярных выражениях. 
PM MAIL   Вверх
essan
Дата 20.4.2006, 06:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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))
{
//выводит найденное поле

PM MAIL   Вверх
Medwoodu
Дата 20.4.2006, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 20.4.2006
Где: Москва

Репутация: нет
Всего: нет



прошу прощения, но по этим темам куча статей, например _http://phpclub.ru/detail/article/mysql_search посмотрите на дату статьи smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0485 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.