Поиск на сайте.

Разработка своих веб-приложений и страничек

Поиск на сайте.

Сообщение Zver » 07 авг 2009, 20:43

Вот скрипт поиска на сайте. Но при любом поисковом запросе выводится что рез-тов нету )= Что не так ?

Код: Выделить всёРазвернуть
Поиск на сайте
<form action="search.php?" method="get" name="search">
<input name="text" type="text" class="search_form" />
<input name="submit" type="submit" value=">>" class="search_button" /><br />
</form>

<?php
    
  $var 
= @$_GET['text'] ;
  $trimmed = trim($var);
  $limit=10; 
    if 
($trimmed == "")
  {
  echo "<p>Поисковой запрос пустой !</p>";
  exit;
  }
  
mysql_connect
("localhost", "admin", "qwerty") or die(mysql_error()); 
mysql_select_db
("test_db") or die(mysql_error()); 
$query 
= "SELECT * FROM `news` WHERE `content` OR `theme` LIKE '\"%$trimmed%\"'  ORDER BY `id`"; 

 $numresults
=mysql_query($query);
 $numrows=mysql_num_rows($numresults);
 
 if 
($numrows == 0)
  {
  echo "<h4>Поиск</h4>";
  echo "<p>Извените, но на поисковой запрос &quot;" . $trimmed . "&quot; нечего небыло найдено.</p>";
  }
  if (empty($s)) {
  $s=0;
  } else {
  $query .= " limit $s, $limit";
  $result = mysql_query($query) or die("Не могу выполнить запрос");
echo "<p>Показанны результаты для: &quot;" . $var . "&quot;</p>";
$count = 1 + $s ;
  while ($row= mysql_fetch_array($result)) {
  $title = $row["content"];
  echo "$count.)&nbsp; $title" ;
  $count++ ;
  }
$currPage = (($s/$limit) + 1);
  echo "<br />";
  if ($s>=1) { 
  $prevs
=($s-$limit);
  print "&nbsp;<a href=\"$PHP_SELF?s=$prevs&text=$var\">&lt;&lt; Предыдущие 10 результатов</a>&nbsp&nbsp;";
  }
  $pages=intval($numrows/$limit);
  if ($numrows%$limit) {
  $pages++;
  }
  if (!((($s+$limit)/$limit)==$pages) && $pages!=1) {
  $news=$s+$limit;
  echo "&nbsp;<a href=\"$PHP_SELF?s=$news&text=$var\">Следующие 10 результатов &gt;&gt;</a>";
  }
$a = $s + ($limit) ;
  if ($a > $numrows) { $a = $numrows ; }
  $b = $s + 1 ;
  echo "<p>Показаны результаты с $b по $a из $numrows</p>";
  }
?>


Возможно не верный MySql запрос. Помагите плз ! :(
Zver
Активный участник
 
Сообщения: 1333
Зарегистрирован: 18 дек 2008, 18:51
Откуда: Саратов, Заводской

Re: Поиск на сайте.

Сообщение Костик » 07 авг 2009, 21:10

на маленьком сайте нет смісла в поиске
FreeBSD 9.2 and Fedora 18 user
Аватара пользователя
Костик
Активный участник
 
Сообщения: 1944
Зарегистрирован: 03 сен 2007, 02:15

Re: Поиск на сайте.

Сообщение zk » 07 авг 2009, 23:03

А вот этот самый запрос:

Код: Выделить всёРазвернуть
SELECT * FROM `news` WHERE `content` OR `theme` LIKE '\"%$trimmed%\"'  ORDER BY `id`


Что вообще из базы возвращает? Может у тебя там ничего нет?
zk
Администратор
 
Сообщения: 1971
Зарегистрирован: 02 сен 2007, 16:04
Домен: vfose.ru

Re: Поиск на сайте.

Сообщение Костик » 08 авг 2009, 00:02

ИНтересно а вот єти знаки проценті если их перенести как я сделал что будет ? = )

Код: Выделить всёРазвернуть
LIKE '%".$trimmed."%'
FreeBSD 9.2 and Fedora 18 user
Аватара пользователя
Костик
Активный участник
 
Сообщения: 1944
Зарегистрирован: 03 сен 2007, 02:15

Re: Поиск на сайте.

Сообщение Rostov114 » 08 авг 2009, 06:52

^_^ Делаете запросы в стиле аля Юна?

Код: Выделить всёРазвернуть

echo 
"<p>Извените, но на поисковой запрос &quot;" . htmlspecialchars($trimmed) . "&quot; нечего небыло найдено.</p>";
// ..
$trimmed addcslashes($trimmed'%_'); /*if you're doing a mysql wildcard query with  LIKE, GRANT, or REVOKE  */
mysql_query("SELECT * FROM `news` WHERE `content` OR `theme` LIKE '%".mysql_real_escape_string($trimmed)."%'  ORDER BY `id`"); 

Это как минимум чтобы исключить возможность SQL иньекции и XSS.
Некоммерческий проект «HSDN»
Аватара пользователя
Rostov114
Автор
 
Сообщения: 3198
Зарегистрирован: 18 окт 2007, 02:21

Re: Поиск на сайте.

Сообщение Zver » 08 авг 2009, 10:21

Поиск работает только если поисковой запрос полностью совпадает с записями в таблице. Почему так ?
Zver
Активный участник
 
Сообщения: 1333
Зарегистрирован: 18 дек 2008, 18:51
Откуда: Саратов, Заводской

Re: Поиск на сайте.

Сообщение Rostov114 » 08 авг 2009, 23:35

Zver писал(а):Поиск работает только если поисковой запрос полностью совпадает с записями в таблице. Почему так ?

Код: Выделить всёРазвернуть
LIKE '%   %'
?
Некоммерческий проект «HSDN»
Аватара пользователя
Rostov114
Автор
 
Сообщения: 3198
Зарегистрирован: 18 окт 2007, 02:21


Вернуться в PHP, HTML, CSS...

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9

cron