[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите доделать постраничную навигацию
Вадим
Сама навигация прекрасно работает, но мне нужно чтоб ы пользователь сам указывал какое кол-во сообщений он хочет видеть.

Вот форма для отправки кол-ва сообщений:

<form name="" action="read.php" method="get"> 
<input
type = 'text' name = "col" value='5'>
<p><input
type="submit" name="col" value="Назначить"> </p>


Пытаюсь принять и записать в $pnumber с помощью GET, выводит ошибку.

$n=mysql_query(" SELECT count(*) FROM book");
$all=mysql_result($n,0,0);
if ($all)
{
//записей на страницу
//$pnumber = 3;

$pnumber = $_GET['col']; //вот так пытаюсь сделать

//создаем объект

$n=new Navigator($all,$pnumber);

$result = mysql_query("SELECT * FROM book order by id desc LIMIT {$n->start()},$pnumber ");


while($r = mysql_fetch_array($result)) {


echo "
<p><TABLE BORDER WIDTH=600 align=center>
<TR>
<TD WIDTH=100>Почта:
$r[email]</TD>
<TD WIDTH=100>Имя
$r[name]</TD>
<TD WIDTH=400>Сообщение:
$r[text]</p>
</TD>
</TR>
</TABLE>"
;

}
//печатаем навигацию
echo $n->navi();
}


Ошибка:
Warning: Division by zero in X:\home\localhost\www\lab2\Navigator.class.php on line 15

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in X:\home\localhost\www\lab2\read.php on line 32


Файл навигатор класс:
<?php
class
Navigator
{
function __construct($all,$pnumber,$query='')
{
$this->all=$all;

$this->pnumber=$pnumber;
$this->query=$query;
$this->page=isset($_GET['page']) ? (int)$_GET['page'] : 1;
}

function start()
{
$this->num_pages=ceil($this->all/$this->pnumber);

if (isset($_GET['last']))
$this->page=$this->num_pages;

$this->start=$this->page*$this->pnumber-$this->pnumber;

if ($this->page > $this->num_pages || $this->page < 1)
{
$this->page=1;
$this->start=0;
}

return $this->start;
}

function navi()
{

if ($this->num_pages<2)
return '';

$buff='<div class="navigator">';

for($pr = '', $i =1; $i <= $this->num_pages; $i++)
{
$buff.=
$pr=(($i == 1 || $i == $this->num_pages || abs($i-$this->page) < 2) ? ($i == $this->page ? " [$i] " : ' <a href="'.$_SERVER['SCRIPT_NAME'].'?page='.$i.'&'.$this->query.'">'.$i.'</a> ') : (($pr == ' ... ' || $pr == '')? '' : ' ... '));
}
return $buff.'</div>';
}

}

Явно что -то не то делаю, помогите пожалуйста.




Спустя 41 секунда (21.05.2011 - 16:15) sharki написал(а):

Спустя 23 минуты, 7 секунд (21.05.2011 - 16:38) Guest написал(а):
Цитата (sharki @ 21.05.2011 - 13:15)
http://irbis-team.com/15/21

Все это там хорошо описано, но навигация у меня есть и работает, нужно лишь как то отправить через форму число в переменную pnumber, в статье кстати я не нашел где автор это делал. Число отправляется, но работать отказывается.

Спустя 4 минуты, 49 секунд (21.05.2011 - 16:43) sharki написал(а):
Guest
хм, а зачем форма О_О, ведь GET спокойно передается в адресной строке, как раз в статье так и показывается.

Спустя 2 минуты, 2 секунды (21.05.2011 - 16:45) Guest написал(а):
sharki так мне нужно чтобы пользователь вводил кол-во сообщений на странице.

Спустя 2 минуты, 22 секунды (21.05.2011 - 16:47) T1grOK написал(а):
И что?! Опять же передавай ГЕТом.

Спустя 33 секунды (21.05.2011 - 16:48) sharki написал(а):
Тогда надо получить значение с поля, и закинуть в сессию, чтобы каждый раз не делать отправку.

Спустя 2 минуты, 40 секунд (21.05.2011 - 16:50) Guest написал(а):
 <form name="" action="read.php" method="get"> 
<input
type = 'text' name = "col" value='5'>
<p><input
type="submit" name="col" value="Назначить"> </p>


 $pnumber = $_GET['col']; //вот так пытаюсь сделать


Да вроде ж так и делаю.

Спустя 1 минута, 25 секунд (21.05.2011 - 16:52) sharki написал(а):
Guest
Сделай сессией, не ищи трудностей)
Если не получится, то я подскажу как запускать тот класс (который в статье), там все элементарно, и справится с твое задачей

Спустя 2 минуты, 33 секунды (21.05.2011 - 16:54) Guest написал(а):
sharki да еслиб я знал как это делается, по такой ерунде сюда бы не писал=)

Спустя 4 минуты, 56 секунд (21.05.2011 - 16:59) sharki написал(а):
Один раз отправляем форму и вставляем код в обработчик.

<form name="" action="read.php" method="get"> 
<input
type = 'text' name = "col" value='5'>
<p><input
type="submit" name="ok" value="Назначить"> </p>


if(!empty($_SESSION['col']) and !isset($_GET['ok']))
$pnumber = $_SESSION['col'];
else {
$_SESSION['col'] = $_GET['col'];
$pnumber = $_GET['col'];
}

//создаем объект
$n=new Navigator($all,$pnumber);

Спустя 13 минут, 43 секунды (21.05.2011 - 17:13) Guest написал(а):
sharki все равно те же ошибки как и без сессий если передавать

Warning: Division by zero in X:\home\localhost\www\lab2\Navigator.class.php on line 15

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in X:\home\localhost\www\lab2\read.php on line 36



Спустя 5 минут, 3 секунды (21.05.2011 - 17:18) sharki написал(а):
Ну вообще вторая ошибка говорит о том, что не корректный запрос.
Попробуй так.
mysql_query("SELECT * FROM book order by id desc LIMIT ".$n->start().",".$pnumber);

Спустя 10 минут, 44 секунды (21.05.2011 - 17:29) Guest написал(а):
Цитата (sharki @ 21.05.2011 - 14:18)
Ну вообще вторая ошибка говорит о том, что не корректный запрос.
Попробуй так.
mysql_query("SELECT * FROM book order by id desc LIMIT ".$n->start().",".$pnumber);

Те же ошибки, тут что-то с передачей этого параметра в Navigator.class.php

Спустя 9 минут, 30 секунд (21.05.2011 - 17:38) Вадим написал(а):
Вообщем в файл read.php все отправляется, и выводятся сообщения как нужно, а вот обратно нет index.php(там где форма) нет, буду разбираться. Спасибо большое за код, он работает.
Быстрый ответ:

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