php分頁代碼

来源:互联网 发布:政府 汽车数据 编辑:程序博客网 时间:2024/05/17 22:54
<?php

if (!defined("__PAGEITEM__")) {
     define("__PAGEITEM__", 1);
} else {
     exit(3);
}

class PageItem {
     var $iDefaultRecords = 10; // 默认每页显示记录数,如果没有设置,就使用默认值
     var $iMaxRecord; //每页记录数
     var $iTotal; //记录总数
     var $sqlRecord; // 获取记录的SQL查询
     var $iPages; //总页数
     var $CPages; //当前页数
     /*
   * 构造函数 -- 初始化变量
   * 参数:SQL查询语句,将忽略LIMIT语句
   * */

     function PageItem($sql = "")
     {
         // register_shutdown_function($this->_PageItem());
         $this->SetMaxRecord($this->iDefaultRecords);
         /*
        * 解析SQL语句
        * */
         if ($sql <> "") {
             list($sql) = spliti("LIMIT", $sql); // 去除LIMIT语句
             $this->sqlRecord = trim($sql);
             list(, $sql) = spliti("FROM", $sql);
             $sql = trim($sql);
    if(preg_match ("//bGROUP/b /bBY/b/i", $sql))
    {
     //echo "HAVE GROUP BY";
     if(preg_match ("//bHAVING/b/i", $sql)) list(,$field) = spliti("HAVING",$sql);
     list($field) = spliti(' ',trim($field));
     //echo $field;
     $this->iTotal = $this->CountRecord("SELECT $field,COUNT(DISTINCT $field) AS cnt FROM " . $sql,2);
    }
    else $this->iTotal = $this->CountRecord("SELECT COUNT(*) AS cnt FROM " . $sql,1);
         }
         $this->iPages = ceil($this->iTotal / $this->iMaxRecord);
         $this->CPages = $_REQUEST['page'];
         if ($this->CPages <= 0) $this->CPages = 1;
         if ($this->CPages > $this->iPages) $this->CPages = $this->iPages;
         //echo "SELECT COUNT(*) AS cnt FROM " . $sql;
   //echo $this->iTotal;
     }
     /*
      * 析构函数 -- 暂时不可用
      * */
     function _PageItem()
     {
         // $this->linkid = NULL;
     }

     function SetMaxRecord($cnt)
     {
         $this->iMaxRecord = $cnt;
     }

     /*
      * 统计匹配的记录总数
      * */
     function CountRecord($sql,$type)
     {
   //echo $sql;
   if($type == 1)
   {
    if (($records = mysql_query($sql)) && ($record = mysql_fetch_assoc($records))) {
     return $record['cnt'];
    } else return 0;
   }
   elseif($type == 2)
   {
    if($records = mysql_query($sql))
     return mysql_affected_rows();
   }
     }
/*
   * 读取记录
   * */
function ReadList()
{
   $ret = array();
   $this->sqlRecord.=" LIMIT ".($this->CPages-1)*$this->iMaxRecord.",".$this->iMaxRecord;
   $records = mysql_query($this->sqlRecord);
   if(!$records) return;
   while($record = mysql_fetch_array($records))
   {
    $ret[] = $record;
   }
   return $ret;
}

     function LinktoPage($page, $msg)
     {
         $link = $this->PageUrl($page);
         return "<A href=/"$link/">$msg</A>/n";
     }
     function PageUrl($page)
     {
         $phpself = "http://" . $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF'];
         $querystring = $_SERVER['QUERY_STRING'];
         $querystring = preg_replace("/page=[0-9]*&?/i", "", $querystring);
         $link = $phpself . "?page=$page&" . $querystring;
         return $link;
     }

     /*
   * 显示当前页及总页数   
   * */
     function PageNav()
     {
         echo "第" . $this->CPages . "页/共" . $this->iPages . "页";
     }

     /*
    * 显示翻页按钮,包括首页、下页、上页、未页
    * */

     function PageButton()
     {
         if ($this->CPages > 1) {
             echo $this->LinktoPage(1, "首页");
             echo " | ";
             echo $this->LinktoPage($this->CPages-1, "上一页");
         } else {
             echo "首页 | 上一页";
         }

         if ($this->CPages < $this->iPages) {
             echo " | ";
             echo $this->LinktoPage($this->CPages + 1, "下一页");
             echo " | ";
             echo $this->LinktoPage($this->iPages, "首页");
         } else {
             echo " | 下一页 | 尾页";
         }
     }
     /*
    * 显示跳转页选择框
    * */

     function SelectItem()
     {
         echo "跳到第<SELECT name='topage' size='1' onchange='window.location=this.value'>/n";
         for($i = 1;$i <= $this->iPages;$i++) {
             if ($this->CPages == $i)
                 $extra = "selected";
             else
                 $extra = "";
             echo "<OPTION VALUE='" . $this->PageUrl($i) . "' $extra>$i</OPTION>";
         }
         echo "</SELECT>/n";
     }

     /*
      * 一次性显示所有按钮组件
      * */
     function myPageItem()
     {
         $this->PageButton();
         $this->SelectItem();
         $this->PageNav();
     }
} // 类结束

?>   



----------------------------------------
調用頁面:

<?php

require_once("cc.php");

$conn=mysql_connect("localhost","root","a") or die("Could not connect:".mysql_error());
mysql_select_db("test",$conn);

$sql = "select * from sample1 limit 0,20";
$hdc = new PageItem($sql);

echo $hdc->myPageItem();
$arrRecords = $hdc->ReadList();

echo "<br>".count($arrRecords);

echo "<hr>";

for($i=0;$i<count($arrRecords);$i++)
{
    $arrRecord=$arrRecords[$i];

    for($j=0;$j<count($arrRecord);$j++)
    {
        echo $arrRecord[$j]."&nbsp;";
    }

    echo "<br>";
}


?>
原创粉丝点击