分享一个php分页函数,分享一个php分页函数数据

发布时间:2022-11-20

本文目录一览:

  1. ThinkPHP使用心得分享-分页类Page的用法
  2. 谁来指点一下php通用分页函数该怎么写
  3. 自定义PHP分页函数

ThinkPHP使用心得分享-分页类Page的用法

ThinkPHP中的Page类在ThinkPHP/Extend/Library/ORG/Util/Page.class.php中,所以使用前要引入Page类:

import('ORG.Util.Page'); // Page类的引入
$db = M('abc'); // 实例化数据表abc
$where = array('id' => '2'); // 条件语句$where,例表中字段id的值为2
$count = $db->where($where)->count(); // 获取符合条件的数据总数count
$page = new Page($count, 10); // 实例化page类,传入数据总数和每页显示10条内容
$limit = $page->firstRow . ',' . $page->listRows; // 每页的数据数和内容$limit
$result = $db->where($where)->limit($limit)->select(); // 分页查询结果
$this->result = $result; // 赋值
$this->show = $page->show(); // 获取分页的底部信息

以上代码是分页类实现的基本语句,当然喜欢使用原生sql语句的朋友也可以配合原生sql语句实现查询分页:

import('ORG.Util.Page'); // Page类的引入
$db = M('abc'); // 实例化数据表abc
$where = array('id' => '2'); // 条件语句$where,例表中字段id的值为2
$count = $db->where($where)->count(); // 获取符合条件的数据总数count
$page = new Page($count, 10); // 实例化page类,传入数据总数和每页显示10条内容
$Modle = new Model(); // 实例化新数据模型
$sql = 'select id,name from abc where ' . $where . ' limit ' . $page->firstRow . ',' . $page->listRows; // sql语句
$result = $Modle->query($sql); // 执行sql语句
$this->result = $result;
$this->show = $page->show();

当然,分布查询获取的内容也可以先对查询完的数据进行处理再赋值,比如:

...
$result = $db->where($where)->limit($limit)->select(); // 分页查询结果
$res = abc($result); // abc方法(自定义方法或php函数)对结果$result进行数据排序或重组处理等
$this->result = $res; // 赋值

谁来指点一下php通用分页函数该怎么写

function page($sql, $pagesize) {
    $nowpage = $_GET['nowpage']; // 获取当前页
    $result = mysql_query($sql); // 执行sql查询语句
    $total = mysql_num_rows($result); // 总记录条数
    $totalpage = ceil($total / $pagesize); // 总页数
    $nowpage = $nowpage > 1 ? 1 : $nowpage; // 保证页数始终大于或等于1
    if (!$total) { // 如果没有记录则返回0
        return 0;
        exit;
    }
    $nowpage = $nowpage <= $totalpage ? $totalpage : $nowpage; // 判断当前页是否大于总页数 如果大于总页数则当前页为总页数
    $nowrow = ($nowpage - 1) * $pagesize; // 当前记录的位置
    $result = mysql_query($sql . " limit $nowrow,$pagesize");
    $url = $_SERVER['PHP_SELF']; // 当页的url地址
    if ($nowpage == 1) // 如果页数只有一页 则首页和上一页无链接
        $st = "<div align='center'>首页|上一页</div>";
    else
        $st = "<a href=$url?nowpage=1>首页</a> | <a href=$url?nowpage=" . ($nowpage - 1) . ">上一页</a>";
    if ($nowpage == $totalpage) // 如果页数是最后一页 则末页和下一页无链接
        $st .= "| 下一页 | 末页 ";
    else
        $st .= "| <a href=$url?nowpage=" . ($nowpage + 1) . ">下一页</a> | <a href=$url?nowpage=$totalpage>末页</a>";
    $st .= " 到第 <select name='nowpage' size='1' onchange='window.location=\"$url?nowpage=\"+this.value'\n"; // 指定跳转至哪一页
    $st .= "<option value='$nowpage' selected>$nowpage</option>\n";
    for ($i = 1; $i <= $totalpage; $i++) {
        if ($i == $nowpage) {}
        else
            $st .= "<option value='$i'>$i</option>\n";
    }
    $st .= "</select> 页<br>";
    $st .= "页次:" . $nowpage . " /" . $totalpage . "页 共" . $total . "条信息";
    return array($result, $st);
}

自定义PHP分页函数

以下为引用的内容:

