php经典分页代码,php分页查询mysql

发布时间:2022-11-23

本文目录一览:

  1. 在php中经典分页代码?求救啊!
  2. php分页代码
  3. 如何整理PHP分页代码,使其实现经典分页样式
  4. 求php分页代码

在php中经典分页代码?求救啊!

<?php
/**
 * ------------------------------
 * 分类操作类
 * ------------------------------
 * @name Page.class.php
 * @version 2010.04.17
 * @author 张宏伟
 */
class Page
{
    //总记录条数
    var $totalNum;
    //每页显示的条目数
    var $pageSize = 10;
    //总的页数
    var $totalPage;
    //当前页数
    var $page = 1;
    //查询结果数据
    var $data;
    /**
     * ------------------------------
     * 构造函数
     * ------------------------------
     * @param string $tbname 要操作的表名
     * @param string $where 定位条件
     * @param string $field 要查询的字段
     * @param string $pageSize 每页显示数量
     * @param string $orderBy 排序方式
     */
    function Page($tbname, $where = '1=1', $field = '*', $pageSize = 20, $orderBy = '', $groupBy = '')
    {
        !extension_loaded('mysql') && exit('mysql do not exist!');
        !mysql_ping() && exit('mysql can not connect!');
        if ($where == '') $where = '1=1';
        if ($field == '') $field = '*';
        //$tbname = tbname($tbname);
        $this->pageSize = $pageSize;
        //获取总记录条数
        if ($groupBy)
            $sql = "SELECT count(*) as row_num FROM (SELECT count($groupBy) as row_num,$field FROM $tbname WHERE $where GROUP BY $groupBy) table1";
        else
            $sql = "SELECT count(*) as row_num FROM $tbname WHERE $where";
        @$row_num = mysql_fetch_array(mysql_query($sql));
        $this->totalNum = $row_num['row_num'];
        $this->totalPage = ceil($this->totalNum / $this->pageSize);
        //获得当前page
        $page = (isset($_GET['page']) && $_GET['page'] != '') ? ceil($_GET['page']) : 1;
        $this->page = ($page <= $this->totalPage) ? $page : $this->totalPage;
        $this->page = ($this->page >= 1) ? $this->page : 1;
        //计算查询的起始值
        $start = ($this->page - 1) * $this->pageSize;
        //查询结果
        if ($groupBy == '')
            $sql = "SELECT $field FROM $tbname WHERE $where" . ($orderBy ? ' ORDER BY ' . $orderBy : '') . " LIMIT $start,$this->pageSize";
        else
            $sql = "SELECT $field FROM $tbname WHERE $where GROUP BY $groupBy" . ($orderBy ? ' ORDER BY ' . $orderBy : '') . " LIMIT $start,$this->pageSize";
        $result = mysql_query($sql);
        $data = array();
        if ($result) {
            while ($row = mysql_fetch_assoc($result)) {
                $data[] = $row;
            }
        }
        $this->data = $data;
    }
    /**
     * ------------------------------
     * 获得查询数据
     * ------------------------------
     * @return array
     */
    function get_data()
    {
        return $this->data;
    }
    /**
     * ------------------------------
     * 构造url
     * ------------------------------
     * @param int $page 页数
     * @return string
     */
    function get_url($page)
    {
        $arr_url = parse_url($_SERVER['REQUEST_URI']);
        $php_file = $arr_url['path'];
        if (!isset($arr_url['query'])) $arr_url['query'] = '';
        parse_str($arr_url['query'], $arr_get);
        $arr_get['page'] = $page;
        $str_url = '';
        foreach ($arr_get as $k => $v) {
            $str_url .= $k . '=' . $v . '&';
        }
        $str_url = substr($str_url, 0, -1);
        return $php_file . '?' . $str_url;
    }
    /**
     * ------------------------------
     * 获得分页的基本信息
     * ------------------------------
     * @return array
     */
    function get_basic_info()
    {
        return array(
            'first' => $this->get_url(1),
            'prev' => $this->get_url($this->page - 1),
            'next' => $this->get_url($this->page + 1),
            'last' => $this->get_url($this->totalPage),
            'totalNum' => $this->totalNum,
            'totalPage' => $this->totalPage,
            'page' => $this->page
        );
    }
    /**
     * ------------------------------
     * select方式页面跳转框
     * ------------------------------
     * @return string
     */
    function button_select()
    {
        $str = "<select onchange=\"location.href='" . $this->get_url('') . "'+this.value\">";
        for ($i = 1; $i <= $this->totalPage; $i++) {
            $selected = ($this->page == $i) ? 'selected' : '';
            $str .= "<option value=$i $selected>$i</option>";
        }
        return $str .= '</select>';
    }
    /**
     * ------------------------------
     * 普通页码条
     * ------------------------------
     * @param int $totalNum 是否显示总页数,0为不显示(默认显示)
     * @param int $correntNum 是否显示当前页数,0为不显示(默认显示)
     * @return string
     */
    function button_basic($totNum = 1, $correntNum = 1, $firstAndLast = 1)
    {
        extract($this->get_basic_info());
        $str = '';
        $str .= ($totNum ? "total:$totalNum&nbsp;&nbsp;&nbsp;&nbsp;" : '');
        $str .= ($correntNum ? "$page/$totalPage&nbsp;&nbsp;&nbsp;&nbsp;" : '');
        $str .= ($firstAndLast ? ($totNum != 1 ? "<a href='$first'>首页</a>" : '首页') . "&nbsp;&nbsp;&nbsp;&nbsp;" : '');
        $str .= ($page - 1 > 0 ? "<a href='$prev'>上一页</a>" : '上一页') . "&nbsp;&nbsp;&nbsp;&nbsp;";
        $str .= ($page + 1 <= $totalPage ? "<a href='$next'>下一页</a>" : '下一页') . "&nbsp;&nbsp;&nbsp;&nbsp;";
        $str .= ($firstAndLast ? ($totNum != 1 ? "<a href='$last'>尾页</a>" : '尾页') . "&nbsp;&nbsp;&nbsp;&nbsp;" : '');
        return $str;
    }
    /**
     * ------------------------------
     * 有样式的按钮
     * ------------------------------
     * @param string $buttin_color redpage green
     * @return string
     */
    function button_style($buttin_style = 'redpage')
    {
        extract($this->get_basic_info());
        $str = '<div class=' . $buttin_style . '>';
        $str .= $page - 1 > 0 ? "<a href=$prev></a>" : "<span class=disabled></span>";
        if ($totalPage <= 10) {
            for ($i = 1; $i <= $totalPage; $i++) {
                $url = $this->get_url($i);
                if ($i == $page) {
                    $str .= "<span class=current>$i</span>";
                    continue;
                }
                $str .= "<a href=$url>$i</a>";
            }
        } else {
            if ($page < 7) {
                for ($i = 1; $i < 8; $i++) {
                    $url = $this->get_url($i);
                    if ($i == $page) {
                        $str .= "<span class=current>$i</span>";
                        continue;
                    }
                    $str .= "<a href=$url>$i</a>";
                }
                $str .= '...';
            } elseif ($page >= 7) {
                for ($i = 1; $i < 3; $i++) {
                    $url = $this->get_url($i);
                    $str .= "<a href=$url>$i</a>";
                }
                $str .= '...';
                for ($i = $page - 2; $i <= $page + 2; $i++) {
                    if ($i == $totalPage - 1) break;
                    $url = $this->get_url($i);
                    if ($i == $page) {
                        $str .= "<span class=current>$i</span>";
                        continue;
                    }
                    $str .= "<a href=$url>$i</a>";
                }
                if ($page < $totalPage - 4) $str .= '...';
            }
            $str .= "<a href=" . $this->get_url($totalPage - 1) . ">" . ($totalPage - 1) . "</a>";
            $str .= "<a href=" . $this->get_url($totalPage) . ">" . $totalPage . "</a>";
        }
        $str .= $page < $totalPage ? "<a href=$next></a></div>" : "<span class=disabled></span></div>";
        return $str;
    }
}
?>

