PHP MySql Pagination?


PHP MySql Pagination?

分页真的让我很困惑。我的代码可以工作,但它只显示第一页。下一页不起作用。我只想每页显示3条记录。你必须有另一个查询才能显示第二页的结果吗?

<?php 
 // Connects to your Database 
 mysql_connect("localhost", "root", "") or die(mysql_error()); 
 mysql_select_db("db_pet") or die(mysql_error()); 

 //This checks to see if there is a page number. If not, it will set it to page 1 
 if (!(isset($pagenum))) 
 { 
 $pagenum = 1; 
 } 

 //Here we count the number of results 
 //Edit $data to be your query 
 $data = mysql_query("SELECT * FROM tb_pet") or die(mysql_error()); 
 $rows = mysql_num_rows($data); 

 //This is the number of results displayed per page 
 $page_rows = 3; 

 //This tells us the page number of our last page 
 $last = ceil($rows/$page_rows); 

 //this makes sure the page number isn't below one, or more than our maximum pages 
 if ($pagenum < 1) 
 { 
 $pagenum = 1; 
 } 
 elseif ($pagenum > $last) 
 { 
 $pagenum = $last; 
 } 

 //This sets the range to display in our query 
$max = 'limit ' .($pagenum - 1) * $page_rows .',' .$page_rows; 



 //This is your query again, the same one... the only difference is we add $max into it
 $data_p = mysql_query("SELECT * FROM tb_pet $max") or die(mysql_error()); 

 //This is where you display your query results
 while($info = mysql_fetch_array($data_p)) 
 { 
 Print $info['pet_name']; 
 echo "<br>";
 } 
 echo "<p>";

 // This shows the user what page they are on, and the total number of pages
echo " --Page $pagenum of $last-- <p>";

 // First we check if we are on page one. If we are then we don't need a link to the previous page or the first page so we do nothing. If we aren't then we generate links to the first page, and to the previous page.
 if ($pagenum == 1) 
 {
 } 
 else 
 {
 echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=1'> <<-First</a> ";
 echo " ";
 $previous = $pagenum-1;
 echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$previous'> <-Previous</a> ";
 } 

 //just a spacer
echo " ---- ";

 //This does the same as above, only checking if we are on the last page, and then generating the Next and Last links
 if ($pagenum == $last) 
 {
 } 
 else {
 $next = $pagenum+1;
 echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$next'>Next -></a> ";
 echo " ";
 echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$last'>Last ->></a> ";
 } 
 ?> 
if (!(isset($pagenum))) {
    $pagenum = 1;
}

你没有在这行的任何位置设置$pagenum,而是应该是

if (!(isset($_GET['pagenum']))) {
   $pagenum = 1;
 }else{
   $pagenum = $_GET['pagenum'];
 }

这只是对您的代码的修复,您需要改进代码的编写方式,并尝试使用PDO代替mysql函数