Показать сообщение отдельно
Старый 21.08.2008, 16:22
Vitality13 вне форума Посмотреть профиль Отправить личное сообщение для Vitality13 Найти все сообщения от Vitality13
  № 6  
Ответить с цитированием
Vitality13

Регистрация: Mar 2008
Сообщений: 3
Здравствуйте

Прошу помочь разобраться в ошибках с поиском.
У меня есть БД MySQL с таблицей такой структуры:
Код:
CREATE TABLE search (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
url VARCHAR(200),
body TEXT,
FULLTEXT (title)
) TYPE=MyISAM;
Форма для поиска:
Код:
<form action="search.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
<table width="230" border="0" cellpadding="0" cellspacing="0" class="text">
<tr align="center" class="text">
<td width="150"><input name="name" type="text" id="name" value='<?php echo $name; ?>' size="20" maxlength="50" /></td>
<td width="80"><label>
<input type="submit" name="button_search" id="button_search" value="Поиск" />
<input type="hidden" name="scr" value="1">
</label></td>
</tr>
</table>
</form>
Поиск осуществляется по следующему сценарию:
Код:
<?php

  if(isset($_POST['scr']))
  {
  if(empty($name))
{
  echo "<DL><DT>Не введено искомое слово
            <DD>Введите поисковое слово и повторите поиск.</DL>";
  exit();
}
    $name = trim($name);
        $query = "SELECT * FROM search WHERE MATCH(body) AGAINST('$_POST[name]*' IN BOOLEAN MODE)
        GROUP BY id ASC";
       $post = mysql_query($query);
        if($post)
        {
          $num = mysql_num_rows($post);
          if($num>0)
          {
          echo"
              <DL>
              <DT>По поисковому запросу найдено соответствий: $num
              </DL>
              <DL>";
            while($posts = mysql_fetch_array($post))
            {
             echo "<DT><a href=http://".$posts['url'].">".$posts['body']."</a><br>";
            }
                   echo "</DL>";
          }
          else
          {
            echo "<DL><DT>По поисковому запросу ничего не найдено.
            <DD>Попробуйте изменить искомое слово.</DL>";
			exit();
          }
        }
          }
?>
Поиск сам работает, из базы данных выводится результат. Но есть несколько проблем, которые не могу никак устранить:
1) При не заполненном поле ввода поиска или при отсутствии искомого в БД, выдается ошибка, как прописано в коде, но код, идущий за пхп-кодом не выполняется. Такое ощущение, что после выполнения операции
Код:
exit();
чтение кода прекращается... Но при выполнении поиска и выводе положительного результата в виде ссылки, все нормально. Помогите разобраться.
2) При следующем поиске (другого искомого слова) результат приписывается к предыдущему, вместо его замены... Выходит, что вместе с последним результатом на страницу выводится все то, что искалось до этого.
Помогите найти и устранить ошибки.
И еще кое-что. Возможно ли, чтобы при нахождении единственного результата поиска, осуществить переход сразу на страницу, содержащую искомое, без вывода ссылки-посредника (как сделано в этом коде), ведь в БД хранится запись с полем url, где прописан адрес страницы.

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