• 用户可以设置每页显示记录数的分页程序


        要实现该功能,首先在网页上添加一个表单,表单的文本框中输入每页显示的记录数。如果用户提交了表单,就把用户设置的每页记录数赋值给$PageSize变量,这样分页程序就会根据新的$PageSize值重新分页。但是转到其他页面之后,由于获取不到用户设置的记录数,$PageSize 的值又会成默认值。为此,应该把用户设置的记录数保存起来,可以采用url参数的方法,把该值保存到URL参数中,也可以将该值保存到一个Session变量中,这样其他分页都能获取用户设置的记录数。

        采用第二种Session方式,代码如下

    <?php
    /*
     * 
     * @Authors peng--jun 
     * @Email   1098325951@qq.com
     * @Date    2015-11-07 21:21:48
     * @Link    http://www.cnblogs.com/xs-yqz/
     * @version $Id$
     *开启session用于保存用户设置的分页数
     ==========================================
     */
     header("Content-type: text/html; charset=UTF-8"); 
     session_start();
     require("include/conn.php");
     mysql_select_db("lyb",$conn);//选择数据库
     if (isset($_GET['page']) && (int)$_GET['page']>0) {//获取页码并检查是否非法
         $Page = $_GET['page'];
     }else{
         $Page = 1; //如果获取不到页码则显示第1页
     }
    
    //设置每页显示记录数,并将记录数保存到Session变量中
    if(isset($_GET['pagesize'])){        //如果用户设置了每页记录数
        $PageSize=$_GET['pagesize'];    //将用户设置的值赋给$PageSize
        $_SESSION["pagezize"]=$_GET['pagesize'];  //将该值保存到Session变量中
    }
    if($_SESSION["pagezize"]<>"")        //如果SESSION值不为空
       $PageSize=$_SESSION["pagezize"];
    else
      $PageSize=4;     //第一次打开网页时默认每页显示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>
         <form style="margin:0 auto; text-align:center;" method="get" action="">每页显示 <input type="text" name="pagesize" size="3" value="<?= $PageSize?>"> 条 <input type="submit"  value="保存"> </form>
         <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>

     采用第一种,通过URL传参数的方式显示

    <?php
    /*
     * 
     * @Authors peng--jun 
     * @Email   1098325951@qq.com
     * @Date    2015-11-07 21:21:48
     * @Link    http://www.cnblogs.com/xs-yqz/
     * @version $Id$
     *通过URL传参数的方式显示
     ==========================================
     */
     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页
     }
    
    //设置每页显示记录数,并将记录数保存到URL中
    if(isset($_GET['pagesize'])){        //如果用户设置了每页记录数
        $PageSize=$_GET['pagesize'];    //将用户设置的值赋给$PageSize
    }
    else
      $PageSize=4;     //第一次打开网页时默认每页显示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>
         <form style="margin:0 auto; text-align:center;" method="get" action="">每页显示 <input type="text" name="pagesize" size="3" value="<?= $PageSize?>"> 条 <input type="submit"  value="保存"> </form>
         <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&pagesize=$PageSize'>第一页</a> <a href='?page=". ($Page-1)."&pagesize=$PageSize'>上一页</a> "; }
             for($i=1;$i<= $PageCount;$i++){  //设置数字页码的链接
            if ($i==$Page) echo "$i  ";    //如果是某页,则不显示某页的链接
            else echo " <a href='?page=$i&pagesize=$PageSize'>$i</a> ";
        }
            if ($Page == $PageCount) {// 设置“下一页”链接
                echo  " 下一页  末页 ";////如果是某页,则不显示某页的链接 方便用户定位知道当前看的是第几页
            }else{
                echo " <a href='?page=" . ($Page+1) . "&pagesize=$PageSize'>下一页</a> <a href='?page=" . $PageCount . "&pagesize=$PageSize'>末页</a> ";
            }
            echo " &nbsp 共".$RecordCount. "条记录&nbsp";//共多少条记录
            echo " $Page / $PageCount 页";//当前页面的位置
            ?></p>
        </body>
        </html>
  • 相关阅读:
    C#性能优化实践
    JavaScript类型转换
    JSON基础
    EasyUI DataGrid 内部input的事件
    WPF之Binding基础二 控件作为Binding的数据源
    WPF之Binding基础一 UI Binding Source
    JavaScript里面的“类”
    SqlServer随笔
    对象和类型
    浅谈类
  • 原文地址:https://www.cnblogs.com/xs-yqz/p/4947403.html
Copyright © 2020-2023  润新知