Вот форма для отправки кол-ва сообщений:
<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 спокойно передается в адресной строке, как раз в статье так и показывается.
хм, а зачем форма О_О, ведь 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(там где форма) нет, буду разбираться. Спасибо большое за код, он работает.