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

PHP通用分页组件

2016-03-22 10:26 561 查看
<?php

/* * *********************************************

* @类名: page

* @参数: $myde_total - 总记录数

* $myde_size - 一页显示的记录数

* $myde_page - 当前页

* $myde_url - 获取当前的url

* @功能: 分页实现

*/

class page {

private $myde_total; //总记录数

private $myde_size; //一页显示的记录数

private $myde_page; //当前页

private $myde_page_count; //总页数

private $myde_i; //起头页数

private $myde_en; //结尾页数

private $myde_url; //获取当前的url

/*

* $show_pages

* 页面显示的格式,显示链接的页数为2*$show_pages+1。

* 如$show_pages=2那么页面上显示就是[首页] [上页] 1 2 3 4 5 [下页] [尾页]

*/

private $show_pages;

public function __construct($myde_total = 1, $myde_size = 1, $myde_page = 1, $myde_url, $show_pages = 2) {

$this->myde_total = $this->numeric($myde_total);

$this->myde_size = $this->numeric($myde_size);

$this->myde_page = $this->numeric($myde_page);

$this->myde_page_count = ceil($this->myde_total / $this->myde_size);

$this->myde_url = $myde_url;

if ($this->myde_total < 0)

$this->myde_total = 0;

if ($this->myde_page < 1)

$this->myde_page = 1;

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->limit = ($this->myde_page - 1) * $this->myde_size;

$this->myde_i = $this->myde_page - $show_pages;

$this->myde_en = $this->myde_page + $show_pages;

if ($this->myde_i < 1) {

$this->myde_en = $this->myde_en + (1 - $this->myde_i);

$this->myde_i = 1;

}

if ($this->myde_en > $this->myde_page_count) {

$this->myde_i = $this->myde_i - ($this->myde_en - $this->myde_page_count);

$this->myde_en = $this->myde_page_count;

}

if ($this->myde_i < 1)

$this->myde_i = 1;

}

//检测是否为数字

private function numeric($num) {

if (strlen($num)) {

if (!preg_match("/^[0-9]+$/", $num)) {

$num = 1;

} else {

$num = substr($num, 0, 11);

}

} else {

$num = 1;

}

return $num;

}

//地址替换

private function page_replace($page) {

return str_replace("{page}", $page, $this->myde_url);

}

//首页

private function myde_home() {

if ($this->myde_page != 1) {

return "<a href='" . $this->page_replace(1) . "' title='首页'>首页</a>";

} else {

return "<p>首页</p>";

}

}

//上一页

private function myde_prev() {

if ($this->myde_page != 1) {

return "<a href='" . $this->page_replace($this->myde_page - 1) . "' title='上一页'>上一页</a>";

} else {

return "<p>上一页</p>";

}

}

//下一页

private function myde_next() {

if ($this->myde_page != $this->myde_page_count) {

return "<a href='" . $this->page_replace($this->myde_page + 1) . "' title='下一页'>下一页</a>";

} else {

return"<p>下一页</p>";

}

}

//尾页

private function myde_last() {

if ($this->myde_page != $this->myde_page_count) {

return "<a href='" . $this->page_replace($this->myde_page_count) . "' title='尾页'>尾页</a>";

} else {

return "<p>尾页</p>";

}

}

//输出

public function myde_write($id = 'page') {

$str = "<div id=" . $id . ">";

$str.=$this->myde_home();

$str.=$this->myde_prev();

if ($this->myde_i > 1) {

$str.="<p class='pageEllipsis'>...</p>";

}

for ($i = $this->myde_i; $i <= $this->myde_en; $i++) {

if ($i == $this->myde_page) {

$str.="<a href='" . $this->page_replace($i) . "' title='第" . $i . "页' class='cur'>$i</a>";

} else {

$str.="<a href='" . $this->page_replace($i) . "' title='第" . $i . "页'>$i</a>";

}

}

if ($this->myde_en < $this->myde_page_count) {

$str.="<p class='pageEllipsis'>...</p>";

}

$str.=$this->myde_next();

$str.=$this->myde_last();

$str.="<p class='pageRemark'>共<b>" . $this->myde_page_count .

"</b>页<b>" . $this->myde_total . "</b>条数据</p>";

$str.="</div>";

return $str;

}

}

?>

<?php

include_once("config.php");

