如何使用分页链接

时间:2013-05-01 22:20:42

标签: php html pagination

大家好我一直在教自己的分页,不过我有一个关于使用链接查看下一组结果的一般性问题。

我可以使用下面的代码在表格中显示数据。使用我的第二个代码示例,我可以显示链接,例如1,2,3,4接下来。数字会根据应显示的记录数而变化。虽然当我按下链接查看下一页结果时我的问题就到了。页面重新加载但显示相同的结果集。任何帮助或帮助将不胜感激。

以下代码用于计算记录,并为任何时候屏幕上显示的记录数量设置变量。

<?          
$per_page = 4;
$start = 0;

$result = mysql_query("select * from blogentry WHERE approve = 'Y' order by timeleft ASC");

//count records
$record_count = mysql_num_rows($result);        
//count max pages
$max_pages = $record_count / $per_page; //may come out as decimal

 if (!$start)
  $start = 0;   

$get = mysql_query("select * from blogentry WHERE approve = 'Y' order by timeleft ASC LIMIT $start, $per_page");

while ($row = mysql_fetch_assoc($get))  
{   
                $usn1 = $row['username'];
                $tml1 = $row['timeleft'];
                $bge1 = $row['blogentry'];
                $irm1 = $row['ResponceMess'];

echo "<table>"
Table code intentionally left out 
echo "</table>"

下面的代码用于显示分页,但是当按下链接时会显示相同的结果:

//setup prev and next variables
$prev = $start - $per_page;
$next = $start + $per_page;

if(!($start<=0))
echo "<a href'messages.php?start=$prev'>Prev</a>";
//set variable for first page
$i=1;

//show page numbers
for ($x = 0; $x < $record_count; $x = $x + $per_page)
{
 if ($start != $x)
echo " <a href='messages.php?start=$x'>$i</a> ";
else
echo " <a href='messages.php?start=$x'><b>$i</b></a> ";
$i++;
}

//show next button
if (!($start >= $record_count - $per_page))
   echo " <a href='messages.php?start=$next'>Next</a>";                 
?>

2 个答案:

答案 0 :(得分:1)

您需要检查$ _GET ['start']变量并查看它是否已设置。如果已设置,则make $ start = $ _GET ['start']。否则,您的查询将始终以第一个结果开始,而不是从您想要的结果开始。您可以添加以下内容:

$start = $_GET['start'] ? $_GET['start'] : 0 ; 

到页面顶部而不是:

$start = 0;

也是这个查询:

$get = mysql_query("select * from blogentry WHERE approve = 'Y' order by timeleft ASC LIMIT $start, $per_page");

应该是:

$get = mysql_query("select * from blogentry WHERE approve = 'Y' order by timeleft ASC LIMIT $start, $start + $per_page");

这是因为限制条款采用起始索引和结束索引而不是起始索引和所需记录数。

答案 1 :(得分:1)

问题是你正在硬编码$start var并且你没有从$ _GET中获取值...尝试下一个:

   $start = isset($_GET['start']) ? $_GET['start'] : 0;

最明白的是:

   if(isset($_GET['start'])) {
        $start = $_GET['start'];
   }else{
        $start = 0;
   }