php分页代码

<?php
/**
 * @author SEPH
 * @desc pageft
 * @date 2009-4-20
 */
//为了避免重复包含文件而造成错误,加了判断函数是否存在的条件:
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;
        /*if(!$page) $page=1*/;
        if (@$_GET['page'])
            $page = intval($_GET['page']);
        else
            $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 条记录<br>";
        //如果只有一页则跳出函数:
        if ($lastpg <= 1) return false;
        $pagenav .= " <a href='$url=1' target=_self>首页</a> ";
        if ($prepg) $pagenav .= " <a href='$url=$prepg' target=_self>前页</a> "; else $pagenav .= " 前页 ";
        if ($nextpg) $pagenav .= " <a href='$url=$nextpg' target=_self>后页</a> "; else $pagenav .= " 后页 ";
        $pagenav .= " <a href='$url=$lastpg' target=_self>尾页</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 页";
    }
} /*没有用Get传值*/
?>

如何整理PHP分页代码,使其实现经典分页样式

如何整理PHP分页代码,使其实现经典分页样式

<?php
require_once("conn.php");
$ind_cont_sel_sql = "select * from `board` order by `sn` desc";
$ind_cont_sel_query = mysql_query($ind_cont_sel_sql);
$page_info_num = 3;
$page_def = 1;
if (isset($_GET['pagenum'])) {
    $page_def = $_GET['pagenum'];
}
$sql_page_num = ($page_def - 1) * $page_info_num;
$sql_query_limit = $ind_cont_sel_sql . " LIMIT " . $sql_page_num . "," . $page_info_num;
$sql_query_limit_info = mysql_query($sql_query_limit);
$all_info_num = mysql_num_rows($ind_cont_sel_query);
$all_page_num = ceil($all_info_num / $page_info_num);
?>
<table width="100%" border="0">
<?php
$i = 0;
while ($ind_cont_sel_row = mysql_fetch_assoc($sql_query_limit_info)) {
    $i++;
?>
    <tr>
        <td colspan="2">
            <div class="post-utility">
                <h1><u><?php echo $sql_page_num + $i; ?></u></h1>
            </div>
        </td>
    </tr>
    <tr>
        <td width="80px"><p>title</p></td>
        <td><?php echo nl2br($ind_cont_sel_row["title"]); ?></td>
    </tr>
    <tr>
        <td width="80px"><p>name</p></td>
        <td><?php echo nl2br($ind_cont_sel_row["name"]); ?></td>
    </tr>
    <tr>
        <td width="80px"><p>time</p></td>
        <td><?php echo nl2br($ind_cont_sel_row["time"]); ?></td>
    </tr>
    <tr>
        <td width="80px"><p>content</p></td>
        <td><?php echo nl2br($ind_cont_sel_row["content"]); ?></td>
    </tr>
    <tr>
        <td colspan="2"><hr /></td>
    </tr>
<?php } ?>
    <tr>
        <td colspan="2" height="10px" align="center">
            <a href="?pagenum=1">首页</a>
