LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 911|回复: 4

请教php自动分页问题

[复制链接]
发表于 2004-9-3 10:22:49 | 显示全部楼层 |阅读模式
在标题里,我表达得不好,这里详细说明下
就好象论坛一样~~例如每一页的显示记录最多是10条,如果在数据库里取出来的记录多于10条,就自动形成别一个页面,这个代码应该怎样写,给点提示
发表于 2004-9-3 20:57:07 | 显示全部楼层
你查找一下分页函数
 楼主| 发表于 2004-9-3 23:08:50 | 显示全部楼层
我看过php的手册啦,但是太多函数啦,不知道那个是分页函数(E文不好)
发表于 2004-9-4 12:21:59 | 显示全部楼层
在 MySQL 中用 LIMIT 来实现的啊。

SELECT * FROM post DESC LIMIT 0, 30; # 取前面 30 条记录

SELECT * FROM post LIMIT 31, 60; # 取 31 - 60 条记录

我是写了一个分页类的,实现的关键就是上面的查询啦。

[php]
<?php
// -----------------------------------------------------------------------

// Simple DB paging class.

// -----------------------------------------------------------------------

// Copyright (c) 2004 Bank Of China.

// Rik <riksken@163.net>

// -----------------------------------------------------------------------

// $db_paging.php,v 1.5 2003/08/23 15:37:36 Rik Exp $

// -----------------------------------------------------------------------



class DBPaging
{

        var $dbQueryStr;

        var $numPerPage;

        var $recordsTotal;

        var $pagesTotal;

        var $currentPage;

        var $pageVar;

        var $pageNav;



        /**
         * @param string query string

         * @param int number per page

         * @param string page variable name
         * @desc  Constructor for this class.

         */

        function DBPaging($queryStr, $numPerPage, $pageVar)
        {

                global $db; // db class is required, note that this is a customized class.

                $this->dbQueryStr   = $queryStr;

                $this->numPerPage   = $numPerPage;

                $this->pageVar      = $pageVar;

                $this->currentPage  = 1;

                $this->recordsTotal = $db->numRows($db->query($queryStr));

                $this->pagesTotal   = ceil($this->recordsTotal / $this->numPerPage);

        }



        /**

         * @return string query string
         * @param  int page number

         * @desc   Turn to the specified page and return the query string.

         */

        function turnPage($pageNum = 1)
        {

                if ($pageNum < 1 or $pageNum > $this->pagesTotal)
                {

                        $pageNum = 1;

                }

                $this->currentPage = $pageNum;

                return $this->dbQueryStr." LIMIT " . ($pageNum - 1) * $this->numPerPage . "," . $this->numPerPage;

        }



        /**

         * @return string html code of the navigator
         * @desc   Build a navigator.

         */

        function makePageNav()
        {

                global $_GET, $PHP_SELF;

                       

                // build navigator when $this->pagesTotal > 1

                if ($this->pagesTotal <= 1)
                {

                        return "";

                }

               

                // extract url codes and form "hidden" codes

                $inputCodes = "";

                $urlCodes   = "";

                foreach ($_GET as $key => $value)
                {

                        if ($key != $this->pageVar)
                        {

                                $inputCodes .= "<input type=\"hidden\" name=\"$key\" value=\"$value\" />\n";

                                if ($urlCodes != '')

                                {

                                        $urlCodes .= '&amp;';

                                }

                               

                                $urlCodes .= $key . '=' . $value;

                        }

                }

                if ($urlCodes != "")
                {

                        $urlCodes = $PHP_SELF . "?" . $urlCodes . "&amp;";

                }
                else
                {

                        $urlCodes = $PHP_SELF . "?";

                }



               

                // start to build page jumping form

                $this->pageNav = "<form method=\"get\" action=\"$PHP_SELF\" style=\"margin:0\">\n";

               

                if ($this->currentPage > 1)

                {

                        $this->pageNav .= '<b><a href="' . $urlCodes . $this->pageVar . '=1">第一页</a></b> ';

                }

               

                if ($this->currentPage <= 1)
                {

                        $this->pageNav .= "<a href=\"" . $urlCodes . $this->pageVar . "=" . ($this->currentPage + 1) . "\">下一页<strong>&raquo;</strong></a>\n";

                }
                elseif($this->currentPage == $this->pagesTotal)
                {

                        $this->pageNav .= "<a href=\"" . $urlCodes . $this->pageVar . "=" . ($this->currentPage - 1) . "\"><strong>&laquo;</strong>上一页</a>\n";

                }
                else
                {

                        $this->pageNav .= "<a href=\"" . $urlCodes . $this->pageVar . "=" . ($this->currentPage - 1) . "\"><strong>&laquo;</strong>上一页</a> <a href=\"" . $urlCodes . $this->pageVar . "=" . ($this->currentPage + 1) . "\">下一页<strong>&raquo;</strong></a>\n";

                }

               

                if ($this->currentPage < $this->pagesTotal)

                {

                        $this->pageNav .= ' <b><a href="' . $urlCodes . $this->pageVar . '=' . $this->pagesTotal . '">最后页</a></b>';

                }

               

                $this->pageNav .= " 共" . $this->recordsTotal . "条信息 " . $this->currentPage . "/" . $this->pagesTotal . " 页 <input type=\"text\" name=\"" . $this->pageVar . "\" size=\"1\"> 页</span>" . $inputCodes . " <input type=\"submit\" value=\"跳转\" /></form>\n";

                return $this->pageNav;

        }

}

?>

[/php]
发表于 2004-9-6 23:52:32 | 显示全部楼层
用这个类,支持Smarty,内含用法和示例

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表