主要是实现了分页类的一些css特效,前面照着网上写的分页类,但是效果一直不怎么好,今天花了点时间去修饰了下,不过感觉上还是比较水。。。
分页类 page.class.php
<html>
<head>
<style>
#contains1 {
width: 850px;
margin: 5px auto;
}
#contains12 {
margin: 5px auto;
width: 410px;
float: left;
}
#contains123 {
width: 440px;
margin: 5px auto;
float: left;
}
.special {
display: block;
float: left;
text-align: center;
margin-left: 10px;
width: 30px;
border: 1px solid black;
margin-left: 2px;
text-align: center;
text-decoration: none;
}
.special:hover {
background: #0F6;
}
#a2 {
width: 30px;
background: #0F0;
margin-left: 2px;
text-align: center;
text-decoration: none;
background: #CF0;
}
</style>
</head>
<?php
class Page {
private $total; //记录总数
private $listRows; //每页显示行数
private $limit; //限定条件
private $uri; //获取地址
private $pageNum; //最多能分几页
private $config = array("header"=>"记录", "prev"=>"<<", "next"=>">>", 'first'=>"首页", "last"=>"尾页");
private $listNum = 6; //数字衔接
public function __construct($total, $listRows = 10) { //构造函数
$this->total = $total;
$this->listRows = $listRows;
$this->uri = $this->getUri();
$this->page = !empty($_GET["page"])?$_GET["page"]:1; //当不能取到page值的时候就为首页1 否则为当前page值
$this->pageNum = ceil($this->total/$this->listRows);
$this->limit = $this->setLimit();
// var_dump($this);
}
private function setLimit() {
return "Limit ".($this->page-1)*$this->listRows.", {$this->listRows}"; //当前页数减一乘以每页显示的数目
}
private function getUri() { //如何获取uri
$url = $_SERVER["REQUEST_URI"].(strpos($_SERVER["REQUEST_URI"], '?')?'':"?"); //在后面加了一个问号
//获取地址栏上的地址 如果传了page则 不改变 如果没有则需要加个?方便传值
$parse = parse_url($url);
//将地址栏分成两部分
// print_r($parse);
if (isset($parse["query"])) { //当存在传值的page的情况
parse_str($parse['query'],$params);
unset($params["page"]);//先删除
// print_r($params)
$url = $parse['path'].'?'.http_build_query($params);
}
return $url;
}
private 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 class='special' href='{$this->uri}&page=1'>{$this->config["first"]}</a> ";
return $html;
}
private function prev() {
if ($this->page == 1) {
$this->page == 1;
$html .= " <a class='special' href='{$this->uri}&page=".($this->page)."'>{$this->config["prev"]}</a> ";
}
else $html .= " <a class='special' href='{$this->uri}&page=".($this->page - 1)."'>{$this->config["prev"]}</a> ";
return $html;
}
private function pageList() {
$linkPage = "";
$inum = floor($this->listNum / 2);
for ($i = $inum; $i >= 1; $i--) {
$page = $this->page - $i;
if ($page < 1) continue;
$linkPage .= " <a class='special' href='{$this->uri}&page={$page}'>{$page}</a> ";
}
$linkPage .= " <a class='special' id='a2'>{$this->page}</a> ";
for ($i = 1; $i < $inum; $i++) {
$page = $this->page + $i;
if ($page <= $this->pageNum)
$linkPage .= " <a class='special' href='{$this->uri}&page={$page}'>{$page}</a> ";
else
break;
}
// $linkPage .= '</div>';
return $linkPage;
}
private function next() {
if ($this->page == $this->pageNum) {
$this->page = $this->pageNum;
$html .= " <a class='special' href='{$this->uri}&page=".($this->page)."'>{$this->config["next"]}</a> ";}
else $html .= " <a class='special' 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 class='special' href='{$this->uri}&page=$this->pageNum'>{$this->config["last"]}</a> ";
return $html;
}
function fpage() {
$html .= "<div id='contains1'>";
$html .="<div id='contains12'>";
$html .= " <a>共有<b>{$this->total}</b>{$this->config['header']}</a> ";
$html .= " <a>本页显示<b>".($this->end() - $this->start()+1)."</b>条,本页<b>{$this->start()}-{$this->end()}</b></a> ";
$html .= " <a><b>{$this->page}/{$this->pageNum}</b>页</a> ";
$html .= '</div>';
// $html .= $this->first();
$html .= "<div id='contains123'>";
$html .= $this->prev();
$html .= $this->pageList();
$html .= $this->next();
// $html .= $this->last();
$html .= "</div>";
$html .= "</div>";
return $html;
}
}
?>
</html>
用法: index.php
<?php
//导入配置文件
require("dbconfig.php");
//链接数据库,选择数据库
$link = mysql_connect(HOST, USER, PASS) or die(数据库连接失败);
mysql_select_db(DBNAME, $link);
//分页显示内容====================================
$sql = "select * from news";
$result = mysql_query($sql);
$total = mysql_num_rows($result); //获取总行数
$num = 5;
$page = new Page($total, $num);
$sql = "select * from news {$page->limit}"; //计算分页的内容是从几到几
$result = mysql_query($sql);
echo $page->fPage();
while ($row = mysql_fetch_assoc($result)) {
echo "<tr>";
echo "<td>{$row['title']}</td>";
echo "<td>{$row['keywords']}</td>";
echo "<td>{$row['author']}</td>";
echo "<td>".date("Y-m-d", $row['addtime'])."</td>";
echo "<td>{$row['content']}</td>";
echo "<td>
<a href = 'javascript:del({$row['id']})'>删除</a>
<a href = 'javascript:update({$row['id']})'>修改</td>";
echo "</tr>";
}
代码不全,大概就是这样,写好了类,然后再用的话感觉特别方便。。不过这个分页类的css属性用的时候还是要自己去修改下,不然可能会出现点问题。。。类里面的显示首页,尾页也可以加上去。不过加了就要在改下属性了。。修改样式的时候记得把面的空格去掉,不然会影响样式。。