自己写的一个分页类 ,不是很完整,个别没有做验证,但可以使用,分页效果见文章底部。除了链接数据库的代码没有粘贴上来,其他的都粘贴了。供学习使用~

 <?php
/**
* Created by PhpStorm.
* User: Caoxt
* Date: 15-7-3
* Time: 上午10:03
*/
class page {
public $pageSize; //每页显示的文章条数
public $showPage; //页数条显示的条数
public $count; //文章总条数
public $page; //当前页
public $mergyStr; //存储页码的变量
public $skip; //跳转页开关,默认为false关闭 //初始化参数
public function __construct($count, $pageSize = 10, $showPage = 5, $currentPage = 1, $skip = false) {
$this->pageSize = $pageSize;
$this->showPage = $showPage;
$this->count = $count;
$this->page = $this->checkPage($currentPage);
$this->mergyStr = '';
$this->skip = $skip;
} //检查传递的$page的合法性
public function checkPage($currentPage) {
if($currentPage < 1 || empty($currentPage)) {
$currentPage = 1;
}
if($currentPage > $this->totalPages()) {
$currentPage = $this->totalPages();
}
return $currentPage;
} //计算偏移量
public function pageOffset() {
return ($this->showPage-1)/2;
} //计算总页数
public function totalPages() {
return ceil($this->count/$this->pageSize);
} //获取页面URL
public function getPageUrl() {
$CurrentUrl = $_SERVER["REQUEST_URI"];
$arrUrl = parse_url($CurrentUrl);
$urlQuery = $arrUrl["query"]; if($urlQuery){
//print_r($this->page);
$urlQuery = preg_replace("/(^|&)page=/" . $this->page, "", $urlQuery);
$CurrentUrl = str_replace($arrUrl["query"], $urlQuery, $CurrentUrl); if($urlQuery){
$CurrentUrl.="&page";
}
else $CurrentUrl.="page"; } else {
$CurrentUrl.="?page";
} return $CurrentUrl;
} //页码显示行
public function GetPagerContent() {
$start = 1;
$end = $this->totalPages();
$this->mergyStr .= "<div class='page'>";
if($this->page > 1) {
$this->mergyStr .= " <a href='".$this->getPageUrl()."="."1'>首页</a>";
$this->mergyStr .= " <a href='".$this->getPageUrl()."=".($this->page-1)."'>上一页</a>";
}else{
$this->mergyStr .= " <span class='disable'>首页</span>";
$this->mergyStr .= " <span class='disable'>上一页</span>";
} if($this->totalPages() > $this->showPage) {
if($this->page > $this->pageoffset()+1) {
$this->mergyStr .= "...";
} if($this->page > $this->pageoffset()) {
$start = $this->page-$this->pageoffset();
$end = $this->totalPages() > $this->page+$this->pageoffset() ? $this->page+$this->pageoffset() : $this->totalPages();
}
else{
$start = 1;
$end = $this->totalPages() > $this->showPage ? $this->showPage : $this->totalPages();
} if($this->page + $this->pageoffset() > $this->totalPages()) {
$start = $start - ($this->page + $this->pageoffset() - $end);
} } for($i=$start; $i<=$end; $i++) {
if($i == $this->page) {
$this->mergyStr .= "<span class='current'>{$i}</span>";
}else{
$this->mergyStr .= " <a href='".$this->getPageUrl()."=".$i."'>{$i}</a>";
} } if($this->totalPages() > $this->showPage && $this->totalPages() > $this->page + $this->pageoffset()) {
$this->mergyStr .= "...";
} if($this->page < $this->totalPages()) {
$this->mergyStr .= " <a href='".$this->getPageUrl()."=".($this->page+1)."'>下一页</a>";
$this->mergyStr .= " <a href='".$this->getPageUrl()."=".$this->totalPages()."'>尾页</a>";
}else{
$this->mergyStr .= " <span class='disable'>下一页</span>";
$this->mergyStr .= " <span class='disable'>尾页</span>";
} $this->mergyStr .= " 共{$this->totalPages()}页"; //显示跳转框
if($this->skip == true) {
$this->mergyStr .= $this->skipNumPage();
} $this->mergyStr .= "</div>"; print_r($this->mergyStr);
} //跳转页
public function skipNumPage() {
$this->mergyStr .= "<form action='' method='get'>";
$this->mergyStr .= "第<input type='text' name='page' style='width:30px; height:25px; border: 1px solid #aaaadd;'>页";
$this->mergyStr .= "<input type='submit' value='查询' style='border: 1px solid #aaaadd; text-decoration: none; padding:4px 10px 4px 10px; ' >";
$this->mergyStr .= "</form>";
} }

上面是类文件的所有代码,以下是调用实例:

<?php
//数据库链接,不写了 //每页显示条数
$pageSize = 10;
//页码行显示的条数
$showPage = 5;
//当前页
$page = isset($_GET['page']) ? $_GET['page'] : 1; //当前页显示的文章
$sql = "select * from follow_trade_1 order by `follow_trade_id` asc limit ".($page-1)*$pageSize.",{$pageSize}";
$query = mysql_query($sql); //计算总条数
$sql_count = mysql_query("select count(*) from follow_trade_1");
$query_count = mysql_fetch_row($sql_count);
$count = $query_count[0]; //实例化分页类
require("page.php");
$p = new page($count, $pageSize, $showPage, $page, true); //table里的文章数据
echo "<table border='1' style='width:400px;'>";
echo "<tr><td>follow_trade_id</td><td>follow_id</td></tr>";
while($rs = mysql_fetch_assoc($query)) {
echo "<tr><td>{$rs['follow_trade_id']}</td><td>{$rs['follow_id']}</td></tr>";
}
echo "</table>"; //读取分页条
$p->GetPagerContent();

