|
|
|
|
|
|
для: 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))
{
//выводит найденное поле
} | |
|
|
|
|
|
|
|
для: essan
(18.04.2006 в 11:24)
| | Не понятно, что требуется - приведите пример, того, что должно быть найдено. | |
|
|
|
|
|
|
|
для: 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 '%мошенники%' )
тем не мене если введешь слово не полностью то выдается результат
а если не применять знак %
то тогда не ищет по одному слову
если можно для примера напишите код полностью рабочий... чтобы информация из ячейки таблицы выводилась только при полном соответствии набранного в строке искомого слова | |
|
|
|
|
|
|
|
для: essan
(18.04.2006 в 11:24)
| | Нет, так нельзя, как вы пробуете. Сначала надо разбить строку на слова, а потом для каждого слова
LIKE '%" . $word . "%' OR LIKE '%" . $word . "%' OR LIKE '%" . $word . "%' и так далее. | |
|
|
|
|
|
|
| Подскажите плиз!
В строке поиска ввожу например отпетые мошенники
<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%'"; | |
|
|
|
|