Welcome to PHPClub
В эти выходные на LinuxFest v.12! Поляна от PHPClubа Мастер-классы по Javascript, AJAX/COMET, jQuery!
Боишься нашего дизайна?
поиск:
   
 Начало | Настройки | Расширенный поиск | РегистрацияПосмотреть новые сообщения 
  
PHP Club форумы: > PHP и базы данных > PHP & Mysql > Поиск слова в таблице
 

Автор
Тема ОТВЕТИТЬ
vmnetwork
Новичок

На форуме с: Jan 2010
Cообщений: 9
Город:
Поиск слова в таблице

В общем-то глупый достаточно наверное вопрос, но никак не получается реализовать простешую функцию - поиск

$search 
$_REQUEST['search'];
$query "select * from catalog where catalogtext like '%$search%'";           
$resultmysql_query($query);
while (
$qry mysql_fetch_array($result)) {
if (!
$result)
print 
'Результатов нет';

else {
print 
$qry['catalogtitle'];
print 
'<br>';
  } 
}

Пробовал вот так но вообще ничего не выдает что не праильно то?

Отредактировано Фанат 10.01.10 в 18:26

Old Post 10.01.10 18:22 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
Вурдалак
######

На форуме с: Sep 2009
Cообщений: 580
Город: Москва

http://phpfaq.ru/debug
http://phpfaq.ru/slashes

Old Post 10.01.10 18:25 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
vmnetwork
Новичок

На форуме с: Jan 2010
Cообщений: 9
Город:

 
Автор оригинала: Вурдалак
http://phpfaq.ru/debug
http://phpfaq.ru/slashes


ну я так понял везде надо добавлять

$search 
addslashes($search);  
$search stripslashes($search);

Old Post 10.01.10 23:21 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
Вурдалак
######

На форуме с: Sep 2009
Cообщений: 580
Город: Москва

Нет, ты понял неправильно

-~{}~ 11.01.10 03:22:

Кстати, небольшой оффтопик по поводу статьи http://phpfaq.ru/slashes

 
Во-вторых, следует обратить внимание на то, что ни одна из функций, добавляющих слеши, не добавляет их к метасимволам поиска "%" и "_", используемым в операторе LIKE. Поэтому, если вы используете этот оператор, и не хотите, чтобы символы _ и % использовались, как маски, то добавляйте слеши вручную. Это можно сделать командой
$data = addCslashes($data, '%_');
Внимание - это не addslashes! В имени этой функции есть дополнительная буква "c".

Таким образом получается, что переменные, используемые в операторе LIKE мы должны обрабатывать отдельно.
сначала заменять один слеш на два, с помощью такого, к примеру, кода:
$var=str_replace('\\','\\\\',$var);
затем (можно наравне со всеми другими данными, идущими в запрос) прослешиваем:
$var=mysql_real_escape_string($var);
а затем, если хотим, чтобы _ и % соответствовали точно самим себе, делаем
$var=addCslashes($var, '_%');


IMHO, корректнее так:
<?php
$var 
addCslashes($var'_%\\');
$var mysql_real_escape_string($var);


Ибо сначала мы должны экранировать спец. символы паттерна для LIKE, а уже потом — строковое значение.

Результат один, но всё же, всё же...

Отредактировано Вурдалак 11.01.10 в 00:23

Old Post 11.01.10 00:10 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
vmnetwork
Новичок

На форуме с: Jan 2010
Cообщений: 9
Город:

 
Автор оригинала: Вурдалак
Нет, ты понял неправильно

-~{}~ 11.01.10 03:22:

Кстати, небольшой оффтопик по поводу статьи http://phpfaq.ru/slashes


IMHO, корректнее так:
<?php
$var 
addCslashes($var'_%\\');
$var mysql_real_escape_string($var);


Ибо сначала мы должны экранировать спец. символы паттерна для LIKE, а уже потом — строковое значение.

Результат один, но всё же, всё же...


Вроде как получилось..


$result 
mysql_query("SELECT * FROM cat_catalog WHERE catalogtext LIKE '%$search%' OR catalogtitle LIKE '%$search%'");

while (
$qry mysql_fetch_array($result)) {

if (!
$result){
print 
'Результатов нет';
}

else {
print 
'<a href="?section=d&idcatalog='.$qry['idcatalog'].'">-';
print 
$qry['catalogtitle'];
print 
'</a><br>';

 }
}

Только вот немного странновато ищет, не выдает надпись "Результатов нет"

Отредактировано vmnetwork 11.01.10 в 04:47

Old Post 11.01.10 04:40 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
SiZE
Новичок

На форуме с: Mar 2006
Cообщений: 30
Город: Пермь

У тебя если результатов нет цикл то не выполнится Можешь так:

$q 
mysql_query("SELECT * FROM cat_catalog WHERE catalogtext LIKE '%".$search."%' OR catalogtitle LIKE '%".$search."%'");

if ( !
mysql_num_rows($q) ) {
  echo 
"Empty";
} else {
 while (
$r mysql_fetch_array($q)) {
  echo 
'<a href="?section=d&idcatalog='.$r['idcatalog'].'">-'.$r['catalogtitle'].'</a><br>';
 } 
}

Отредактировано SiZE 11.01.10 в 06:21

Old Post 11.01.10 06:18 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
Время GMT. Текущее время 23:20. Подписаться на Тему | Версия для Печати
 

PHP Club форумы: > PHP и базы данных > PHP & Mysql > Поиск слова в таблице
 
Оценить:
 
 
 
 

 © 1997-2010 PHPClubTeam      

Powered by vBulletin Copyright © 2000-2010 Jelsoft Enterprises Limited.