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

php 分页类

2013-08-27 15:03 405 查看
分页公式:页数=(总记录数-1)/每页显示记录数+1;

借助这个公式,实现以下分页类;

<?php
class Fpage{

private $total; //数据表中总记录数

private $listRows; //每页显示的行数

private $limit;

private $uri;

private $pageNum; //行数

private $config = array("header"=>"记录","pre"=>"上一页","next"=>"下一页","first"=>"首页",

"last"=>"尾页");

public function __construct($total,$listRows=5){

$this->total = $total;

$this->listRows = $listRows;

$this->uri = $this->getUri();

$this->page = !empty($_GET['page'])?$_GET['page']:1;

$this->pageNum = ceil($this->total/$this->listRows);

$this->limit = $this->setLimit();

}

private function setLimit(){

return "Limit ".($this->page - 1)*$this->listRows.",{$this->listRows}";

}

private function getUri(){

$url = $_SERVER["REQUEST_URI"].(strpos($_SERVER["REQUEST_URI"],'?')?'':"?");

$parse = parse_url($url);

if(isset($parse["query"])){

parse_str($parse["query"],$params);

unset($params['page']);

$url = $parse['path'].'?'.http_build_query($params);

}

return $url;

}

public function __get($args){

if($args == "limit"){

return $this->limit;

}

else{

return null;

}

}

private function start(){

if($this->total == 0){

return 0;

}

else{

return ($this->page - 1)*$this->listRows + 1;

}

}

private function end(){

return min($this->page*$this->listRows,$this->total);

}

private function first(){

if($this->page == 1){

$html .='';

}

else{

$html.="  <a href='{$this->uri}&page=1'>{$this->config['first']}</a>  ";

}

return $html;

}

private function pre(){

if($this->page == 1){

$html .='';

}

else{

$html.="  <a href='{$this->uri}&page=".($this->page-1)."'>{$this->config['pre']}</a>  ";

}

return $html;

}

private function next(){

if($this->page == $this->pageNum){

$html .='';

}

else{

$html.="  <a href='{$this->uri}&page=".($this->page+1)."'>{$this->config['next']}</a>  ";

}

return $html;

}

private function last(){

if($this->page == $this->pageNum){

$html .='';

}

else{

$html.="  <a href='{$this->uri}&page={$this->pageNum}'>{$this->config['last']}</a>  ";

}

return $html;

}

private function pageList(){

$pageLink = '';

$inum = floor($this->pageNum/2);

for($i=$inum;$i>=1;$i--){

$page = $this->page-$i;

if($page<1)continue;

else{

$pageLink.=" <a href='{$this->uri}&page={$page}'>{$page}</a> ";

}

}

$pageLink.=" {$this->page} ";

for($i=1;$i<$inum;$i++){

$page = $this->page+$i;

if($page<=$this->pageNum){

$pageLink .= " <a href='{$this->uri}&page={$page}'>{$page}</a> ";

}

else break;

}

return $pageLink;

}

private function goPage(){

return '  <input type="text" onkeydown="javascript:if(event.keyCode == 13){var page=(this.value>'.$this->pageNum.')?'.$this->pageNum.':this.value;location=\''.$this->uri.'&page=\'+page+\'\'}" style="width:35" value='.$this->page.'><input type="button" value="GO" onclick="javascript:if(event.keyCode == 13){var page=(this.previousSibling.value>'.$this->pageNum.')?'.$this->pageNum.':this.previousSibling.value;location=\''.$this->uri.'&page=\'+page+\'\'}">  ';

}

public function fpage($display=array(0,1,2,3,4,5,6,7,8)){

$html[0]= "  共有<b>{$this->total}</b>条{$this->config['header']}  ";

$html[1]= "  每页显示<b>{$this->listRows}</b>条{$this->config['header']},

本页<b>{$this->start()}-{$this->end()}</b>条  ";

$html[2]="  <b>{$this->page}/{$this->pageNum}</b>页  ";

$html[3]=$this->first();

$html[4]=$this->pre();

$html[5]=$this->pageList();

$html[6]=$this->next();

$html[7]=$this->last();

$html[8]=$this->goPage();

foreach($display as $key){

$Fpage.=$html[$key];

}

return $Fpage;

}

}

?>

应用:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
//自动加载函数类
function __autoload($className){
include strtolower($className).'.class.php';
}

$link = mysql_connect("localhost","user","password") or die ("链接用户失败");
@$db = mysql_select_db("dbname") or die("链接数据库失败");

$result = mysql_query("select * from shops");
$total = mysql_num_rows($result);

$num = 5;

$page = new Fpage($total,$num);
$sql = "select * from shops {$page->limit}";
$result = mysql_query($sql) or die ("操作错误");
$cols = mysql_num_fields($result);

echo "<table align='center' border='2' width='900'>";
echo "<caption><h1>SHOPS</h1></caption>";

echo '<tr>';
for($i=0;$i<$cols;$i++){
echo '<th>'.mysql_field_name($result,$i).'</th>';
}
echo '</tr>';

while($rows=mysql_fetch_assoc($result)){
echo "<tr>";
echo "<td>".$rows['id']."</td>";
echo "<td>".$rows['name']."</td>";
echo "<td>".$rows['dates']."</td>";
echo "<td>".$rows['price']."</td>";
echo "<td>".$rows['desnc']."</td>";
echo "</tr>";

}

echo "<tr><td colspan='5' align='right'>".$page->fpage(array(3,4,5,6,7,8,0,1,2))."</td></tr>";
echo "</table>";
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: