中国站长下载-为中国站长提供最好最全的建站资源! 首 页发布资源有事留言繁體中文
设为首页
加入收藏
联系我们
 
您当前的位置:中国站长下载 -> 文章中心 -> 网页编程 -> PHP编程 -> 文章内容  虚拟主机 域名注册 退出登录 用户管理
栏目导航
· ASP编程 · .NET编程
· PHP编程 · JSP编程
· CGI 专区
热门文章
· sndvol32 - sndvol3...
· [组图] FLASH:《大话李白》...
· 个人网站到底能赚多...
· [图文] Rundll.exe是病毒吗...
· [组图] Flash:制作MV
· 价值12万元的网站SE...
· 网站创业者,你需要...
· 一个成功的网站设计...
· [图文] FLASH:韩国导航条解...
· 中国网站的赚钱模式...
相关文章
· PHP+Apache在Win9X配...
· php+ajax文件上传进...
· [图文] php+xapian extensi...
· Win2000上安装PHP+...
· Windows下的Apache+...
· [图文] IIS实现ASP,CGI,PER...
· “在phpMyAdmin使用...
· 在phpMyAdmin使用用...
· php+mysql扎实个人...
PHP+MySQL分页显示示例分析
作者:不详  来源:不详  发布时间:2006-8-14 10:13:41  发布人:chinazhan

 减小字体 增大字体

     Web开发是今后分布式程式开发的主流,通常的web开发都要涉及到与数据库打交道,客户端从服务器端读取通常都是以分页的形式来显示,一页一页的阅读起来既方便又美观。所以说写分页程序是web开发的一个重要组成部分,在这里,我们共同来研究分页程序的编写。
  
    一、分页程序的原理
  
    分页程序有两个非常重要的参数:每页显示几条记录($pagesize)和当前是第几页($page)。有了这两个参数就可以很方便的写出分页程序,我们以MySql数据库作为数据源,在mysql里如果要想取出表内某段特定内容可以使用的 T-SQL语句:select * from table limit offset,rows来实现。这里的offset是记录偏移量,它的计算方法是offset=$pagesize*($page-1),rows是要显示的记录条数,这里就是$page。也就是说select * from table limit 10,10这条语句的意思是取出表里从第11条记录开始的20条记录。
  
    二、主要代码解析
  
  $pagesize=10; //设置每一页显示的记录数
  $conn=mysql_connect("localhost","root",""); //连接数据库
  $rs=mysql_query("select count(*) from tb_product",$conn); //取得记录总数$rs
  $myrow = mysql_fetch_array($rs);
  $numrows=$myrow[0];
  
  //计算总页数
  
  $pages=intval($numrows/$pagesize);
  
  //判断页数设置
  
  if (isset($_GET['page'])){
   $page=intval($_GET['page']);
  }
  else{
   $page=1; //否则,设置为第一页
  }
  
    三、创建用例用表myTable
  
  create table myTable(id int NOT NULL auto_increment,news_title varchar(50),news_cont text,add_time datetime,PRIMARY KEY(id))
  
    四、完整代码
  
  <html>
  <head>
  <title>php分页示例</title>
  <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  </head>
  
  <body>
  <?php
   $conn=mysql_connect("localhost","root","");
   //设定每一页显示的记录数
   $pagesize=1;
   mysql_select_db("mydata",$conn);
   //取得记录总数$rs,计算总页数用
   $rs=mysql_query("select count(*) from tb_product",$conn);
   $myrow = mysql_fetch_array($rs);
   $numrows=$myrow[0];
   //计算总页数
  
   $pages=intval($numrows/$pagesize);
   if ($numrows%$pagesize)
    $pages++;
   //设置页数
   if (isset($_GET['page'])){
    $page=intval($_GET['page']);
   }
   else{
    //设置为第一页
    $page=1;
   }
   //计算记录偏移量
   $offset=$pagesize*($page - 1);
   //读取指定记录数
   $rs=mysql_query("select * from myTable order by id desc limit $offset,$pagesize",$conn);
   if ($myrow = mysql_fetch_array($rs))
   {
    $i=0;
    ?>
    <table border="0" width="80%">
    <tr>
     <td width="50%" bgcolor="#E0E0E0">
      <p align="center">标题</td>
      <td width="50%" bgcolor="#E0E0E0">
      <p align="center">发布时间</td>
    </tr>
    <?php
     do {
      $i++;
      ?>
    <tr>
     <td width="50%"><?=$myrow["news_title"]?></td>
     <td width="50%"><?=$myrow["news_cont"]?></td>
    </tr>
     <?php
     }
     while ($myrow = mysql_fetch_array($rs));
      echo "</table>";
    }
    echo "<div align='center'>共有".$pages."页(".$page."/".$pages.")";
    for ($i=1;$i< $page;$i++)
     echo "<a href='fenye.php?page=".$i."'>[".$i ."]</a> ";
     echo "[".$page."]";
     for ($i=$page+1;$i<=$pages;$i++)
      echo "<a href='fenye.php?page=".$i."'>[".$i ."]</a> ";
      echo "</div>";
     ?>
    </body>
    </html>
  
    五、总结
  
    本例代码在windows2000 server+php4.4.0+mysql5.0.16上运行正常。该示例显示的分页格式是[1][2][3]…这样形式。假如想显示成“首页 上一页 下一页 尾页”这样形式,请加入以下代码:
  
  $first=1;
  $prev=$page-1;
  $next=$page+1;
  $last=$pages;
  
  if ($page > 1)
  {
   echo "<a href='fenye.php?page=".$first."'>首页</a> ";
   echo "<a href='fenye.php?page=".$prev."'>上一页</a> ";
  }
  
  if ($page < $pages)
  {
   echo "<a href='fenye.php?page=".$next."'>下一页</a>
   echo "<a href='fenye.php?page=".$last."'>尾页</a> ";
  }
  
    其实,写分页显示代码是很简单的,只要掌握了它的工作原理。希望这篇文章能够带给那些需要这方面程序web程序员的帮助。
  
  
    做人要厚道,请注明转自chinazhan中国站长(www.ChinaZhan.com)。

 
[] [返回上一页] [打 印] [收 藏]
下一篇文章:php中实现多线程
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
中国站长下载
中国站长下载

本页只接受PR>=4 IT类站点连接,申请连接,谢谢您们的支持!希望我们的下载站能够真正帮到中国的站长们!
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图
Copyright © 2005-2006 ChinaZhan.Net. All Rights Reserved .