Loading...
Обучение/Помощь новичкам | Постраничный вывод
Здравствуйте мастера. Хотел сделать, а точнее уже сделал постраничный вывод страниц(Статьи). Вот код:

<?php

$sum = 1; // число записей на странице
$result = mysql_query("SELECT count(*) as `id` from `stat` WHERE `cat_id` = " .(int)$_GET['id']);
//count -- считает количество элементов массива
$arr = mysql_fetch_row($result); // возвращает неассоциативный массив
$rec = $arr[0]; // общее число записей в таблице

// если страницы не существует, выводим первую страницу
if(!isset($_GET['str']))
{$str = 0;}
else
{$str = $_GET['str'];}

// получем номер начальной записи страницы
$start = $str * $sum;

// запрос
$statid = mysql_query("SELECT * FROM `stat` WHERE `cat_id` = ".$_GET['id']." LIMIT ".$start.", ".$sum." ");//$r = mysql_query("SELECT * FROM `stat` ");
$n = mysql_num_rows($statid); // возвращаем число рядов результата запроса

// если страница не первая, выводим ссылку НАЗАД
if ($str > 0)
{
$p = $str - 1;
echo '<a href="/cat.php?id='.$_GET['id'].'&str='.$p.'"">НАЗАД</a>';
}

$str++; // увеличиваем переменную $str на единицу;
// выводим ссылку на следующие пять записей, если она есть,
// то есть число записей, которые нужно вывести,
// и смещение не превышает общего числа записей

if($start + $n < $rec){
echo '<a href="cat.php?id='.$_GET['id'].'&str='.$str.'">ДАЛЕЕ</a>';
}
// дальше выводим записи




Вообщем, все нормально выводит. На каждой странице по 1 статьи. Вот ссылка которая получается:
сайт.ру/cat.php?id=1&str=2

Всего две страницы. Считая нулевую - 3. Блогов тоже 3, поэтому три страницы. Проблема в чем? Если ввести в строку любую цифру то выводится обычная страница без Статей и кнопка назад. Как сделать правильно, закидывания пользователя на первую страницу если он ввел там номер страницы которой не существует?
if(empty($id) || !$stat = mysql->fetch("SELECT * FROM Таблица WHERE id = ?", array($_GET['id']))) {

header('Location: /');
exit;

}
Попробуй должно получится
________
посл. ред. 02.04.2018 в 20:14; всего 2 раз(а); by BaSHkiR
BaSHkiR (02.04.2018 в 20:13)
if(empty($id) || !$stat = mysql->fetch("SELECT * FROM Таблица WHERE id = ?", array($_GET['id']))) {

header('Location: /');
exit;

}
Попробуй должно получится


Это на ПДО?

$id = $_GET['str'];
if(empty($id) || !$stat = mysql_fetch_assoc("SELECT * FROM `stat` WHERE `id` = ?", array($_GET['id']))) {

header('Location: /');
exit;

Вот так это должно будет выглядить? а то не пойму ))
$id = _string(_num($_GET['id']));
if($id && $id != $stat['id']) {
$stat = mysql_query('SELECT * FROM `stat` WHERE `id` = "'.$id.'"');
$stat = mysql_fetch_array($stat);
if(!$stat) {
header('location: /');
exit;
}
}
Вот тебе на mysql
________
посл. ред. 02.04.2018 в 22:16; всего 1 раз(а); by BaSHkiR
BaSHkiR (02.04.2018 в 22:16)
$id = _string(_num($_GET['id']));
if($id && $id != $stat['id']) {
$stat = mysql_query('SELECT * FROM `stat` WHERE `id` = "'.$id.'"');
$stat = mysql_fetch_array($stat);
if(!$stat) {
header('location: /');
exit;
}
}
Вот тебе на mysql

Бт код сразу видно функции бт
Чтобы определить нечетное число что нужно сделать? на сделать остаток % на 2?
if ($arr[0] == 1) {
$page = $arr[0];
}else{
$page = $arr[0]%2;
}
if ($start > $arr[0]) {
$_SESSION['err'] = 'Страницы не существует!';
header('location: /');
exit();
}


Вот этот код как вам? вроде не допускает на страницу где нет блогов)
Переменная $start - это сколько статей позади. Тоесть наверху как Лимит $start, $num
В массиве $arr находиться количество статей в категории. Тоесть если там ток 1 статья - все норм, так и останется. Если жи нет то делим на остаток на 2.
Дальше проверяется, Если старт больше арр. Хотя стоп. Я сам не понимаю что я написал. АХАХАХХ ржу от себя. Вот сейчас на этом месте мозг отключился ЛОЛ))
Аааа, я там даже $page не использую. Хоспаде.)) Извините за мои глюки_)
Вот так думаю правильней будет

<?
//$start переменная в которой находится число пройденных статей
//$arr[0] массив в котором находится число, количество статей
if ($start >= $arr[0]) {//Проверяет, если старт больше или равно
$_SESSION['err'] = 'Страницы не существует!';//Оповещение
header('location: /cat.php?id='.(int)$_GET['id']); //Кидает на первую страницу
exit();
/*Получается если статей к примеру 5 и как только пользователей введет другое число в строку, сразу будет проверятся чтобы...блин опять ахаха) я не шучу. Ладно вообщем вы поняли)*/
}
Онлайн: 4
Время:
Gen. 0.1143
(c) Bym.Guru 2010-2026