• 分页程序的基本实现


    分页程序实现的步骤大致如下:

    1.设置煤业显示的记录数量

    $PageSize = 4;

    2.获取结果集中的记录总数

       获取结果集中记录总数有两种方法。

    第一种是通过mysql_num_rows()函数返回记录总数,并将其保存在$RecordCount变量中。代码如下

    $RecordCount = mysql_num_rows($result);

    第二种是通过Select语句中的count函数实现。代码如下

    3.计算总页数

       可以通过$RecordCount 和 $PageSize 两个变量的值计算得到总页数$PageCount,方法如下

    $PageCount = ceil($RecordCount/$PageSize);

    4.如何显示第N页的记录

       虽然用$PageSize 可以控制每页显示的记录数,但是要显示哪页的记录呢?这可以在Select语句中使用limit字句限定显示记录的范围,方法如下

    Select * from 表名 limit 起始位置,显示记录数量

    注意:limit字句中记录序号从0开始,第一条记录的序号为0因此($Page-1)*$PageSize 就是表示前面n-1页的所有记录再加1 ,正好是第n页的第一条记录。

    5.如何通过超链接转到要显示的分页

      可以通过超链接传递参数的方法通知脚本程序要显示的页码。假定分页显示记录的页面是5-9.php,传递参数的链接如下:

    http://localhost/php/5-9.php?page=2 

       参数page用来指定当前的页码,在5-9.php中,可以通过下面的语句读取参数page:

    if(isset($_GET['page']))
      $Page = $_GET['page'];
    else 
      $Page = 1;

    但是用户根本就不会在URL上输出类似“?page = 2” 之类的参数来访问分页。为此,可以定义几个分页链接,供用户单击。

    “第一页”链接的代码如下

    echo "<a href = '?page = 1'>第一页</a>";//跳转到当前页的第一页

    “上一页”链接代码如下:

    echo "<a href = '?page=".($Page-1)."'>上一页</a>";

    "下一页"链接代码如下:

    echo "<a href = '?page=".($Page+1)."'>下一页</a>";

    "末页"链接代码如下:

    echo "<a href = '?page=". $PageCount ."'>末页</a>";

     下面举出一个实例出来

    <?php
    /*
     * 
     * @Authors peng--jun 
     * @Email   1098325951@qq.com
     * @Date    2015-11-07 21:21:48
     * @Link    http://www.cnblogs.com/xs-yqz/
     * @version $Id$
     ==========================================
     */
     header("Content-type: text/html; charset=UTF-8"); 
     require("include/conn.php");
     mysql_select_db("lyb",$conn);//选择数据库
     if (isset($_GET['page']) && (int)$_GET['page']>0) {//获取页码并检查是否非法
         $Page = $_GET['page'];
     }else{
         $Page = 1; //如果获取不到页码则显示第1页
     }
     //设置每页显示记录数
     $PageSize = 4;
     //创建统计记录总数的结果集
     $result = mysql_query("select * from `lyb1`",$conn);
     $RecordCount = mysql_num_rows($result);//获取记录总数
     $PageCount = ceil($RecordCount/$PageSize);//计算总共有多少页
     $sql = "select * from `lyb1` limit ".($Page-1)*$PageSize.",".$PageSize;
     echo "共有多少页".$PageCount."<br/>";
     echo "获取记录总数".$RecordCount."<br/>";
     echo $sql;
     $result = mysql_query($sql,$conn)or die("错误".mysql_error());//将某一页的记录放入结果集
    echo $result;
     ?>
     <!DOCTYPE html>
     <html lang="en">
     <head>
         <meta charset="UTF-8">
         <title>分页显示</title>
     </head>
     <body>
         <h3 align="center">分页显示记录</h3>
         <table border="1" width="95%">
             <tr bgcolor="#e0e0e0">
                 <th>序号</th>
                 <th>标题</th>
                 <th>内容</th>
                 <th>作者</th>
                 <th>邮箱</th>
                 <th>删除</th>
                 <th>更新</th>
             </tr>
             <?php
             while ($row = mysql_fetch_assoc($result)) {
             ?>
                 <tr>
                     <td><?= $row['id']?></td>
                     <td><?= $row['title']?></td>
                     <td><?= $row['content']?></td>
                     <td><?= $row['author']?></td>
                     <td><?= $row['email']?></td>
                     <td><a href="delete.php?id=<?= $row['id']?>">删除</a></td>
                     <td><a href="editform.php?id=<?= $row['id']?>">更新</a></td>
                 </tr>
             <?php        
             }
         mysql_free_result($result);//释放结果集
             ?>
         </table>
        <p><?php //显示分页连接的代码
            if($Page== 1)//如果是第1页,则不显示第1页的链接
            echo  "第一页  上一页 ";
            else{ echo "<a href='?page=1'>第一页</a> <a href='?page=". ($Page-1)."'>上一页</a> "; }
             for($i=1;$i<= $PageCount;$i++){  //设置数字页码的链接
            if ($i==$Page) echo "$i  ";    //如果是某页,则不显示某页的链接
            else echo " <a href='?page=$i'>$i</a> ";
            }
            if ($Page == $PageCount) {// 设置“下一页”链接
                echo  " 下一页  末页 ";//如果是末页,则不显示末页的链接
            }else{
                echo " <a href='?page=" . ($Page+1) . "'>下一页</a> <a href='?page=" . $PageCount . "'>末页</a> ";
            }
            echo " &nbsp 共".$RecordCount. "条记录&nbsp";//共多少条记录
            echo " $Page / $PageCount 页";//当前页面的位置
        ?></p>
    </body>
    </html>

  • 相关阅读:
    OSI结构和TCP/IP模型
    将[4,3,2,5,4,3]分割成[4,3,2]、[5,4,3]两个List的算法
    Mybatis增加对象属性不增加mapper.xml的情况
    以脚本方式直接执行修改密码的passwd命令
    Raphael的鼠标over move out事件
    Raphael的Braille例子
    Raphael的set使用
    Raphael的transform用法
    Raphael的text及对齐方式
    Raphael初始化,path,circle,rect,ellipse,image
  • 原文地址:https://www.cnblogs.com/xs-yqz/p/4940231.html
Copyright © 2020-2023  润新知