[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: не работает поиск
liver1981
здраствуйте уважаемые форумчане
опять нужен ваш совет!!!

пишу php блог
написал поисковую страницу
столкнулся с вот такой незадачей

ввожу в поиск слово "абстрактный" зная что в блоге это слово есть
user posted image
жму "поиск" - всё нормально. заметка содержащая это слово находится
user posted image
но если я ввожу в поиск например слово "следующие" зная что в блоге это слово есть
user posted image
то выдаётся ошибка
user posted image

вот код проблемной странички:

<? include ("blocks/bd.php"); 
if (isset($_POST['submit_s']))
{
$submit_s = $_POST['submit_s'];
}
if (isset($_POST['search']))
{
$search = $_POST['search'];
}

if (isset($submit_s))
{
if (empty($search) or strlen($search) < 4)
{
exit ("<p>Одно или все введенные вами ключевые слова для поиска имеет менее 4 символов, или же вы ввели в качестве ключевого слова недопустимые к поиску слова, такие как 'html', 'img' и т.д. Вернитесь назад и увеличьте количество символов в ключевом слове, либо измените его.</p>");
}

$search = trim($search);
$search = stripslashes($search);
$search = htmlspecialchars($search);

}

else
{
exit("<p>Ошибка! Вернитесь и повторите поиск</p>");
}

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta
http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title><?php
echo "Результаты поиска: $search";?></title>
<link
href="style.css" rel="stylesheet" type="text/css">
</head>

<body>
<table
width="690" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" class="main_border">
<?php
include ("blocks/header.php"); ?>

<tr>
<td
valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>

<?
include ("blocks/lefttd.php"); ?>
<td
valign='top'>
<?php






$result = mysql_query("SELECT id, title, description, date, author, mini_img, view FROM data WHERE MATCH(text) AGAINST('$search')", $db); //выборка из базы

if (!$result) //проверка соединения с базой данных

{
echo "<p>Ошибка. Запрос на выборку из базы данных не прошёл. Напишите об этом администратору admin@lds.net.ua <br> <strong>Код ошибки:</strong> </p>";
exit (mysql_error ()); //выводит ошибку mysql
}

if (mysql_num_rows($result) > 0)

{
$myrow = mysql_fetch_array($result);

do
{
printf ("<table align='center' class='post'>
<tr>
<td class='post_title'>
<p class='post_name'><img class='mini' align='left' src='%s'><a href='view_post.php?id=%s'>%s</a></p>
<p class = 'post_adds'>Дата добавления: %s</p>
<p class = 'post_adds'>Автор урока: %s</p></td>
</tr>

<tr>
<td>%s<br><p class='post_view'>Просмотров: %s</p></td>
</tr>
</table><br><br>"
,$myrow["mini_img"],$myrow["id"],$myrow["title"], $myrow["date"], $myrow["author"],$myrow["description"], $myrow["view"]);
}
while ($myrow = mysql_fetch_array($result));

}

else

{
echo "<p>Ошибка!Нет такой записи</p>";
exit ();
}
?>

</td>
</tr>
</table></td>
</tr>
<?
include ("blocks/footer.php"); ?>
</table>
</body>
</html>



подскажите пожалуйста, что тут не так?





Спустя 36 минут, 28 секунд (27.08.2010 - 05:20) twin написал(а):
Для начала сюда.

Спустя 1 час, 25 минут, 46 секунд (27.08.2010 - 06:46) liver1981 написал(а):
twin, спасибо большое я прочел
но тут разбирается только сайт а я сечас с блогом вожусь
ошибка та же. кто нить подскажите пожалуйста?

Спустя 1 час, 11 минут, 49 секунд (27.08.2010 - 07:58) amazing написал(а):
Где
{
echo "<p>Ошибка!Нет такой записи</p>";
exit ();
}


включи

mysql_error ();


И что напишет...

А вообще тут все Поповское переписывать надо

Спустя 8 минут, 52 секунды (27.08.2010 - 08:07) liver1981 написал(а):
amazing, простите я не совсем понял
а как переписать?

{
echo "<p>Ошибка!Нет такой записи</p>";
mysql_error ();
exit ();
}


так???

Спустя 57 минут, 45 секунд (27.08.2010 - 09:04) linker написал(а):
Абсолютно без надобности, ибо проверка на ошибки существует
if (!$result) //проверка соединения с базой данных

{
echo "<p>Ошибка. Запрос на выборку из базы данных не прошёл. Напишите об этом администратору admin@lds.net.ua <br> <strong>Код ошибки:</strong> </p>";
exit (mysql_error ()); //выводит ошибку mysql
}
А вот Поповский код переписывать однозначно.

Спустя 4 часа, 6 минут, 53 секунды (27.08.2010 - 13:11) liver1981 написал(а):
linker, простите. т.е.исправить эту ошибку никак не получится?

Спустя 15 минут, 3 секунды (27.08.2010 - 13:26) inpost написал(а):
liver1981
$result = mysql_query("SELECT id, title, description, date, author, mini_img, view FROM data WHERE MATCH(text) AGAINST('$search')", $db); 


Там где SELECT напиши *, а не указывай какие-то поля! ПОсмотри на результат. А лучше пройди ещё раз его урок, он там рассказывал про это =) Ты снова невнимательный

Спустя 5 минут, 52 секунды (27.08.2010 - 13:32) amazing написал(а):
liver1981, на 1-м, и 2-м скришноте у тебя выводиться description, а на 3-м text, я правильно понял?

Спустя 11 минут, 13 секунд (27.08.2010 - 13:43) liver1981 написал(а):
inpost, я сверял с оригинальным php файлом - не могу найти ошибку
amazing, а как это определить? они же одинаковые, но ошибка та же


Спустя 3 минуты, 48 секунд (27.08.2010 - 13:47) liver1981 написал(а):
amazing, вы похоже что правы. видимо text не выводится а только description. как быть?

Спустя 7 минут, 45 секунд (27.08.2010 - 13:55) amazing написал(а):
liver1981, первый раз вы ищите словосочетание из Краткого описания, а второй раз уже из Полного текста статьи, если я правильно понял, в эту сторону копайте...

Спустя 2 минуты, 46 секунд (27.08.2010 - 13:58) liver1981 написал(а):
вот блог и база http://up.iteam.ua/86329
люди, может быть кто то укажет на ошибку?


Спустя 25 секунд (27.08.2010 - 13:58) inpost написал(а):
Я показал, там ставишь *...
Сверяться надо не с файлом, который лежит на диске Попова, а с самим уроком, что он делает в процессе объяснения! Там ошибок нет, я ни разу к файлам с диска не обращался...

Или лучше в гугле напиши, как поиск делается, и читай-читай-читай =(((

Спустя 37 секунд (27.08.2010 - 13:59) liver1981 написал(а):
amazing, дело в том что я только проверял слова из текста статьи про фотошоп и он их находит.
выходит что работает не только description - вот что странно. но некоторые слова из заметок не находит
ошибка та же

Спустя 2 минуты, 43 секунды (27.08.2010 - 14:01) liver1981 написал(а):
inpost, дело в том что я только что исправил на SELECT * FROM но та же ошибка
за видеоуроками следил внимательно насколько можно
не получается найти ошибку
кто нить если можно посмотрите папки?
http://up.iteam.ua/86329

Спустя 2 минуты, 4 секунды (27.08.2010 - 14:04) linker написал(а):
inpost
Нет ни какой разницы указывать отдельные поля или все. Условие не зависит от выбираемых столбцов. И если посмотрите на код
if (mysql_num_rows($result) > 0)
{
...
}
else
{
echo "<p>Ошибка!Нет такой записи</p>";
exit ();
}
то заметите, что отрабатывает else. Во-вторых, это не ошибка в запросе, ибо выше есть обработчик. Я бы для начала проверил содержимое $search, а вдруг там не то, что ожидалось.

Спустя 18 минут, 18 секунд (27.08.2010 - 14:22) liver1981 написал(а):
linker, скажите а как это проверить?

Спустя 2 минуты, 1 секунда (27.08.2010 - 14:24) linker написал(а):
Ну перед запросом напиши
echo $search;
или можно на сам запрос посмотреть
echo "SELECT id, title, description, date, author, mini_img, view FROM data WHERE MATCH(text) AGAINST('$search')";

Спустя 8 минут, 48 секунд (27.08.2010 - 14:33) liver1981 написал(а):

<td valign='top'>
<?php

echo $search;
$result = mysql_query("SELECT * FROM data WHERE MATCH(text) AGAINST('$search')", $db); //выборка из базы


linker, я написал вот так но он на страницу поиска не через submit не пускает

Спустя 38 секунд (27.08.2010 - 14:33) liver1981 написал(а):
linker, а что на запрос смотреть ? что в нем не так?

Спустя 1 минута, 46 секунд (27.08.2010 - 14:35) linker написал(а):
А ты смотри как обычно, через сабмит. Вбей что хочешь найти и кликай на кнопку.
Просто иногда полезно знать как выглядит то, что уйдет мускулу в качестве запроса.

Спустя 24 минуты, 39 секунд (27.08.2010 - 15:00) liver1981 написал(а):
linker, вбиваю слово background в поиск
оно в блоге есть. пишет : Ошибка!Нет такой записи
ну это же не так. слово background там есть
ну как же быть? куда ещё что прописывать?

Спустя 20 минут, 52 секунды (27.08.2010 - 15:21) linker написал(а):
Я ж говорю, выведи на страницу текст того запроса, который отдается на съедение функции mysql_query(), а дальше будет видно.

Спустя 8 часов, 2 минуты, 4 секунды (27.08.2010 - 23:23) liver1981 написал(а):
linker, извините, а как это сделать?

Спустя 6 часов, 37 минут, 6 секунд (28.08.2010 - 06:00) twin написал(а):
Вместо mysql_query( напиши print(

Спустя 18 часов, 22 минуты, 42 секунды (29.08.2010 - 00:22) liver1981 написал(а):
twin, прописал
теперь вобще страничку не выводит а пишет:
Parse error: syntax error, unexpected ';' in Z:\home\localhost\www\phpblog\view_search.php on line 50

Спустя 7 часов, 4 минуты, 18 секунд (29.08.2010 - 07:27) liver1981 написал(а):
уважаемые форумчане, ну что не посмотрит никто?

Спустя 1 час, 34 минуты, 57 секунд (29.08.2010 - 09:02) twin написал(а):
На что смотреть то? Там все переделывать надо. За тебя никто не станет.
Ты перепиши по человечески, оно само наверняка заработает. А нет - тогда и показывай, посмотрим.

Спустя 2 часа, 14 минут, 24 секунды (29.08.2010 - 11:16) Onehp написал(а):
Пересмотри урок с поиском wink.gif

Спустя 19 часов, 16 минут, 46 секунд (30.08.2010 - 06:33) liver1981 написал(а):
Onehp, да вот пересмотрел ну не могу найти ошибку хоть ты его тресни(

Спустя 8 минут, 34 секунды (30.08.2010 - 06:41) twin написал(а):
Onehp
Цитата
Пересмотри урок с поиском

Давай его сюда. Только код, бредни не нужно.

Спустя 25 минут, 47 секунд (30.08.2010 - 07:07) liver1981 написал(а):
twin, вот пожалуйсат, код странички view_search.php
надеюсь я всё правильно понял и это то о чём Вы говорите


<? include ("blocks/bd.php");
if (isset($_POST['submit_s']))
{
$submit_s = $_POST['submit_s'];
}
if (isset($_POST['search']))
{
$search = $_POST['search'];
}
if (isset($submit_s))
{
if (empty($search) or strlen($search) < 4)
{
exit ("<p>Поисковый запрос не введен, либо он менее 4-х символов.</p>");
}
$search = trim($search);
$search = stripslashes($search);
$search = htmlspecialchars($search);
}
else
{
exit("<p>Вы обратились к файлу без необходимых параметров.</p>");
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta
http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title><?
echo "Заметки по запросу - $search "; ?></title>
<link
href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<table
width="690" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" class="main_border">
<?
include ("blocks/header.php"); ?>
<tr>
<td
valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<?
include ("blocks/lefttd.php"); ?>
<td
valign='top'>
<?
$n=0; include ("blocks/nav.php"); ?>
<?
$result = mysql_query("SELECT id,title,description,date,author,mini_img,view FROM data",$db);
if (!$result)
{
echo "<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору admin@ruseller.com. <br> <strong>Код ошибки:</strong></p>";
exit(mysql_error());
}
if (mysql_num_rows($result) > 0)
{
$myrow = mysql_fetch_array($result);
do
{

//$r = $myrow["rating"]/$myrow["q_vote"];
//$r = intval($r);

printf ("<br><table align='center' class='post'>
<tr>
<td class='post_title'>
<p class='post_name'><img class='mini' align='left' src='%s'><a href='view_post.php?id=%s'>%s</a></p>
<p class='post_adds'>Дата добавления: %s</p>
<p class='post_adds'>Автор урока: %s</p></td>
</tr>
<tr>
<td>%s <p class='post_view'>Просмотров: %s    Рейтинг: <img src='img/%s.gif'></p></td>
</tr>
</table><br><br>"
,$myrow["mini_img"],$myrow["id"],$myrow["title"], $myrow["date"],$myrow["author"],$myrow["description"], $myrow["view"], $r);
}
while ($myrow = mysql_fetch_array($result));
}
else
{
echo "<p>Информация по Вашему запросу на блоге не найдена.</p>";
exit();
}

?>
</td>
</tr>
</table></td>
</tr>
<?
include ("blocks/footer.php"); ?>
</table>
</body>
</html>


Спустя 58 минут, 30 секунд (30.08.2010 - 08:06) linker написал(а):
Чего-то я потерял уже нить разговора, а где запрос с поиском?

Спустя 30 минут, 59 секунд (30.08.2010 - 08:37) liver1981 написал(а):
linker, вот тут в папке все есть
http://up.iteam.ua/86329

Спустя 44 минуты, 34 секунды (30.08.2010 - 09:21) linker написал(а):
Пробуй такой запрос
$Sql = "SELECT `id`, `title`, `description`, `date`, `author`, `mini_img`, `view` FROM  `data` "
. "WHERE MATCH (`text`) AGAINST ('+$search' IN BOOLEAN MODE)";
Плюс у тебя еще возможные проблемы с кодировкой.

Спустя 47 минут, 15 секунд (30.08.2010 - 10:08) amazing написал(а):
liver1981, запрос который написал linker, с ним у меня все работает, только что проверил, так что пробуй, и благодари его! smile.gif

Спустя 31 минута, 56 секунд (30.08.2010 - 10:40) liver1981 написал(а):
linker, всё работает
отдельное спасибо огромное
который раз восхищаюсь Вашим профессионализмом
желаю творческих успехов

amazing, да сейчас всё ок.

спасибо также всем кто участвовал
форуму процветания и всех благ.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.