php分页多种实现程序代码

本文章总结了目前常用的几种分页代码,比如说上一页,下一页之类的,还有一种数字分页,像1,2,3...之类的等.

分页代码如下:

  1. <?php
  2.   //page当前页,num每页的页数
  3.   $page=isset($_GET['page'])?intval($_GET['page']):1;
  4.   $num=5;
  5.   $conn = mysql_connect('127.0.0.1','root','');
  6.   if (!$conn) {
  7.    die('Could not connect:'.mysql_error());
  8.   }
  9.   mysql_select_db('shop');
  10.   //获取记录总数
  11.   $total=mysql_num_rows(mysql_query("select * from user"));
  12.   //计算页数
  13.   $pagenum=ceil($total/$num);
  14.   //限制页数不能超出范围
  15.   If($page>$pagenum || $page == 0){
  16.     Echo 'Error : Can Not Found The page.';
  17.     Exit;
  18.   }
  19.   //语句“Select * from table limit 0,10”从table表提取十条信息,0为起点,10为提取的数目
  20.   //$offset为起点值,如当前页为第一页,每页5条,起点即为0,同理当前为第二页,起点将为5
  21.   $offset=($page-1)*$num;
  22.   $result=mysql_query("select * from user limit $offset,$num");
  23.   while($it=mysql_fetch_array($result)){
  24.     echo 'id:'.$it['id'].' name:'.$it['name'].'<br />';
  25.   }
  26.   //显示链接页面切换链接,当前页无链接
  27.   for($i=1;$i<=$pagenum;$i++){
  28.     $show=($i!=$page)?"<a href='index.php?page=".$i."'>$i</a>":"<b>$i</b>";
  29.     echo $show." ";
  30.   }
  31.   echo $total.'条记录,每页5条,共'.$pagenum.'页';
  32. mysql_free_result($result);
  33.   mysql_close($conn);
  34. ?>

实例2,代码如下:

  1. <?
  2. //function.php 这里是主函数
  3. function php_page($page_dbname,$page_size,$page)
  4. {
  5. if ($page=="")
  6. {$page=1;};
  7. if ($ljjl=="")
  8. {$ljjl=0;};
  9. if($page)
  10. {
  11. //$page_dbname="tb_insert";
  12. //$page_size=4; //每页显示4条记录
  13. $query="select count(*) as total from ".$page_dbname; //从数据库中读取数据
  14. $result=mysql_query($query);
  15. $message_count=mysql_result($result,0,"total"); //获取总的记录数
  16. $page_count=ceil($message_count/$page_size); //获取总的页数
  17. $offset=($page-1)*$page_size;
  18. $query="select * from ".$page_dbname." order by id desc limit $offset, $page_size";
  19. $result=mysql_query($query);
  20. //内容显示 这里只是简单的作个示范,可以按你的要求随便改动。
  21. while ($myrow=@mysql_fetch_array($result))
  22. {
  23. echo $myrow[name]." | ".$myrow[number]." | ".$myrow[tel]." | ".$myrow[address]."<br><br>";
  24. }
  25. }
  26. echo "页次:".$page."/";
  27. echo $page_count."页 记录:";
  28. echo $message_count."条"."<br>";
  29. if($page!=1)
  30. {
  31. echo "<a href=index.php?page=1>首页</a>&nbsp;";
  32. echo "<a href=index.php?page=".($page-1).">上一页</a>&nbsp;";
  33. }
  34. else
  35. {
  36. echo "首页&nbsp;";
  37. echo "上一页&nbsp;";
  38. }
  39. for($i=1; $i<=$page_count; $i++)
  40. {
  41. if ($page==$i)
  42. {echo $i."&nbsp;";}
  43. else
  44. {echo "<a href=index.php?page=$i>$i</a>&nbsp;";}
  45. }
  46. if($page<$page_count)
  47. {
  48. echo "<a href=index.php?page=".($page+1).">下一页</a>&nbsp;";
  49. echo "<a href=index.php?page=".$page_count.">尾页</a>";
  50. }
  51. else
  52. {
  53. echo "下一页&nbsp;";
  54. echo "尾页";
  55. }
  56. }
  57. ?>

