Скрипт нумерации страниц последней страницы

0

Я создал php-скрипт после учебника, но у него есть ошибка. Он отображает в последней странице информацию, которая находится на предыдущей странице - это потому, что $ perpage. Как я могу отображать только те данные, которые пока не отображаются.

ПРИМЕР. Если я установил $ perpage в 3, и у меня есть 7 записей (с именем 1,2,3,4,5,6,7) на первой странице - 1,2,3 на странице 2, это 4,5,6 и на последняя страница - 5,6,7 (я хочу отображать только запись 7)

$query = mysql_query("SELECT ID FROM clanek"); 
$count = mysql_num_rows($query);

$perpage = 3; // řádků na stránku
$pages_count  = ceil($count / $perpage); //celkem stránek zaokrohleno
$page = isset($_GET['page']) ? $_GET['page'] : 1;
$is_first = $page == 1; //první stránka
$is_last  = $page == $pages_count; 
$prev = max(1, $page - 1); 
$next = min($pages_count , $page + 1); /

$data = mysql_query("SELECT DATE_FORMAT(datum_pridani_c,'%d.%m.%Y %H:%i:%s')as datumcas,nazev,kratky_popis,ID FROM clanek ORDER BY datum_pridani_c DESC LIMIT ".($page - 1).", ".$perpage);  /

while ($zaznam = mysql_fetch_array($data)) {

//some info her
}

if($pages_count>0) {
if(!$is_first) { 
echo '<a class="predchozistranka" href="index.php?page='.$prev.'">Předchozí</a>';
}
echo '<span class="stranka">Stránka '.$page.' / '.$pages_count.'</span>';
if(!$is_last) { 
echo '<a class="dalsistranka" href="index.php?page='.$next.'">Další</a>';
}
}
Теги:
pagination

1 ответ

1
Лучший ответ
$data = mysql_query("SELECT DATE_FORMAT(datum_pridani_c,'%d.%m.%Y %H:%i:%s')as datumcas,nazev,kratky_popis,ID FROM clanek ORDER BY datum_pridani_c DESC LIMIT ".($page - 1).", ".$perpage); 

Прошло некоторое время с тех пор, как я использовал MySQL, но сейчас я начал работу с Workbench, и я вижу, что синтаксис LIMIT - это смещение LIMIT, rowcount. Документ также так говорит http://dev.mysql.com/doc/refman/5.0/en/select.html

Затем для вашего запроса вместо ($page - 1), $perpage, он должен быть ($page - 1)*$perpage, $perpage

$query = mysql_query("SELECT ID FROM clanek"); 
$count = mysql_num_rows($query);

Неприемлемый, но приведенный выше код очень неэффективен для получения общего количества строк. Было бы лучше, если вы используете SELECT count(id) FROM clanek

Ещё вопросы

Сообщество Overcoder
Наверх
Меню