样式CSS:

<style>
div.page{text-align: left; margin-top: 10px;}
div.page a{border: 1px solid #aaaadd; text-decoration: none; padding:2px 10px 2px 10px; margin: 2px;}
div.page span.current{border: 1px solid #000099; background-color: #000099; padding: 4px 10px 4px 10px; margin: 2px; color: #fff; font-weight: bold;}
div.page span.disable{border: 1px solid #eee; padding: 2px 5px 2px 5px; margin: 2px; color: #ddd;}
div.page form{display: inline;}
</style>

效果如图所示:

php 自己写的好看的分页类的更多相关文章

  1. 二十八、CI框架之自己写分页类,符合CI的路径规范

    一.参照了CSDN上某个前辈写的一个CI分页类,自己删删改改仿写了一个类似的分页类,代码如下: 二.我们在模型里面写2个数据查询的函数,一个用于查询数据数量,一个用于查询出具体数据 三.我们在控制器里 ...

  2. Ci 自己的分页类【原创】

    这里是自己手写的一个CI分页类的实现 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); /** ...

  3. 二十七、CI框架之自己写分页类并加载(写分页还是有难度,搞了一整天)

    一.我们写好自己的分页代码,防止library目录中,带构造函数 二.在模型中,添加2个函数,一个是查询数据的条数,第二个是取出数据库中的数据 三.在控制中,写入相应的代码,如下: 四.在界面中,写入 ...

  4. ***CI分页:为CodeIgniter写的分页类

    ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ...

  5. 用PHP写的一个简单的分页类 1.0版

    <?php /* 分页类 用于实现对多条数据分页显示 version:1.0 author:Knight E-Mail:S.Knight.Work@gmail.com Date:2013-10- ...

  6. 自己写的一个ASP.NET服务器控件Repeater和GridView分页类

    不墨迹,直接上代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; usin ...

  7. 用PHP写的一个简单的分页类 2.0版

    <?php /* 分页类 用于实现对多条数据分页显示 version:2.0 //基于1.0 数据库查询用mysqli实现 author:Knight E-Mail:S.Knight.Work@ ...

  8. PHP+jQuery 长文章分页类 ( 支持 url / ajax 分页方式 )

    /* ******* 环境:Apache2.2.8 ( 2.2.17 ) + PHP5.2.6 ( 5.3.3 ) + MySQL5.0.51b ( 5.5.8 ) + jQuery-1.8 **** ...

  9. PHP+jQuery 列表分页类 ( 支持 url 分页 / ajax 分页 )

    /* ******* 环境:Apache2.2.8 ( 2.2.17 ) + PHP5.2.6 ( 5.3.3 ) + MySQL5.0.51b ( 5.5.8 ) + jQuery-1.8.3.mi ...

随机推荐

  1. Qt保证只有一个实例(将CreateMutex得到的handle通过转换得到值)

    使用CreateMutex 可以实现只启动一个应用程序实例 view plaincopy to clipboardprint?#include <QApplication>#include ...

  2. clistctrl 虚拟列表

    一.什么是虚拟列表控件 虚拟列表控件是指带有LVS_OWNERDATA风格的列表控件.. 二.为什么使用虚拟列表控件 我们知道,通常使用列表控件CListCtrl,需要调用InsertItem把要显示 ...

  3. CSS 常用自定义样式

    目录: 1. 文本单行显示,并对超出部分截断以省略号代替: 2.列布局或栅格布局:比如:左侧固定宽度,右侧占满剩下的宽度: 章节: 1. 文本单行显示,并对超出部分截断以省略号代替:参见以下代码: d ...

  4. highlight a DOM element on mouse over, like inspect does

    highlight a DOM element on mouse over, like inspect does highlight a DOM element on mouse over, like ...

  5. VB.NET版机房收费系统---SqlHelper

    SqlHelper,最早接触这个词儿的时候,好像是13年的暑假,那个夏天来的比往年来的稍晚一些,呵呵,sqlhelper,翻译成中文就是数据库助手,帮手.百度百科这样对她进行阐述: SqlHelper ...

  6. SGU 319 Kalevich Strikes Back(线段树扫描线)

    题目大意: n个矩形,将一个大矩形分成 n+1 块.矩形之间不重合,可是包括.求这n+1个矩形的面积 思路分析: 用线段树记录他们之间的父子关系.然后dfs 计算面积. 当给出的矩形上边的时候,就要记 ...

  7. C#复习一( Twenty Days)

      今天开始将要复习最近所学的一些C#知识.下面就来总结一下今天所复习的内容,以此来巩固我对C#知识的掌握.今天主要以举几个程序为例. 首先还是要注意代码的规范: –注释//,/**/,/// –骆驼 ...

  8. XGPush集成(信鸽集成)demo

    #import "AppDelegate.h" #import "XGPush.h" #import "XGSetting.h" #defi ...

  9. JS 利用window.open实现post方式的参数传递

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

  10. php如何开启GD库

    GD库是干什么用的呢!它是php处理图形的扩展库,GD库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片.GD库在php中默认是没有开启的,如果想让它支持图片处理功能,那么就要手 ...