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

Форум PHP

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

 

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

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

тема: опять,25 постраничная навигация
 
 автор: dedev   (23.11.2006 в 10:53)   письмо автору
 
 

Помогите, пожалуйста, с постраничной навигацией, ничего не выходит

<form action="" method="POST">
<input type="text" name="zpr" size="50">
<input type="submit" value="&nbsp;&nbsp;поиск&nbsp;&nbsp;" 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"
  } 
  if(!empty(
$tmp)) 
  { 
    
$query "SELECT count(*) FROM metadata WHERE ".implode($rad "$tmp); 
    
$query1 "SELECT * FROM metadata WHERE ".implode($rad "$tmp);
}
// Открываем БД
  
$db sqlite_open("inc/sity.db"); 

// Выбираем количество записей
$posts sqlite_query($db"$query1 ORDER BY id LIMIT 30");

// Выводим сообщения
while ($arr sqlite_fetch_array($posts))

    echo(
"<p><a href=\"".$arr['page'].".htm\">".$arr['title']."</a> ...</p>"); 
  }
?>

   
 
 автор: elenaki   (23.11.2006 в 11:34)   письмо автору
 
   для: dedev   (23.11.2006 в 10:53)
 

вам нужна переменная $start_from и limit надо писать так: limit $start_from, 30 - т.е. выбираем
30 записей, начиная со строки номер ... а номер этот изначально равен 0, а потом будет
передаваться в ссылке на следующие страницы...

а ссылок на след./пред. страницы я что-то не заметила.
PS когда что-то спрашиваете и приводите пример кода, приводите и ошибки, которые выдает
база или скриншот. "ничего не выходит" - это не ошибка. выведите на экран запрос, когда он
строится динамически, из скрипта, бывает полезно на него глянуть и кинуть в phpmyadmin для проверки.

   
 
 автор: dedev   (23.11.2006 в 11:47)   письмо автору
 
   для: elenaki   (23.11.2006 в 11:34)
 

Ссылок следующая/предыдущая страница нет, по причини того, что начато все с нуля, постраничной навигации пока нет вообще.
Вопрос как ее прикрутить к этому коду
Вариант который у меня не работает, прелагается, но лучше помогите с первым вариантом, так сказать с чистого листа

<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>");  
  } 
?> 

   
 
 автор: elenaki   (23.11.2006 в 12:01)   письмо автору
 
   для: dedev   (23.11.2006 в 11:47)
 

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

   
Rambler's Top100
вверх

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