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

Форум MySQL

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

 

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

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

тема: Поиск по сайту (2 часть)
 
 автор: Vados   (15.06.2006 в 11:49)   письмо автору
 
 

Добрый день!

У меня в БД пока ничего нет.

Я просто на странице, где у меня происходит поиск вывел обычный текст и соответственно на этой странице набираю в строке поиска слово, которое есть в этом тексте.
Я понимаю, что похоже делаю что-то не правильно.
Мне текст, которой в будущем возможно прийдётся искать куда мне его загонять в БД?
Весь текст мне нужно заганять или как?
Или мне необходимо каким-то образом индексировать страницу?

Cheops, я Вам очень благодарен за помощь, но могли Вы бы мне детально всё это описать, чтобы у нас не длилась долгая переписка.

Заранее спасибо!

   
 
 автор: cheops   (15.06.2006 в 22:49)   письмо автору
 
   для: Vados   (15.06.2006 в 11:49)
 

Обычно логика такая:
1) Искать по тексту вы можете только в том случае, если он находится в базе данных.
2) Поэтому весь текст помещается в базу данных.
3) Страницы формируются при помощи запросов SELECT, извлекающих текст из базы данных.
Т.е. следует так построить работу сайта, чтобы весь текст, учавствующий в поиске находился в базе данных - причём желательно в одной таблице.

   
 
 автор: Vados   (16.06.2006 в 13:20)   письмо автору
 
   для: cheops   (15.06.2006 в 22:49)
 

Хорошо, это понятно, спасибо!

А как же собственно организовать так, чтобы весь текст находился в БД и в одной таблице?

Мне, я так понимаю нужно написать запрос на сохранении всей инфы в таблице?

И ещё такой вопрос, а скорость поиска нужного слова или фразы зависит от того в одной таблице находится текст или нет?

Заранее спасибо за ответ!

   
 
 автор: cheops   (16.06.2006 в 15:17)   письмо автору
 
   для: Vados   (16.06.2006 в 13:20)
 

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

   
 
 автор: Vados   (16.06.2006 в 16:00)   письмо автору
 
   для: cheops   (16.06.2006 в 15:17)
 

Хорошо, а как это реализовать?

То есть, если например в параграфе находиться искомое слово, то по уникальному значению ищется название статьи?!

Я правильно понимаю?!

Можете привести пример?

Заранее спасибо!

   
 
 автор: cheops   (17.06.2006 в 00:35)   письмо автору
 
   для: Vados   (16.06.2006 в 16:00)
 

Да.
>Можете привести пример?
Полный нет, так как код очень громоздкий и требует длительной работы над ним. Вы можете начать работу над такой системой, а в случае возникновения сложностей обращаться на форум за советом.

   
 
 автор: Vados   (19.06.2006 в 12:47)   письмо автору
 
   для: cheops   (17.06.2006 в 00:35)
 

Хорошо, вот только вопрос с чего начинать?!

Хоть направьте на путь истинный! :-))

Заранее спасибо!

   
 
 автор: cheops   (19.06.2006 в 18:55)   письмо автору
 
   для: Vados   (19.06.2006 в 12:47)
 

Следует создать таблицы для разделов, статей и параграфов. Затем создать систему администрирования, которая поможет заполнять эти таблицы, т.е. создавать/редактировать/удлять разделы, статьи, наполнять статьи параграфами. Это первоочередная задача, так как если не будет заполненной базы данных будет сложно реализовывать блок представления и поиск.

PS Вообще создание такой системы и поиска подробно описывается в нашей книге "PHP 5. Практика создания Web-сайтов" (более того, на компакт-диске к этой книге имеется готовая система).

   
 
 автор: Vados   (21.06.2006 в 22:52)   письмо автору
 
   для: cheops   (19.06.2006 в 18:55)
 

Всем привет!
Вот начал разбираться с проблемой поиска, итак что я сделал:

Создал БД search:

в ней имеются 3 таблицы:

таблица artpage


