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

Форум PHP

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

 

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

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

тема: постраничная навигация
 
 автор: dedev   (10.11.2006 в 10:24)   письмо автору
 
 

Подскажите, где в коде ошибка, не работает постраничная навигация, на первой странице выводится все правильно, ссылка для перехода появляется, при переходе по ссылке далее пустая страница

<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"> ИЛИ &nbsp;&nbsp;
<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>&nbsp;&nbsp;");
}
if (
$count['count(*)'] > ($page 1)) {
  echo(
"&nbsp;&nbsp;<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>

   
 
 автор: ec_stasis   (10.11.2006 в 11:18)   письмо автору
 
   для: dedev   (10.11.2006 в 10:24)
 

Пустая страница - это совсем ничего или нету данных из БД? Что вью сорс показывает?

   
 
 автор: elenaki   (10.11.2006 в 11:41)   письмо автору
 
   для: ec_stasis   (10.11.2006 в 11:18)
 

вы делаете переход на новую страницу. там снова делается запрос к базе, уже с другим
значением $page. а условия запроса где? надо и их тоже передавать по ссылке. в таких
случаях полезно выводить на экран текст запроса и проверять, ЧТО вы выбираете из базы.

   
 
 автор: dedev   (10.11.2006 в 12:36)   письмо автору
 
   для: ec_stasis   (10.11.2006 в 11:18)
 

это совсем ничего, в базе данные есть

   
 
 автор: dedev   (10.11.2006 в 12:37)   письмо автору
 
   для: dedev   (10.11.2006 в 12:36)
 

ткните пальцем, что делать, невыходит

   
 
 автор: elenaki   (10.11.2006 в 12:44)   письмо автору
 
   для: 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"; 

и смотреть, что выведет

   
 
 автор: dedev   (10.11.2006 в 13:32)   письмо автору
 
   для: elenaki   (10.11.2006 в 12:44)
 

помогите исправить, моего опыта недостаточно

   
 
 автор: elenaki   (10.11.2006 в 14:35)   письмо автору
 
   для: dedev   (10.11.2006 в 13:32)
 

как же мы поможем, если вы не делаете, что вам говорят? надо видеть запрос, чтобы
понять, почему ничего не выводится. может, там ошибка вовсе не в запросе, а в PHP -
для этого вас попросили посмотреть, что показывает браузер по view source. от вас
требyется вставить одну строку в код и запустить скрипт. строка приведена выше.

   
 
 автор: dedev   (10.11.2006 в 16:31)   письмо автору
 
   для: 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

   
 
 автор: elenaki   (10.11.2006 в 16:56)   письмо автору
 
   для: dedev   (10.11.2006 в 16:31)
 

почему LIMIT 0, 1 ?

вы переходите на нулевую страницу? в GET- параметре ссылки вы что видите?
когда наводите курсор на ссылку для следующей страницы?

может, имеет смысл написать так:

// Выбираем количество записей  
$posts = sqlite_query($db, "$query1 ORDER BY id LIMIT ".$_GET["page"].", 1"); 

   
 
 автор: dedev   (10.11.2006 в 18:42)   письмо автору
 
   для: 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

   
 
 автор: elenaki   (11.11.2006 в 19:06)   письмо автору
 
   для: dedev   (10.11.2006 в 18:42)
 

получается, что не видна переменная page из URL....
1. попробуйте вывести просто эту переменную echo $_GET["page"];
2. попробуйте дать запросу число вместо переменной ... LIMIT 1,1 (у вас там, кажется, по одной записи на страницу?)

записей-то точно больше одной? ;) а то, может, мы ищем черную кошку в темной комнате, когда ее там нет?

   
 
 автор: dedev   (11.11.2006 в 22:02)   письмо автору
 
   для: elenaki   (11.11.2006 в 19:06)
 

echo $_GET["page"]; выдал
Notice: Undefined index: page in z:\home\test1.ru\www\poisk.php on line 46
дал запросу число вместо переменной результат тотже
записей точно больше одной

   
Rambler's Top100
вверх

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