您的位置:首页 > 编程语言 > PHP开发

php mysql分页操作

2013-12-26 17:01 330 查看
首先建立NewsModle类用于操作数据库

在该类中有两个操作第一个获取 总记录数

//返回所有记录数目
public function getCount($tableName)
{
$sql = "select count(*) from {$tableName}";

$result=$this->mysqli->query($sql);

$row = $result->fetch_assoc();

return $row["count(*)"];

}


另外一个是得到分页数据

//得到分页
public function selectLimitPage($pager)
{
$tableName = $pager->tablename;
$offset = (($pager->CurrentPageID)-1)*($pager->PageSize);
$pageSize = $pager->PageSize;

$sql = "SELECT * FROM {$tableName} LIMIT {$offset},{$pageSize}";

if($result=$this->mysqli->query($sql))
{
if($result->num_rows)
{
while($row=$result->fetch_assoc())
$allNews[] = new NewsToUser($row["title"],$row["decription"],$row["pic_url"],$row["artcile_url"]);
$result->close();
return $allNews;
}
else{
$result->close();
$this->printError("没有获取到任何记录");
return FALSE;
}
}
else{
$this->printError("数据查询失败:".$this->mysqli->error);
return FALSE;
}
}


然后建立一个用于操作分页数据的page类

<?php

require_once 'NewsModle_class.php';

class Pager
{
var $tablename; //数据来源
var $PageSize; //每页的数量
var $CurrentPageID = 1; //当前的页数

var $db;

var $NextPageID; //下一页
var $PreviousPageID; //上一页
var $numPages; //总页数
var $numItems; //总记录数
var $isFirstPage; //是否第一页
var $isLastPage; //是否最后一页

var $pageName;

public function __construct($tablename,$PageSize)
{
$this->tablename = $tablename;

//每个页面的
$this->PageSize = $PageSize;

$this->db = new NewsModle();

//得到条目数目
$this->numItems = $this->db->getCount($tablename);
$this->numPages = ceil($this->numItems/$PageSize);

echo $this->numPages;
}

public function showInfo()
{
if(isset($_GET["CurrentPageID"]))
{
$this->CurrentPageID = $_GET["CurrentPageID"];
}

if($this->CurrentPageID<=1)
{
echo "第{$this->CurrentPageID}页 <a href='{$this->pageName}?CurrentPageID={$this->nex()}'>下一页</a>";
}
else if($this->CurrentPageID>=$this->numPages)
{
echo "<a href='{$this->pageName}?CurrentPageID={$this->pre()}'>上一页</a> 第{$this->CurrentPageID}页";
}
else
{
echo "<a href='{$this->pageName}?CurrentPageID={$this->pre()}'>上一页</a> 第{$this->CurrentPageID}页 <a href='{$this->pageName}?CurrentPageID={$this->nex()}'>下一页</a>";
}
}

public function pre()
{
if($this->CurrentPageID <= 1)
{
return 1;
}
else
{
return $this->CurrentPageID-1;
}
}

public function nex()
{
if($this->CurrentPageID >= $this->numPages )
{
return $this->CurrentPageID;
}
else
{
return $this->CurrentPageID +1;
}
}

public function showData()
{
//得到数据
print_r($this->db->selectLimitPage($this) );
}

/**
* @return the $CurrentPageID
*/
public function getCurrentPageID()
{
return $this->CurrentPageID;
}

}

?>

运行结果如下:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息