<?php
/**
对查询进行分页的类
@link http://www.jb200.com
*/
class paging
{
private $pageSize; //没一页显示的条数 默认是10条。
private $totlePage; //总共有多少条记录
private $dbConnection;//
数据库连接
private $nowPageIndex;//当前显示的页数
private $show; //使用那种方式显示导航,默认的方式是使用show1()首页|上一页|下一页|末页的方式。
/**
构造函数,建立数据库的连接
@$pageSizeP 没一页显示的条数默认是10条。
@$show 使用那种方式显示导航,默认的方式是使用show1()首页|上一页|下一页|末页的方式。
*/
public function _construct($pageSizeP=10,$show="show1")
{
$this->dbConnection = @
mysql_connect("localhost","username","password");
if($this->dbConnection)
{
die("");
}
mysql_select_db($this->dbConnection,"databaseName");
$this->show = $show;
$this->pageSize = $pageSizeP;
}
/**
析构函数,关闭数据库的连接。
*/
public function _destruct()
{
@mysql_close($this->dbConnection);
}
/**
查询数据库,显示数据库的记录条数。
@$sql 查询数据库的
sql语句。
@$charset 查询数据库使用的字符集,默认的是UTF-8。
@return 返回数据库查询的结果,保存成数组,然后返回,条数不确定。
*/
public function querySQL($sql,$charset="UTF-8")
{
mysql_query("SET NAMES ".$charset);
$rs = @mysql_query($sql);
if(!$rs)
{
die("");
}
$num = @mysql_num_rows($rs);
$this->totlePage= ceil($num/$this->pageSize);
$this->nowPageIndex = (isset($_POST['page']) || $_POST['page'] >= 1):$_POST['page']?1;
if($this->nowPageIndex >$this->totlePage)
{
$this->nowPageIndex = $this->totlePage;
}
$start = ($this->nowPageIndex - 1)*$this->pageSize;
mysql_free_result($rs);
$sql .= "LIMIT $start,$this->pageSize";
$rs = @mysql_query($sql);
if(!$rs)
{
die("");
}
$rows = array();
while($row = @mysql_fetch_row($rs))
{
$rows[] = $row;
}
@mysql_free_result($rs);
return $rows;
}
/**
显示导航兰。
@$arg 调用显示导航的函数的参数。
$img1 一个数组,保存导航的连接的图片。在调用show1()使用的。
$size 导航兰的一行显示的页数。在调用show2()使用的。
*/
public function show($arg)
{
$func = $this->show;
$this->$func($arg);
}
/**
以首页|上一页|下一页|末页的方式显示导航。
@$img1 首页|上一页|下一页|末页对应的图片路径数组,默认是NULL,既不显示 图片。
*/
private function show1($img1 = NULL)
{
$url = $_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING'];
$str = "<table>
<tr><td>当前$this->nowPageIndex页/共$this->totlePage页</td><td><a herf='";
$str .= ereg_replace("page=/.&","page=1&",$url);
$str .= "'>";
if(isset($img) || $img != NULL)
{
$str .= "<img src=$img[0] alt=首页></a></td><td><a href=";
$page1 = $this->nowPageIndex - 1;
$str .= ereg_replace("page=/.&","page=$page1&",$url);
$str .= "><img src=$img[1] alt=上一页></a></td><td><a href=";
$page1 = $this->nowPageIndex + 1;
$str .= ereg_replace("page=/.&","page=$page1&",$url);
$str .= "><img src=$img[2] alt=下一页></a></td><td><a href=";
$page1 = $this->totlePage ;
$str .= ereg_replace("page=/.&","page=$page1&",$url);
$str .= "><img src=$img[3] alt=末页></a></td><td></tr><table>";
}
else
{
$str .= "首页></a></td><td><a href=";
$page1 = $this->nowPageIndex - 1;
$str .= ereg_replace("page=/.&","page=$page1&",$url);
$str .= ">上一页</a></td><td><a href=";
$page1 = $this->nowPageIndex + 1;
$str .= ereg_replace("page=/.&","page=$page1&",$url);
$str .= ">下一页</a></td><td><a href=";
$page1 = $this->totlePage ;
$str .= ereg_replace("page=/.&","page=$page1&",$url);
$str .= ">末页</a></td><td></tr><table>";
}
echo $str;
}
/**
以1|2|3|。。。的方式显示导航。
@$size 导航兰每一行显示的页数,默认是10。
*/
private function show2($size =10)
{
$url = $_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING'];
$str = "<table><tr>";
for($index = 1 ; $index <= $this->totlePage ; $index++)
{
$str .= "<td><a herf=";
$str .= ereg_replace("page=/.&","page=$index&",$url);
$str .= "$index</a></td>";
if($index == $size)
{
$str .="</tr><tr>";
}
}
$str .= "</tr></table>";
echo $str;
}
}
?>