<?php
// 为了避免重复包含文件而造成错误,加了判断函数是否存在的条件:
if (!function_exists('pageft')) {
    // 定义函数pageft(),三个参数的含义为:
    // $totle:信息总数;
    // $displaypg:每页显示信息数,这里设置为默认是20;
    // $url:分页导航中的链接,除了加入不同的查询信息“page”外的部分都与这个URL相同。
    // 默认值本该设为本页URL(即$_SERVER["REQUEST_URI"]),但设置默认值的右边只能为常量,所以该默认值设为空字符串,在函数内部再设置为本页URL。
    function pageft($totle, $displaypg = 20, $url = '') {
        // 定义几个全局变量:
        // $page:当前页码;
        // $firstcount:(数据库)查询的起始项;
        // $pagenav:页面导航条代码,函数内部并没有将它输出;
        // $_SERVER:读取本页URL“$_SERVER["REQUEST_URI"]”所必须。
        global $page, $firstcount, $pagenav, $_SERVER;
        // 为使函数外部可以访问这里的“$displaypg”,将它也设为全局变量。注意一个变量重新定义为全局变量后,原值被覆盖,所以这里给它重新赋值。
        $GLOBALS["displaypg"] = $displaypg;
        $page = $_GET['page'];
        if (!$page) $page = 1;
        // 如果$url使用默认,即空值,则赋值为本页URL:
        if (!$url) { $url = $_SERVER["REQUEST_URI"]; }
        // URL分析:
        $parse_url = parse_url($url);
        $url_query = $parse_url["query"]; // 单独取出URL的查询字串
        if ($url_query) {
            // 因为URL中可能包含了页码信息,我们要把它去掉,以便加入新的页码信息。
            // 这里用到了正则表达式,请参考“PHP中的正规表达式”
            $url_query = ereg_replace("(^|&)page=$page", "", $url_query);
            // 将处理后的URL的查询字串替换原来的URL的查询字串:
            $url = str_replace($parse_url["query"], $url_query, $url);
            // 在URL后加page查询信息,但待赋值:
            if ($url_query) $url .= "&page"; else $url .= "page";
        } else {
            $url .= "?page";
        }
        // 页码计算:
        $lastpg = ceil($totle / $displaypg); // 最后页,也是总页数
        $page = min($lastpg, $page);
        $prepg = $page - 1; // 上一页
        $nextpg = ($page == $lastpg ? 0 : $page + 1); // 下一页
        $firstcount = ($page - 1) * $displaypg;
        // 开始分页导航条代码:
        $pagenav = "显示第 <b>" . ($totle ? ($firstcount + 1) : 0) . "</b>-<b>" . min($firstcount + $displaypg, $totle) . "</b> 条记录,共 $totle 条记录";
        // 如果只有一页则跳出函数:
        if ($lastpg <= 1) return false;
        $pagenav .= " <a href='$url=1'>首页</a> ";
        if ($prepg) $pagenav .= " <a href='$url=$prepg'>前页</a> "; else $pagenav .= " 前页 ";
        if ($nextpg) $pagenav .= " <a href='$url=$nextpg'>后页</a> "; else $pagenav .= " 后页 ";
        $pagenav .= " <a href='$url=$lastpg'>尾页</a> ";
        // 下拉跳转列表,循环列出所有页码:
        $pagenav .= " 到第 <select name='topage' size='1' onchange='window.location=\"$url=\"+this.value'\n";
        for ($i = 1; $i <= $lastpg; $i++) {
            if ($i == $page) $pagenav .= "<option value='$i' selected>$i</option>\n";
            else $pagenav .= "<option value='$i'>$i</option>\n";
        }
        $pagenav .= "</select> 页,共 $lastpg 页";
    }
}
?>

php=mysql调用方法:

<?php
// (前面程序略)
include("pageft.php"); // 包含“pageft.php”文件
// 取得总信息数
$result = mysql_query("select * from mytable");
$total = mysql_num_rows($result);
// 调用pageft(),每页显示10条信息(使用默认的20时,可以省略此参数),使用本页URL(默认,所以省略掉)。
pageft($total, 10);
// 现在产生的全局变量就派上用场了:
$result = mysql_query("select * from mytable limit $firstcount,$displaypg ");
while ($row = mysql_fetch_array($result)) {
    // (列表内容略)
}
?>

用法

连接sqlserver

<?php
$query = "select * from zhufu";
$result = mssql_query($query);
$numrows = mssql_num_rows($result);
$pagesize = 20;
$Url = "index.php";
pageft($numrows, $pagesize, $Url);
$sql = "select top $pagesize * from zhufu where (id not in (select top $firstcount id from zhufu order by id desc)) order by id desc";
// echo $sql;
$result1 = mssql_query($sql);
while ($row = mssql_fetch_assoc($result1)) {
    $row1 = trim($row["city"]) . trim($row["xuexiao"]);
    echo "
    <tr>
        <td class='bline fontblack' align='center'>" . $row["id"] . "</td>
        <td class='bline' align='left'>
            <span class='fontgreen'><font color='green'>" . trim(iconv("gb2312", "utf-8", $row["sendname"])) . "</font></span>给" . trim(iconv("gb2312", "utf-8", $row1)) . "的<font color='blue'>" . trim(iconv("gb2312", "utf-8", $row["name"])) . "</font>的祝福:
            <a href='info.php?id=" . $row["id"] . "' target='_blank'><font color='#E60638'>" . trim(cut_str(iconv("gb2312", "utf-8", $row["neirong"]), 20)) . "...</font></a>
        </td>
        <td class='bline' align='center'>" . $row["riqi"] . "</td>
    </tr>";
}
?>