<?php
if ($_GET["pagenum"] != 1) {
?>
            <a href="?pagenum=<?php echo $_GET["pagenum"] - 1; ?>">上一页</a>
<?php
} else {
    echo "";
}
?>
<?php
for ($page_num = ($_GET["pagenum"] - 2); $page_num < $_GET["pagenum"]; $page_num++) {
    if ($page_num <= 0) {
        echo "";
    } else {
?>
            <a href="?pagenum=<?php echo $page_num; ?>"><?php echo $page_num; ?></a>
<?php
    }
}
?>
<?php echo $_GET["pagenum"]; ?>
<?php
for ($page_num = $_GET["pagenum"] + 1; $page_num <= ($_GET["pagenum"] + 2); $page_num++) {
    if ($page_num > $all_page_num) {
        echo "";
    } else {
?>
            <a href="?pagenum=<?php echo $page_num; ?>"><?php echo $page_num; ?></a>
<?php
    }
}
?>
<?php
if ($_GET["pagenum"] < $all_page_num) {
?>
            <a href="?pagenum=<?php echo $_GET["pagenum"] + 1; ?>">下一页</a>
<?php
} else {
    echo "";
}
?>
            <a href="?pagenum=<?php echo $all_page_num; ?>">尾页</a>
        </td>
    </tr>
</table>

求php分页代码

////////////////////////////////分页/////////////////////////////
$pageListNum = 20; //每页显示10条
$totalPage = 0; //总页数
$page = isset($page) ? (int)$page : 1; //当前页
$start = ($page - 1) * $pageListNum; //起始编号
$totalPage = ceil($pageNum / $pageListNum);
require_once(WEB_CLASS . '/page_class.php');
$page = new PageClass($page, $totalPage);
$showpage = $page->showPage();
echo $showpage;
///////////////page_class.php////////////////////////
<?php
header("Content-Type:text/html;charset=utf8");
/**
 * 分页类
 * URL有多个参数也能分页,还能自定义分页样式
 * php=5.0
 * @version 0.1.1
 * @copyright 2006-2010
 * @package class
 */
