我能够让我的分页脚本正常工作,一切都很好,除了当你转到第2页时,你可以看到一个第0页,如果你点击它,它什么都不会给你。
我需要修复我当前的代码,这样应用程序就不会显示第0页。
这是必要的代码:
<?php
$total_records = countRecords(); // self explanatory function called here
$total_pages = ceil($total_records / $rec_limit);
$adjacents = 2;
$previousPage = $page - 1;
$nextPage = $page + 1;
$querystring = "";
$start = ($page < $adjacents ? 1 : $page - $adjacents);
$beginning = 1;
$end = ($page > $total_pages - $adjacents ? $total_pages : $page + $adjacents);
foreach($_GET as $key => $value)
{
if($key != "page") $querystring .= "$key=$value&";
}
echo
'<div class="row-fluid">
<div class="span2">'.countRecords()." total records" .'</div>
<div class="container pagination-small">
<ul style="margin: 3px;" class="pager">';
echo @"<li><a href="$targetpage?page=$beginning&$querystring">First</a></li>";
if ($left_rec < $rec_limit)
{
$last = $page - 1;
echo @"<li><a href="$targetpage?page=$previousPage&$querystring">
Previous</a></li>";
for($i= $start; $i <= $end; $i++)
{
echo @"<li " . ((($page)==$i)? "class="active"" : "") . ">
<a href="$targetpage?page=$i&$querystring">$i</a></li>";
}
}
else if($page == 0)
{
for($i= $start; $i <= $end; $i++)
{
echo @"<li " . ((($page)==$i)? "class="active"" : "") . ">
<a href=$targetpage?page=$i&$querystring">$i</a></li>";
}
echo @"<li><a href="$targetpage?page=$nextPage&$querystring">Next</a></li>";
}
else if ($page > 0)
{
$last = $page - 2;
echo @"<li><a href="$targetpage?page=$previousPage&$querystring">
Previous</a></li>";
for($i= $start; $i <= $end; $i++)
{
echo @"<li " . ((($page)==$i)? "class="active"" : "") . ">
<a href="targetpage?page=$i&$querystring">$i</a></li>";
}
echo @"<li><a href="$targetpage?page=$nextPage&$querystring">Next</a><li>";
}
echo @"<li><a href="$targetpage?page=$total_pages&$querystring">Last</a></li>";
echo '<ul></div></div>';
我尽量使代码尽可能短。如果有任何错误,请注意这只是我在这里键入的打字错误。代码有效,但我的问题除外。
既然如此,有人能告诉我如何从分页中删除第0页吗?我已经做了一些研究,但我一直没有成功地将它应用到我的代码中。所以我希望有人能看看我的代码,告诉我如何修改它以使其发挥作用。
我很感激你的帮助。
提前谢谢。
逻辑缺陷:
$start = ($page < $adjacents ? 1 : $page - $adjacents);
如果你在第1页,你会得到
$start = (1 < 2 ? 1 : 1 - 2);
$start = -1; // page negative one? huh?
那么这个循环毫无意义:
foreach($_GET as $key => $value) { ... }
为什么不只是
unset($_GET['page']);
$q = http_build_query($_GET);