|
|
|
| Доброе время суток.
Помогите,пожалуйста,разобраться с ошибкой.
Попытался сделать постраничную навигацию,пример которой находится на этом сайте,но у меня выдаёт ошибку :
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-1, 1' at line 1.
Запрос к БД на вывод статей я делаю так:
$art=mysql_query("SELECT id,description,title,date,author,view,rating,q_vote FROM post_sn ORDER BY id DESC LIMIT $start, $num",$bd);
| .
Если убрать строку ,то статьи выводятся нормально.
Подскажите как можно исправить ошибку? | |
|
|
|
|
|
|
|
для: slo_nik
(03.09.2008 в 02:43)
| | переменная $start имеет отрицательное значение -1.
из приведённного кода невидно откуда Вы её получаете | |
|
|
|
|
|
|
|
для: xx77
(03.09.2008 в 03:19)
| | Получаю переменню $start
$pnav = mysql_query("SELECT `str` FROM `options`",$bd);
$p_nav = mysql_fetch_array($pnav);
$num = $p_nav["str"];
// Извлекаем из URL текущую страницу
$page = $_GET['page'];
// Определяем общее число сообщений в базе данных
$pnav_n = mysql_query("SELECT COUNT(*) FROM post_sn");
$temp = mysql_fetch_array($pnav_n);
$posts = $temp[0];
// Находим общее число страниц
$total = intval(($posts - 1) / $num) + 1;
//$total = intval($total);
// Определяем начало сообщений для текущей страницы
$page = intval($page);
// Если значение $page меньше единицы или отрицательно
// переходим на первую страницу
// А если слишком большое, то переходим на последнюю
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
// Вычисляем начиная с какого номера
// следует выводить сообщения
$start = $page * $num - $num;
|
| |
|
|
|
|
|
|
|
для: Slo_Nik
(03.09.2008 в 11:32)
| | По моему, ошибка здесь:
// Если значение $page меньше единицы или отрицательно
if(empty($page) or $page < 0) $page = 1;
Значение $num , кстати, тоже странное для постраничной навигации. | |
|
|
|
|
|
|
|
для: Trianon
(03.09.2008 в 11:44)
| | наверное можно попробовать как-то так
<?
if (
!($pnav = mysql_query('SELECT COUNT(post_sn.id), options.str FROM post_sn, options GROUP BY "COUNT(post_sn.id)"',$bd))
||
!mysql_num_rows($pnav)
)
exit('<h3>произошла ошибка:</h3>' . mysql_error() . "<hr/>\n") ;
list($total, $num) = mysql_fetch_row($pnav); // получить
$total = ceil($total / $num);
$page =( isset($_GET['page']) ) ? (int) $_GET['page']: 1;
if($page < 1) $page = 1; // если меньше
else if($page > $total) $page = $total; // если больше
$start = $num * ($page - 1);// UPD// поправил
// не сильно проверял
|
| |
|
|
|
|
|
|
|
для: Trianon
(03.09.2008 в 11:44)
| | $num берётся с таблицы БД, там задано кол-во выводимых статей на страницу. | |
|
|
|
|
|
|
|
для: Slo_Nik
(03.09.2008 в 13:08)
| | Странно то, что это кол-во - единица. :)) | |
|
|
|