Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Поиск по точному совпадению любого слова
 
 автор: essan   (18.04.2006 в 11:24)   письмо автору
 
 

Подскажите плиз!
В строке поиска ввожу например отпетые мошенники

<input type="text" name="searchfor" value="<?php echo $searchfor ?>"> <input type="submit" value="Поиск"><br>
бла-бла-бла
$searchfor = preg_replace("/\s/", "','", trim($searchfor));
$searchfor = preg_replace("/^|$/", "'", $searchfor);

//далее получается $searchfor равна после верхней операции 'отпетые','мошенники'

if($searchfor!=''){
$sql_query = "SELECT * FROM movie WHERE title LIKE (".$searchfor.")";

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

бы на одну букву короче, результата нет. Мне так и надо. Но совсем по другому происходит если в ячейке два слова и более, то не ищет по одному точному

совпадению слова. Надо так чтобы любое одно слово если совпало то вывелся результат.

Делаю так, но тоже не получается
$sql_query = "SELECT * FROM movie WHERE title LIKE ".str_replace("','", "%' OR title LIKE '%", $searchfor)." and catalog LIKE '%$ser%'";

   
 
 автор: XPraptor   (18.04.2006 в 14:40)   письмо автору
 
   для: essan   (18.04.2006 в 11:24)
 

Нет, так нельзя, как вы пробуете. Сначала надо разбить строку на слова, а потом для каждого слова
LIKE '%" . $word . "%' OR LIKE '%" . $word . "%' OR LIKE '%" . $word . "%' и так далее.

   
 
 автор: essan   (18.04.2006 в 15:43)   письмо автору
 
   для: XPraptor   (18.04.2006 в 14:40)
 

все равно не понимаю как сделать чтоб результат выводился по полному совпадению любого слова

$searchfor = preg_replace("/\s/", "','", trim($searchfor));
$searchfor = preg_replace("/^|$/", "", $searchfor);
$sql_query = "SELECT * FROM movie WHERE ( title LIKE '%".str_replace("','", "%' OR title LIKE '%", $searchfor)."%' )";

ну вот результат если ввести в строку поиска отпетые мошенники
echo $sql_query; //SELECT * FROM movie WHERE ( title LIKE '%отпетые%' OR title LIKE '%мошенники%' )

тем не мене если введешь слово не полностью то выдается результат
а если не применять знак %
то тогда не ищет по одному слову

если можно для примера напишите код полностью рабочий... чтобы информация из ячейки таблицы выводилась только при полном соответствии набранного в строке искомого слова

   
 
 автор: cheops   (19.04.2006 в 16:39)   письмо автору
 
   для: essan   (18.04.2006 в 11:24)
 

Не понятно, что требуется - приведите пример, того, что должно быть найдено.

   
 
 автор: essan   (20.04.2006 в 07:30)   письмо автору
 
   для: cheops   (19.04.2006 в 16:39)
 

Замучался я совсем. Подскажите, а лучше поправьте. Мне необходимо чтобы поиск находил полное соответствие(буква в букву) слова. Именно слова а не всего содержимого ячейки. Например в поле есть ячека где записано: Улица разбитых фонарей. Надо так чтоб поиск нашел в случае если в строке поиска было набрано хотя бы одно слово, полностью совпадавшее. Например если набрать: Улица фонариков либо Улицы фонарей, то результат должен быть, так как есть полное соответствие в словах Улица и фонарей, а если слово обрезанное или неправильное окончание, то результата не должно быть, как например Улиц или фон.

$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))
{
//выводит найденное поле
}

   
 
 автор: cheops   (20.04.2006 в 11:18)   письмо автору
 
   для: essan   (20.04.2006 в 07:30)
 

Продолжение темы по ссылке http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=16387

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования