|
|
|
| Подскажите, где в коде ошибка, не работает постраничная навигация, на первой странице выводится все правильно, ссылка для перехода появляется, при переходе по ссылке далее пустая страница
<html><head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
<title>Поиск по сайту</title>
</head><body>
<form action="" method="POST">
<input type="text" name="zpr" size="40">
<input type="submit" value="поиск" name="goo"><br>
<input type="radio" name="radio" checked value="or"> ИЛИ
<input type="radio" name="radio" value="and"> И
</form>
<?php
// Получаем данные из формы
if(strlen(@$_POST['zpr'])<3)exit("");
$rad = @$_POST["radio"];
$zapros = @$_POST["zpr"];
// Удаляем символы. Проверка формы на непустой ввод. Удаляет пробелы. Разбиваем строку на слова. Формируем запросы
$zapros = preg_replace("|[^a-zа-яё0-9 ]+|i", "", $zapros);
if(strlen($zapros)<3)exit("Введено недостаточное количество символов");
$zapros = trim($zapros);
$zapros = strtolower($zapros);
$words = preg_split("|[\s]+|",$zapros);
foreach($words as $wrd)
{
$tmp[] = "title LIKE '%$wrd%' and hide = 1 or keywords LIKE '%$wrd%' and hide = 1";
}
if(!empty($tmp))
{
$query = "SELECT count(*) FROM metadata WHERE ".implode(" $rad ", $tmp);
$query1 = "SELECT * FROM metadata WHERE ".implode(" $rad ", $tmp);
}
// Открываем БД
$db = sqlite_open("sity.db");
// Определяем общее количество записей в таблице
$total = sqlite_query($db, $query);
$count = sqlite_fetch_array($total);
// Стартовая точка
if (isset($_GET['page'])) {
$page = trim($_GET['page']);
if (!is_numeric($page)) $page = 0;
if ($page < 0) $page = 0;
} else {
$page = 0;
}
// Выбираем количество записей
$posts = sqlite_query($db, "$query1 ORDER BY id LIMIT ".$page.", 1");
echo "<CENTER>Вы искали '<font color=red>$zapros</font>'<br>";
// Выводим ссылки "далее" и "назад"
if ($page > 0) {
echo("<a href=\"poisk.php?page=".($page - 1)."\">назад</a> ");
}
if ($count['count(*)'] > ($page + 1)) {
echo(" <a href=\"poisk.php?page=".($page + 1)."\">далее</a></CENTER>");
}
// Выводим сообщения
while ($arr = sqlite_fetch_array($posts))
{
echo("<p align=left><a href=\"".$arr['page'].".htm\">".$arr['title']."</a><br>".$arr['description']."...</p><br>");
}
?>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: dedev
(10.11.2006 в 10:24)
| | Пустая страница - это совсем ничего или нету данных из БД? Что вью сорс показывает? | |
|
|
|
|
|
|
|
для: ec_stasis
(10.11.2006 в 11:18)
| | вы делаете переход на новую страницу. там снова делается запрос к базе, уже с другим
значением $page. а условия запроса где? надо и их тоже передавать по ссылке. в таких
случаях полезно выводить на экран текст запроса и проверять, ЧТО вы выбираете из базы. | |
|
|
|
|
|
|
|
для: ec_stasis
(10.11.2006 в 11:18)
| | это совсем ничего, в базе данные есть | |
|
|
|
|
|
|
|
для: dedev
(10.11.2006 в 12:36)
| | ткните пальцем, что делать, невыходит | |
|
|
|
|
|
|
|
для: dedev
(10.11.2006 в 12:37)
| | после этого
// Выбираем количество записей
$posts = sqlite_query($db, "$query1 ORDER BY id LIMIT ".$page.", 1");
|
поставить это
echo "$query1 ORDER BY id LIMIT ".$page.", 1";
|
и смотреть, что выведет | |
|
|
|
|
|
|
|
для: elenaki
(10.11.2006 в 12:44)
| | помогите исправить, моего опыта недостаточно | |
|
|
|
|
|
|
|
для: dedev
(10.11.2006 в 13:32)
| | как же мы поможем, если вы не делаете, что вам говорят? надо видеть запрос, чтобы
понять, почему ничего не выводится. может, там ошибка вовсе не в запросе, а в PHP -
для этого вас попросили посмотреть, что показывает браузер по view source. от вас
требyется вставить одну строку в код и запустить скрипт. строка приведена выше. | |
|
|
|
|
|
|
|
для: elenaki
(10.11.2006 в 14:35)
| |
SELECT * FROM metadata
WHERE title LIKE '%тест%' and hide = 1
or keywords LIKE '%тест%'
and hide = 1 ORDER BY id LIMIT 0, 1
|
| |
|
|
|
|
|
|
|
для: dedev
(10.11.2006 в 16:31)
| | почему LIMIT 0, 1 ?
вы переходите на нулевую страницу? в GET- параметре ссылки вы что видите?
когда наводите курсор на ссылку для следующей страницы?
может, имеет смысл написать так:
// Выбираем количество записей
$posts = sqlite_query($db, "$query1 ORDER BY id LIMIT ".$_GET["page"].", 1");
|
| |
|
|
|
|
|
|
|
для: elenaki
(10.11.2006 в 16:56)
| | выдал
Notice: Undefined index: page in z:\home\localhost\www\poisk.php on line 48
Warning: sqlite_query() [function.sqlite-query]: near ",": syntax error in z:\home\localhost\www\poisk.php on line 48
Далее
Warning: sqlite_fetch_array() expects parameter 1 to be resource, boolean given in z:\home\localhost\www\poisk.php on line 59
|
| |
|
|
|
|
|
|
|
для: dedev
(10.11.2006 в 18:42)
| | получается, что не видна переменная page из URL....
1. попробуйте вывести просто эту переменную echo $_GET["page"];
2. попробуйте дать запросу число вместо переменной ... LIMIT 1,1 (у вас там, кажется, по одной записи на страницу?)
записей-то точно больше одной? ;) а то, может, мы ищем черную кошку в темной комнате, когда ее там нет? | |
|
|
|
|
|
|
|
для: elenaki
(11.11.2006 в 19:06)
| | echo $_GET["page"]; выдал
Notice: Undefined index: page in z:\home\test1.ru\www\poisk.php on line 46
дал запросу число вместо переменной результат тотже
записей точно больше одной | |
|
|
|