分页脚本最后一页

时间:2015-03-07 11:44:53

标签: php pagination

我按照教程创建了php脚本,但它有一个错误。它显示在上一页中的最后一页信息中 - 因为$ perpage。如何仅显示尚未显示的数据。

示例 - 如果我将$ perpage设置为3并且我在第一页上有7条记录(名为1,2,3,4,5,6,7),则第二页的1,2,3是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>';
}
}

1 个答案:

答案 0 :(得分: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 offset,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

会更好