Есть вот такая функция (Пытаюсь прикрутить пагинацию к выводу). Но на выходе она выдаёт ошибкой синтаксиса SQL, то есть первое значение LIMIT (Из переменной $start) прилетает отрицательным, и зеркальным значению $num. В данном случае это -2, 2. И из-за этого всё ломается. Как я понял, значение $total = 0 по итогам операций, что и приводит к такому итогу. Вот я и не понимаю, то ли количество из бд не приходит, то ли ещё что. Но если бы записи считались правильно, то как я понимаю, скрипт бы работал исправно. Битый час ломаю голову над этим вопросом, укажите мне на ошибку.
function articles_all($link){
$num = 2;
$page = $_GET['page'];
db_connect();
$result00 = mysql_query("SELECT COUNT(*) FROM articles");
$temp = mysql_fetch_array($result00);
$posts = $temp[0];
$total = (($posts - 1) / $num) + 1;
$total = intval($total);
$page = intval($page);
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
$start = $page * $num - $num;
//Запрос
$query = "SELECT * FROM articles ORDER by id DESC LIMIT $start, $num";
$result = mysqli_query($link, $query);
if (!$result)
die(mysqli_error($link));
// Извлечение из бд
$n = mysqli_num_rows($result);
$articles = array();
for ($i = 0; $i < $n; $i++)
{
$row = mysqli_fetch_assoc($result);
$articles[] = $row;
}
return $articles;
}
Новый код, по-прежнему нерабочий.
function articles_all($link){
$num = 2;
$page = $_GET['page'];
if(empty($page) or $page < 0) $page = 1;
$link;
$res = mysql_query("SELECT COUNT(*) FROM articles");
$rowz = mysql_fetch_row($res);
$posts = $rowz[0]; // всего записей
$total = intval((($posts - 1) / $num) + 1);
$page = intval($page);
if($page > $total) $page = $total;
$start = $page * $num - $num;
//Запрос
$query = "SELECT * FROM articles ORDER by id DESC LIMIT $start, $num";
$result = mysqli_query($link, $query);
if (!$result)
die(mysqli_error($link));
// Извлечение из бд
$n = mysqli_num_rows($result);
$articles = array();
for ($i = 0; $i < $n; $i++)
{
$row = mysqli_fetch_assoc($result);
$articles[] = $row;
}
return $articles;
}
Проверял так: Загружал без проверки if($page > $total) $page = $total; и страница стартовала, отображала количество записей указанных в $num. Но навигация не отображалась, так как в ней проверка. Но если к примеру писать просто в строку /index.php?page=2, то страница отображает следующие 2 записи.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Здравствуйте! В университете начали изучать подпрограммы, пока не могу толком в них разобратьсяЕсть матрица размерностью MxN
Помогите решить этот пример: y=cos(1+cos(2+