conn.php 连接数据库,代码如下:

  1. <?php
  2. $localhost","root","root")or dir('连接失败:' . mysql_error());
  3. //mysql_connect("IP","用户名","密码")
  4. if(mysql_select_db("db_database06",$id))
  5. echo "";
  6. else
  7. echo ('连接失败:' . mysql_error());
  8. mysql_query("set names gb2312");
  9. ?>

主程序,将上面俩个文件包含进来,再调用一个php_page()就可完成分页,代码如下:

  1. <?php
  2. require_once("conn.php");
  3. require_once("function.php");
  4. php_page("tb_insert",3,$_GET[page]); // "tb_insert"是表名,3是在每页要显示的记录数,$_GET[page]是page的id,直接用就可以了。
  5. ?>

上面的一种是文字分页,比如说上一页,下一页之类的,还有一种数字分页,像1,2,3...之类的,这个比较简单,前者稍微复杂些,最后一种是他们2者结合,代码如下:

  1. --> 1 //获取当前页数
  2. if(isset($_GET['page'])){
  3. $page = intval($_GET['page']);
  4. }
  5. else {
  6. $page=1;
  7. }
  8. $PageSize = 1; //每页的记录数量
  9. // 获取总数量
  10. $sql = "select count(*) from blog";
  11. $result = mysql_query($sql);
  12. $row = mysql_fetch_row($result);
  13. $amount = $row[0];
  14. /*计算总页数
  15. if($amount){
  16. if($amount<$PageSize) { //如果总数量小于每页的记录数量$PageSize,那么只有一页.
  17. $PageCount = 1;
  18. }
  19. if($amount%$PageSize) { //总数量除以每页的记录数量取于
  20. $PageCount =& amp;nbsp;(int)($amount/$PageSize)+1;//如果有于,则页数等于总数量除每页的记录数加1
  21. }
  22. else{
  23. $PageCount =& amp;nbsp;$amount/$PageSize;//没有,则结果是页数
  24. }
  25. }
  26. else{
  27. $PageCount = 0;
  28. }*/
  29. $PageCount = ceil($amount/$PageSize);//总页数=总数量除以每页数量 如果有小树,则进位< span >
  30. if($Page>$PageCount|$page==0){// 如果当前页数大于总页数
  31. echo "不能发现此页!";
  32. exit();
  33. }
  34. //翻页链接
  35. $PageOut = '';
  36. if($page==1){//如果页数只有一页
  37. $PageOut .= '第一页|上一页';
  38. }
  39. else{
  40. $PageOut .= '<a href="index.php?page=1">第一页& lt;/a>|<a href="index.php?page='.($page-1).'">上一页</a>|';
  41. }
  42. if($page==$PageCount||$PageCount==0){//如果当前页等于总也数
  43. $PageOut .= '下一页|尾页';
  44. }
  45. else{
  46. $PageOut .= '<a href="index.php?page='.($page+1).'">下一页</a>|<a href="index.php?page='.$PageCount.'">尾页</a>';
  47. }
  48. //获取数据
  49. if($amount){
  50. $sql="select * from blog limit ".($page-1)*($PageSize).",$PageSize";
  51. $result=mysql_query($sql);
  52. while($row=mysql_fetch_array($result)){//此段代码只是示例
  53. $blogs[] = array('bid'=>$row['bid'],'title'=>$row['title']);
  54. foreach ($blogs as $blog){
  55. $title=$blog['title'];
  56. }
  57. $output = "<a href=index.php?action=blog_del&b.
  58. "<a href=index.php?action=blog_edit&b.
  59. "<a href=index.php?action=blog_view&b;
  60. include("template/default/blog.tpl.php");
  61. echo $PageOut;
  62. }
  63. for($i=1;$i<=$PageCount;$i++){//数字分页
  64. $Pageshow = ($i!=$page)?"<a href='index.php?page=".$i."'>$i</a>":"<b>$i</b>";
  65. echo $PageShow;
  66. }
  67. echo $amount.'条记录,每页'.$PageSize.'条,共'.$PageCount.'页';
  68. }