CREATE TABLE 'artpage' (
  'id_artpage' mediumint(9) NOT NULL auto_increment,
  'name' tinytext NOT NULL,
  'id_site' tinyint(4) default NULL,
  PRIMARY KEY  ('id_artpage')
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;


таблица articles


CREATE TABLE 'articles' (
  'id_article' int(11) NOT NULL auto_increment,
  'name' tinytext NOT NULL,
  'description' tinytext NOT NULL,
  'html_title' tinytext NOT NULL,
  'html_description' tinytext NOT NULL,
  'html_keywords' tinytext NOT NULL,
  'pos' mediumint(9) NOT NULL,
  'hide' enum('show','hide') default 'show',
  'id_page' mediumint(9) NOT NULL,
  PRIMARY KEY  ('id_article'),
  KEY 'id_page' ('id_page'),
  FULLTEXT KEY 'name' ('name'),
  FULLTEXT KEY 'description' ('description'),
  FULLTEXT KEY 'together' ('name','description')
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=4 ;


Заполняю таблицу articles, вот собственно дамп:


INSERT INTO 'articles' ('id_article', 'name', 'description', 'html_title', 'html_description', 'html_keywords', 'pos', 'hide', 'id_page') VALUES (1, 'моя первая статья', 'всем привет, буду рад с каждым познакомиться', 'первая статья', 'статьи о жизни', 'статьи, форум, чат', 1, 'show', 1),
(2, 'моя первая статья', 'всем привет, буду рад с каждым познакомиться', 'первая статья', 'статьи о жизни', 'статьи, форум, чат', 2, 'show', 2),
(3, 'моя третья статья', 'всем привет, буду рад с каждым познакомиться', 'третья статья', 'статьи о жизни', 'статьи, форум, чат', 3, 'show', 3);


таблица paragraphes


CREATE TABLE 'paragraphes' (
  'id_paragraph' int(10) unsigned NOT NULL auto_increment,
  'type' enum('paragraph','title','anchor','table') NOT NULL default 'paragraph',
  'name' text NOT NULL,
  'url' tinytext NOT NULL,
  'picture_big' tinytext NOT NULL,
  'picture_small' tinytext NOT NULL,
  'place' tinyint(4) NOT NULL default '0',
  'pos' int(11) NOT NULL default '0',
  'hide' enum('show','hide') NOT NULL default 'show',
  'id_article' int(10) unsigned NOT NULL default '0',
  PRIMARY KEY  ('id_paragraph'),
  KEY 'id_article' ('id_article'),
  FULLTEXT KEY 'name' ('name')
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;


После этого, хочу найти то, что заполнил в таблице articles, выполняю вот такой SQL-запрос:


SELECT * FROM articles WHERE MATCH(name) AGAINST ('моя первая статья');


Но после такого запроса у меня ничего не выводится из БД?

В чём дело, прошу помогите разобраться!

Заранее спасибо!

   
 
 автор: cheops   (22.06.2006 в 00:18)   письмо автору
 
   для: Vados   (21.06.2006 в 22:52)
 

По умолчанию полнотекстовый поиск не учитывает слова меньше 4-х симоволов, и которые входят в половину всех записей. Попробуйте
SELECT * FROM articles WHERE MATCH(name) AGAINST ('третья');

и запись будет найдена. Снять огарничение вхождения слова в 50% записей можно, если использовать логический режим
SELECT * FROM articles WHERE MATCH(name) AGAINST ('третья' IN BOOLEAN MODE);

   
 
 автор: Vados   (22.06.2006 в 11:24)   письмо автору
 
   для: cheops   (22.06.2006 в 00:18)
 

Спасибо, получилось!

Буду теперь заниматься реализацией наполнения БД инфо.

   
 
 автор: Vados   (26.06.2006 в 00:49)   письмо автору
 
   для: Vados   (22.06.2006 в 11:24)
 

Доброй всем ночи!
В книге "PHP5. Практика создания WEB-сайтов", я взял за исходный пример раздел с полноценным поиском, вот что получилось:


<?
include "config.php";
define(LOLIC_OR,1);
define(LOLIC_AND,2);
//Режим поиска
define(TITLES,1);// В названиях
define(ARTICLES,2); // В статьях
//Устанавливаем переменные формы
$name $_POST['name'];
$numberthemes $_POST['numberthemes'];
$srchwhere $_POST['srchwhere'];
$id_page $_POST['id_page'];
$logic $_POST['logic'];
?>
<html>
<head>
<body>
<table>
<form action = searchform.php method= "POST">
<tr>
<td>Ключевые слова</td>
<td><input type=text name=name value='<?php echo $name;?>'></td>
</tr>
<tr>
<td>Количество выводимых статей</td>
<td><input type=text name=numberthemes value=
<?php 
if(empty($numberthemes)) echo 30;
else echo 
$numberthemes;
?>></td>
</tr>
<tr>
<td>Искать в</td>
<td>
<select type=text name=srchwhere>
<option value=
<?php
echo TITLES;
if (
$srchwhere == TITLES)
echo 
"checked";
?>>
в названиях статей
<option value=
<?php
echo ARTICLES;
if (
$srchwhere == ARTICLES) echo "checked";
?>>в статьях
</select>
</td>
</tr>
<tr>
<td>Группа статей</td>
<td>
<select type=text name=id_page>
<option value=0>Не имеет значения
<?php
//Формируем выпадающий список для выбора раздела поиска
$pgs mysql_query("SELECT * FROM artpages WHERE hide='show' ORDER BY pos");
if (
$pgs)
{
    while (
$pages mysql_fetch_array($pgs)) 
    {
        if (
$pages['id_page'] == $id_page$strtmp "selected";
        echo 
$strtmp "";
        echo 
"<option value=".$pages['id_page'].$strtmp> ".$pages['id_page'];    
    }
}
?>
</select>
</td>
</tr>
<tr>
<td>Логика</td>
<td>
<input name=logic type=radio value=
<?php
echo LOGIC_AND;
if (
$logic == LOGIC_AND) echo "checked";
?>>
ИЛИ<br>
<input name=logic type=radio value=
<?php
echo LOGIC_OR;
if (
$logic == LOGIC_OR) echo "checked"
?>>
И</td>
</td>
</tr>
<tr>
<td>
&nbsp;
</td>
<td>
<input type=submit name=send value=Найти>
</td>
</tr>
</form>
</table>
<?php
if (!empty($name))
{
    
// Выбираем логику поиска, если задано несколько ключевых слов
    
if ($logic == LOGIC_OR$logstr "OR";
    else 
$logstr "AND";
    
// Разбиваем поисковую фразу на подстроки, разделённые пробелами
    
$name trim($name);
    
$temp strtok($name" ");
    while (
$temp)
    {
        
// Полнотекстовый поиск по столбцу name таблицы articles 
        // Формируем поисковую часть SQL-запроса, учитывая логику,
        // заданную во временной переменной $logic
        
if ($is_query$search .= $logstr MATCH (name) AGAINST  ('$temp')";
        else 
$search .= "MATCH (name) AGAINST ('$temp')";
        
$is_query true;
        
$temp strtok(" ");
    } 
    
// Формируем фрагмент SQL-запроса, ответственный за поиск 
    // в определённом разделе, если значение $id_page не установлено,
    // не имеет значение раздел и поиск осуществляется по всем разделам.
    
if (!empty($id_page)) $pagetmp "AND id_page = $id_page";
    
// В зависимости от режима поиска формируем SQL-запрос
    
switch ($srchwhere)
    {
        case 
TITLES// Поиск в названиях статей
        
{
            
// Формируем SQL-запрос
            
$query "SELECT * FROM articles WHERE $search AND id_forum = $id_forum AND hide = 'show' $pagetmp ORDER BY time DESC LIMIT $numberthemes";
            
$src mysql_query($query);
            break;
        }
        case 
ARTICLES// Полнотекстовый поиск по сообщениям
        
{
            
// Формируем SQL-запрос
            
$query "SELECT id_article FROM paragraphes WHERE $search AND hide = 'show' $pagetmp GROUP BY id_article";
            
$par mysql_query($query);
            if (
$parputerror("Ошибка при выборе параграфов...");
            
$numtot mysql_num_rows($par);
            if (
$numtot>0)
            {
                
$query "SELECT * FROM articles WHERE id_article IN (";
                while (
$art mysql_fetch_array($par))
                {
                    
$query .= $art['id_article'].",";
                }
                
$query .= "0) AND id_forum=$id_forum AND hide = 'show' GROUP BY id_theme ORDER BY time DESC LIMIT $numberthemes";
                
$src mysql_query($query);
            } 
            else echo 
"По запросу ничего не найдено.";
            break;
        }
    }
    
// Выводим список найденных статей
    
if ($srcputerror ("Ошибка при выборке статей...");
    
// Выясняем количество найденных статей
$numtot mysql_num_rows($src);
if (
$numtot>0)
{
    while (
$art mysql_fetch_array($src))
    {
        echo 
"<a href=art.php?id_article=".$art['id_article'].">".$art['name']."</a><br>";
    }
}
else echo 
"По запросу ничего не найдено.";
}
?>
</body>
</head>


Но у меня, при попытке поиска любого слова, MYSQL возвращает значение:


Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\www\html\search\searchform.php on line 156
По запросу ничего не найдено.


Прошу помогите разобраться.

Заранее спасибо!

   
 
 автор: cheops   (26.06.2006 в 11:01)   письмо автору
 
   для: Vados   (26.06.2006 в 00:49)
 

Всегда, после выполнения запроса
<?php
 $src 
mysql_query($query);
?>

следует осуществлять проверку
<?php
  
if(!$src) exit(mysql_error()."<br>".$query);
?>

Что теперь пишет?

   
 
 автор: Vados   (26.06.2006 в 18:04)   письмо автору
 
   для: cheops   (26.06.2006 в 11:01)
 

Хорошо, спасибо!
Но я не пойму куда мне этот код дописывать, точнее после чего?

Заранее спасибо!

   
 
 автор: valenok   (26.06.2006 в 18:10)   письмо автору
 
   для: Vados   (26.06.2006 в 18:04)
 

После исполнения запроса
$src = mysql_query($query);
В
switch ($srchwhere)
{
case TITLES: // Поиск в названиях статей
{

   
 
 автор: cheops   (26.06.2006 в 19:49)   письмо автору
 
   для: Vados   (26.06.2006 в 18:04)
 

>Хорошо, спасибо!
>Но я не пойму куда мне этот код дописывать, точнее после

<?php
case TITLES// Поиск в названиях статей 
        

            
// Формируем SQL-запрос 
            
$query "SELECT * FROM articles WHERE $search AND id_forum = $id_forum AND hide = 'show' $pagetmp ORDER BY time DESC LIMIT $numberthemes"
            
$src mysql_query($query); 
            if(!
$src) exit(mysql_error()."<br>".$query);
            break; 
        }
?>

И так следует обработать каждую функцию mysql_query().

   
 
 автор: valenok   (26.06.2006 в 18:11)   письмо автору
 
   для: cheops   (26.06.2006 в 11:01)
 


<?php 
  
if(!$src) exit(mysql_error()."<br>".$query); 
?>

Только при отладке.
А так лучше:
<?php
if(!$src) exit(Извините, произошла ошибка. Просим вас связаться с администратором.);
?>

   
 
 автор: Vados   (26.06.2006 в 18:53)   письмо автору
 
   для: valenok   (26.06.2006 в 18:11)
 

Привет!
Спасибо конечно за совет, но у меня ничего не получается.

Я

<?php 
  
if(!$src) exit(mysql_error()."<br>".$query); 
?>


поставил, но я так понимаю, что необходимо вставить код без <?php и ?>

Заранее спасибо за помощь.

   
 
 автор: valenok   (26.06.2006 в 18:54)   письмо автору
 
   для: Vados   (26.06.2006 в 18:53)
 

Без.
Покажите лучше как вы вставили..

   
 
 автор: Vados   (26.06.2006 в 22:03)   письмо автору
 
   для: valenok   (26.06.2006 в 18:54)
 

Спасибо!

Но что-то у меня совсем ничего не получается, итак, для ясности, что я сделал:


case TITLES: // Поиск в названиях статей
        {
            // Формируем SQL-запрос
            $query = "SELECT * FROM articles WHERE $search AND id_forum = $id_forum AND hide = 'show' $pagetmp ORDER BY time DESC LIMIT $numberthemes";
            $src = mysql_query($query);
            if(!$src) exit(mysql_error()."<br>".$query);
            break;
        }



case ARTICLES: // Полнотекстовый поиск по сообщениям
        {
            // Формируем SQL-запрос
            $query = "SELECT id_article FROM paragraphes WHERE $search AND hide = 'show' $pagetmp GROUP BY id_article";
            $par = mysql_query($query);
            if(!$src) exit(mysql_error()."<br>".$query);
            if ($par) puterror("Ошибка при выборе параграфов...");
            $numtot = mysql_num_rows($par);
            if ($numtot>0)
            {
                $query = "SELECT * FROM articles WHERE id_article IN (";
                while ($art = mysql_fetch_array($par))
                {
                    $query .= $art['id_article'].",";
                }
                $query .= "0) AND id_forum=$id_forum AND hide = 'show' GROUP BY id_theme ORDER BY time DESC LIMIT $numberthemes";
                $src = mysql_query($query);
                if(!$src) exit(mysql_error()."<br>".$query);
            } 
            else echo "По запросу ничего не найдено.";
            break;
        }


Вот, то есть получается, что я это ввёл в 3-х местах.
Но у меня при попытке найти искомое слово, вот такая вещь возращается:


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND hide = 'show' ORDER BY time DESC LIMIT 1' at line 1
SELECT * FROM articles WHERE MATCH (name) AGAINST ('Привет') AND id_forum = AND hide = 'show' ORDER BY time DESC LIMIT 1


Прошу, помогите мне.

Заранее спасибо.

   
 
 автор: куч1963   (27.06.2006 в 00:01)   письмо автору
 
   для: Vados   (26.06.2006 в 22:03)
 

в таблице articles нет столба id_forum

   
 
 автор: Vados   (28.06.2006 в 12:57)   письмо автору
 
   для: куч1963   (27.06.2006 в 00:01)
 

Привет!

Хорошо, а что если я уберу вообще в запросе id_forum?

Но тогда у меня при поиске ругается на:


$numtot = mysql_num_rows($src);


То есть в строке браузера выдвётся такая ошибка:


Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\www\html\search\searchform2.php on line 89
По запросу ничего не найдено.

Помогите, уже сколько мучаюсь ничего не могу сделать!

   
 
 автор: куч1963   (28.06.2006 в 13:17)   письмо автору
 
   для: Vados   (28.06.2006 в 12:57)
 

Я тоже возился с этим листингом, потом взял да сделал так

<?
  
// Устанавливаем соединение с базой данных
 
require_once("../admin/config.php");
 
$title="Поиск";
 
$id_menu 9;
 include 
"../util/top.php";
  
// Режим поиска
  
define('ARTILES','1'); // В статьях
  
define('CATALOG','2'); // В КАТАЛОГЕ
  
define('NEWS','3'); // В NEWS
  // Устанавливаем переменные формы    
  
if (!get_magic_quotes_gpc())
  {
    
$_POST['name'] = mysql_escape_string($_POST['name']);
  }
  
$name $_POST['name'];
  
$srchwhere $_POST['srchwhere'];
  
?>
<p><font size="+1" color="#6699CC">Поиск на сайте</font></p>
<table  width="500" border="0"  cellpadding="5" cellspacing="0">
  <form action=search.php method=post>
    <tr>
      <td>Ключевые слова</td>
      <td><input class="input" type=text name=name value='<?php echo $name?>' size="35"></td>
    </tr>
    
    <tr>
      <td>Искать в</td>
        <td>
          <select type=text name=srchwhere>
          <option value="">Выбор зоны поиска
             <option value=
               <?php 
                 
echo ARTILES;
                  
               
?>>в статьях
               <option value=
               <?php 
                 
echo CATALOG;
               
?>>в каталоге 
               <option value=
               <?php 
                 
echo NEWS;
               
?>>в новостях 
          </select>
       </td>
    </tr>
    
    <tr><td>&nbsp;</td><td><input class="vvod" type=submit name=send value=Поиск></td></tr>
  <input type="hidden" name="scr" value="1"></form>
</table>
<?php

  
if(isset($_POST['scr']))
  {
  if(empty(
$name))    
 {
  echo 
"<DL><DT>Не введено искомое слово
            <DD>Введите поисковое слово и повторите поиск.</DL>"
;
            include 
"../util/bottom.php";
            exit();
 }
      
  if(empty(
$srchwhere))    
 {
  echo 
"<DL><DT>Не выбрана зона поиска
            <DD>Выберите зону поиска и повторите поиск.</DL>"

            include 
"../util/bottom.php";
            exit();
 }
  
    
$name trim($name);
  
    
// В зависимости от режима поиска формируем SQL-запрос
    
switch($srchwhere)
    {
      case 
ARTILES// Поиск в названиях статей
      
{
        
// Формируем SQL-запрос
        
$query "select articles.id_article AS id_article,
                        articles.name AS name,
                     paragraphes.name AS text,
                        paragraphes.id_article
    from articles, paragraphes
WHERE articles.id_article =  paragraphes.id_article AND  MATCH(paragraphes.name) AGAINST('
$name*' IN BOOLEAN MODE)
GROUP BY articles.id_article"

      
$post mysql_query($query);
        if(
$post)
        {
          
$num mysql_num_rows($post);
          if(
$num>0)
          {
                 echo
"
              <DL>
              <DT>По поисковому запросу: "
.$_POST['name'].
              <DD>в разделе <b>статьи</b> число соответствий: 
$num
              </DL> 
              <DL>"
;
            while(
$posts mysql_fetch_array($post))
            {
      
             echo 
" <DT><a href=../article/index.php?id_article=".$posts['id_article'].">".$posts['name']."</a><br>";
             
?>
             <DD>Коротко:<br>...<?= strtok (stristr($posts['text'], $_POST['name']),'.');?><br>
             <?
            
}    
                   echo 
"</DL>";       
          }
          else
          {
            echo 
"<DL><DT>По поисковому запросу: ".$_POST['name']." ничего не найдено.
            <DD>Попробуйте изменить поисковое слово.</DL>"
;    
            include 
"../util/bottom.php";
            exit();
          }}
        break;
      }
      case 
CATALOG// Полнотекстовый поиск по каталогу
      
{
        
// Формируем SQL-запрос
        
$query "SELECT * FROM links WHERE MATCH(name) AGAINST('$_POST[name]*' IN BOOLEAN MODE)
        GROUP BY name
        UNION  SELECT * FROM links WHERE MATCH(description) AGAINST('
$_POST[name]*' IN BOOLEAN MODE)
        GROUP BY name
        UNION  SELECT * FROM links WHERE MATCH(descr) AGAINST('
$_POST[name]*' IN BOOLEAN MODE)
        GROUP BY name
        "

       
$post mysql_query($query);
        if(
$post)
        {
          
$num mysql_num_rows($post);
          if(
$num>0)
          {    
          echo
"
              <DL>
              <DT>По поисковому запросу: "
.$_POST['name'].
              <DD>в разделе <b>каталог</b>число соответствий: 
$num
              </DL> 
              <DL>"
;
           
            while(
$posts mysql_fetch_array($post))
            {
      
             echo 
" <DT><a href=../mag/index.php?pid=".$posts['p_id'].">".$posts['name']."</a><br>";
             
?>
             <DD>Коротко:<br>...<?= $posts['description'];?>
             <?
            
}    
                   echo 
"</DL>";       
          }
          else
          {
            echo 
"<DL><DT>По поисковому запросу: ".$_POST['name']." ничего не найдено.
            <DD>Попробуйте изменить поисковое слово.</DL>"
;
            include 
"../util/bottom.php";
            exit();
          }
          }
        break;
      }
      case 
NEWS// Полнотекстовый поиск по новостям
      
{
        
// Формируем SQL-запрос
        
$query "SELECT * FROM news WHERE MATCH(name) AGAINST('$_POST[name]*' IN BOOLEAN MODE)
        GROUP BY name
        UNION  SELECT * FROM news WHERE MATCH(body ) AGAINST('
$_POST[name]*' IN BOOLEAN MODE)
        GROUP BY name
        "

       
$post mysql_query($query);
        if(
$post)
        {
          
$num mysql_num_rows($post);
          if(
$num>0)
          {    
          echo
"
              <DL>
              <DT>По поисковому запросу: "
.$_POST['name'].
              <DD>в разделе <b>новости</b> число соответствий: 
$num
              </DL> 
              <DL>"
;
           
            while(
$posts mysql_fetch_array($post))
            {
                  
             echo 
" <DT><a href=../news/index.php?id_news=".$posts['id_news'].">".$posts['name']."</a><br>";
             
?>
             <DD>Коротко:<br>...<?= $posts['body'];?>
             <?
            
}    
                   echo 
"</DL>";       
          }
          else
          {
            echo 
"<DL><DT>По поисковому запросу: ".$_POST['name']." ничего не найдено.
            <DD>Попробуйте изменить поисковое слово.</DL>"
;    
            include 
"../util/bottom.php";
            exit();
          }
          }
        break;
      }
    }
    
    }
    
include 
"../util/bottom.php";
?>

   
Rambler's Top100
вверх

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