class PageClass
{
    private $url;
    private $cpage;
    private $totalPage;
    private $tpl;
    /**
     * PageClass的构造函数
     * 模板说明:{index}表示首页 {pagelist}链接列表 {option}下拉列表框 {next}下一页 {pre}上一页 {cur}当前页 {index=首页}表示首页的链接文字为首页,即=号后为链接文字,不过这对{pagelist}{option}无效
     * @param string $cpage 当前页
     * @param string $tatolPage 总页数
     * @param string $tpl 模板.
     * @param string $url 要分页的url 默认为当前页
     * @return PageClass
     */
    function __construct($cpage, $totalPage, $tpl = '', $url = '')
    {
        $this->cpage = $cpage;
        $this->totalPage = $totalPage;
        if (strlen($tpl) == 0) {
            $this->tpl = "{cur=当前页}{index=首页} {pre=上一页} {next=下一页} {end=最后页} {option}"; //中文分页
        } else {
            $this->tpl = $tpl;
        }
        if (strlen($url) == 0) {
            $this->url = $_SERVER['SERVER_NAME'] . $_SERVER["REQUEST_URI"];
        } else {
            $this->url = $url;
        }
    }
    /**
     * 函数showPage,返回生成的分页HTML
     * @return string
     */
    function showPage()
    {
        //显示分页
        $urlOption = array(); //url的后缀如:?page=1&typeid=1
        $parse_url = parse_url($this->url);
        $urlMain = 'http://' . $parse_url['path'];
        if ($parse_url['query']) {
            //url有参数
            $urlArr = split('&', $parse_url['query']);
            if (is_array($urlArr)) {
                foreach ($urlArr as $key => $value) {
                    $c = split('=', $value);
                    if ($c[0] == 'page') {
                    } else {
                        array_push($urlOption, $c[0] . '=' . $c[1]);
                    }
                }
            }
        } else {
            //url没有参数
            //if($this->cpage<$this->totalPage){
            // array_push($urlOption,"page=2");
            //}
        }
        if (is_array($urlOption)) {
            $urlOptionStr_t = implode('&', $urlOption);
        }
        if (strlen($urlOptionStr_t) > 0) {
            $urlOptionStr .= '&' . $urlOptionStr_t;
        }
        $tplcontent = $this->tpl; //分页模板
        $showPage = $tplcontent;
        //首页
        if (preg_match_all('/\{index=([^}]*+)\}/', $tplcontent, $matches)) {
            $t_tpl = $matches[0][0]; //模板内容
            $t_word = $matches[1][0]; //分页字段
            $indexStr = '<a href="' . $urlMain . '?page=1' . $urlOptionStr . '">' . $t_word . '</a>';
            $showPage = str_replace($t_tpl, $indexStr, $showPage);
        }
        //当前页
        if (preg_match_all('/\{cur=([^}]*+)\}/', $tplcontent, $matches)) {
            $t_tpl = $matches[0][0];
            $t_word = $matches[1][0];
            $curStr = $t_word . $this->cpage . '/' . $this->totalPage;
            $showPage = str_replace($t_tpl, $curStr, $showPage);
        }
        //末页
        if (preg_match_all('/\{end=([^}]*+)\}/', $tplcontent, $matches)) {
            $t_tpl = $matches[0][0];
            $t_word = $matches[1][0];
            $endPage = '<a href="' . $urlMain . '?page=' . $this->totalPage . $urlOptionStr . '">' . $t_word . '</a>';
            $showPage = str_replace($t_tpl, $endPage, $showPage);
        }
        //上一页
        if (preg_match_all('/\{pre=([^}]*+)\}/', $tplcontent, $matches)) {
            $t_tpl = $matches[0][0];
            $t_word = $matches[1][0];
            if ($this->cpage > 1) {
                $prePage = '<a href="' . $urlMain . '?page=' . ($this->cpage - 1) . $urlOptionStr . '">' . $t_word . '</a>';
            } else {
                $prePage = $t_word;
            }
            $showPage = str_replace($t_tpl, $prePage, $showPage);
        }
        //下一页
        if (preg_match_all('/\{next=([^}]*+)\}/', $tplcontent, $matches)) {
            $t_tpl = $matches[0][0];
            $t_word = $matches[1][0];
            if ($this->cpage < $this->totalPage && $this->totalPage > 1) {
                $nextPage = ' <a href="' . $urlMain . '?page=' . ($this->cpage + 1) . $urlOptionStr . '">' . $t_word . '</a>';
            } else {
                $nextPage = $t_word;
            }
            $showPage = str_replace($t_tpl, $nextPage, $showPage);
        }
        //链接列表
        if (preg_match("{pagelist}", $tplcontent)) {
            for ($i = 1; $i < $this->totalPage + 1; $i++) {
                $linkPage .= ' <a href="' . $urlMain . '?page=' . $i . $urlOptionStr . '">' . $i . '</a>';
            }
            $showPage = str_replace('{pagelist}', $linkPage, $showPage);
        }
        //下拉框分页
        if (preg_match("{option}", $tplcontent)) {
            $optionPage = '<select onchange="javascript:window.location=\'' . $urlMain . '?page=\'+this.options[this.selectedIndex].value+\'' . $urlOptionStr . '\';">';
            for ($i = 1; $i < $this->totalPage + 1; $i++) {
                if ($i == $this->cpage) {
                    $optionPage .= "<option selected='selected' value='$i'>第" . $i . "页</option>\n";
                } else {
                    $optionPage .= "<option value='$i'>第" . $i . "页</option>\n";
                }
            }
            $optionPage .= '</select>';
            $showPage = str_replace('{option}', $optionPage, $showPage);
        }
        return $showPage;
    }
}
?>