require_once('page.class.php'); //分页类

$showrow = 3; //一页显示的行数

$curpage = empty($_GET['page']) ? 1 : $_GET['page']; //当前的页,还应该处理非数字的情况

$url = "?page={page}"; //分页地址,如果有检索条件 ="?page={page}&q=".$_GET['q']

//省略了链接mysql的代码,测试时自行添加

$sql = "SELECT id,content,lastdate FROM message";

$total = mysql_num_rows(mysql_query($sql)); //记录总条数

if (!empty($_GET['page']) && $total != 0 && $curpage > ceil($total / $showrow))

$curpage = ceil($total_rows / $showrow); //当前页数大于最后页数,取最后一页

//获取数据

$sql .= " LIMIT " . ($curpage - 1) * $showrow . ",$showrow;";

$query = mysql_query($sql);

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>演示:PHP简单漂亮的分页类</title>

<meta name="keywords" content="php分页类" />

<meta name="description" content="本文介绍一款原生的PHP分页类,分页样式有点类似bootstrap。" />

<link rel="stylesheet" type="text/css" href="http://www.sucaihuo.com/jquery/css/common.css" />

<style type="text/css">

p{margin:0}

#page{

height:40px;

padding:20px 0px;

}

#page a{

display:block;

float:left;

margin-right:10px;

padding:2px 12px;

height:24px;

border:1px #cccccc solid;

background:#fff;

text-decoration:none;

color:#808080;

font-size:12px;

line-height:24px;

}

#page a:hover{

color:#077ee3;

border:1px #077ee3 solid;

}

#page a.cur{

border:none;

background:#077ee3;

color:#fff;

}

#page p{

float:left;

padding:2px 12px;

font-size:12px;

height:24px;

line-height:24px;

color:#bbb;

border:1px #ccc solid;

background:#fcfcfc;

margin-right:8px;

}

#page p.pageRemark{

border-style:none;

background:none;

margin-right:0px;

padding:4px 0px;

color:#666;

}

#page p.pageRemark b{

color:red;

}

#page p.pageEllipsis{

border-style:none;

background:none;

padding:4px 0px;

color:#808080;

}

.dates li {font-size: 14px;margin:20px 0}

.dates li span{float:right}

</style>

</head>

<body>

<div class="head">

<div class="head_inner clearfix">

<ul id="nav">

<li><a href="http://www.sucaihuo.com">首 页</a></li>

<li><a href="http://www.sucaihuo.com/templates">网站模板</a></li>

<li><a href="http://www.sucaihuo.com/js">网页特效</a></li>

<li><a href="http://www.sucaihuo.com/php">PHP</a></li>

<li><a href="http://www.sucaihuo.com/site">精选网址</a></li>

</ul>

<a class="logo" href="http://www.sucaihuo.com"><img src="http://www.sucaihuo.com/Public/images/logo.jpg" alt="素材火logo" /></a>

</div>

</div>

<div class="container">

<div class="demo">

<h2 class="title"><a href="http://www.sucaihuo.com/php/223.html">教程:PHP简单漂亮的分页类</a></h2>

<div class="showData">

<ul class="dates">

<?php while ($row = mysql_fetch_array($query)) { ?>

<li>

<span><?php echo $row['lastdate'] ?></span>

<a target="_blank" href="http://www.sucaihuo.com/js"><?php echo $row['content'] ?></a>

</li>

<?php } ?>

</ul>

<!--显示数据区-->

</div>

<div class="showPage">

<?php

if ($total > $showrow) {//总记录数大于每页显示数,显示分页

$page = new page($total, $showrow, $curpage, $url, 2);

echo $page->myde_write();

}

?>

</div>

</div>

</div>

<div class="foot">

Powered by sucaihuo.com 本站皆为作者原创,转载请注明原文链接:<a href="http://www.sucaihuo.com" target="_blank">www.sucaihuo.com</a>

</div>

<script type="text/javascript" src="http://www.sucaihuo.com/Public/js/other/jquery.js"></script>

</body>

</html>

<?php

$host="localhost";

$db_user="root";

$db_pass="";

$db_name="test";

$timezone="Asia/Shanghai";

$link=mysql_connect($host,$db_user,$db_pass);

mysql_select_db($db_name,$link);

mysql_query("SET names UTF8");

header("Content-Type: text/html; charset=utf-8");

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