类文件(page.class.php):
<?php
/**
* ---------------分页类---------------*
*/
class pageClass {
private $myde_count; //总记录数
var $myde_size; //每页记录数
private $myde_page; //当前页
private $myde_page_count; //总页数
private $page_url; //页面URL
private $page_i; //起始页
private $page_ub; //结束页
var $page_limit; //当前页记录起始数
//构造函数
function __construct($myde_count=0,$myde_size=1,$myde_page=1,$page_url)
{
$this->myde_count=$this->numeric($myde_count);
$this->myde_size= $this->numeric($myde_size);
$this->myde_page= $this->numeric($myde_page);
$this->page_limit=($this->myde_page*$this->myde_size)-$this->myde_size;
$this->page_url=$page_url;
if($this->myde_page<1)$this->myde_page=1;
if($this->myde_count<0)$this->myde_page=0;
$this->myde_page_count=ceil($this->myde_count/$this->myde_size);
if($this->myde_page_count<1)$this->myde_page_count=1;
if($this->myde_page>$this->myde_page_count)
$this->myde_page=$this->myde_page_count;
$this->page_i=$this->myde_page-2;
$this->page_ub=$this->myde_page+2;
if($this->page_i<1){
$this->page_ub=$this->page_ub+(1-$this->page_i);
$this->page_i=1;
}
if($this->page_ub>$this->myde_page_count){
$this->page_i=$this->page_i-($this->page_ub-$this->myde_page_count);
$this->page_ub=$this->myde_page_count;
if($this->page_i<1)$this->page_i=1;
}
}
private function numeric($id) //判断是否为数字
{
if(strlen($id)){
if(!preg_match("^[0-9]+$^",$id)){
$id=1;
}else{
$id=substr($id,0,11);
}
}else{
$id=1;
}
return $id;
}
private function page_replace($page) //地址替换
{
return str_replace("{page}",$page,$this->page_url);
}
private function myde_home() //首页
{
if($this->myde_page!=1){
return "<a href=\"".$this->page_replace(1)."\" title=\"首页\">首页</a>\n";
}else{
return "首页\n";
}
}
private function myde_prev() //上一页
{
if($this->myde_page!=1){
return '<a href="'.$this->page_replace($this->myde_page-1)."\" title=\"上一页\">上一页</a>\n"; //单引号
}else{
return "上一页\n";
}
}
private function myde_next() //下一页
{
if($this->myde_page!=$this->myde_page_count){
return "<a href=\"".$this->page_replace($this->myde_page+1)."\" title=\"下一页\">下一页</a>\n";
}else{
return "下一页\n";
}
}
private function myde_last() //尾页
{
if($this->myde_page!=$this->myde_page_count){
return "<a href=\"".$this->page_replace($this->myde_page_count)."\" title=\"尾页\">尾页</a>\n";
}else{
return "尾页\n";
}
}
function myde_write($id='page') //输出
{
$str ="<div id=\"".$id."\" class=\"admin_pages\">\n <ul>\n ";
$str.="总记录:<span>".$this->myde_count."</span>条 \n";
$str.="<span>".$this->myde_page."</span> / <span>".$this->myde_page_count."</span>页 \n";
$str.=$this->myde_home();
$str.=$this->myde_prev();
for($page_for_i=$this->page_i;
$page_for_i<=$this->page_ub;$page_for_i++){
if($this->myde_page==$page_for_i){
$str.="<font color=red><b>".$page_for_i."</b></font> \n";
}else{
$str.="<a href=\"".$this->page_replace($page_for_i)."\" title=\"第".$page_for_i."页\">";
$str.=$page_for_i."</a>\n";
}
}
$str.=$this->myde_next();
$str.=$this->myde_last();
$str.="</div>";
return $str;
}
}
/*
$page=new pageClass(1000,5,$_GET['page'],'?page={page}'); //用于动态
$page=new pageClass(1000,5,$_GET['page'],'list-{page}.html'); //用于静态或者伪静态
$page->myde_write();
*/
?>
调用文件(index.php)
<?php
include("page.class.php");
mysql_connect("localhost","root","123")or die(mysql_error());
mysql_select_db("php100class")or die(mysql_error());
mysql_query("set names 'gbk'");
$pagesize=5;
$num_query=mysql_query("select count(*) from `news`");
$rs=mysql_fetch_array($num_query);
$count=$rs[0];
$pagenum=ceil($count/$pagesize);
$page=empty($_GET['page'])?1:$_GET['page'];
echo "<table>";
$sql="select * from news limit ".($page-1)*$pagesize.",".$pagesize;
$query=mysql_query($sql);
while($rs=mysql_fetch_array($query)){
?>
<tr><td>标题:<?php echo $rs['id']."、".$rs['title']; ?> </td><td>作者:<?php echo $rs['author']; ?> </td>
<td>时间:<?php echo $rs['time']; ?> </td></tr>
<?php
}
echo "</table><br />";
$page=new pageClass($count,$pagesize,$page,'?page={page}'); //用于动态
echo $page->myde_write();
mysql_close();
?>