实现分页效果如下:

以下标注红色字体的为重点
 
找到文件page.class.php在ThinkPHP/Library/Thinkpage.class.php并打开文件,复制函数show,在本文件中黏贴并改成你自定义的函数名,在此我更改为show1,更改上一页,下一页,第一页和最后一页的逻辑输出,将数字链接for循环删除,其他不变,更改如下:
 public function show1() {
if(0 == $this->totalRows) return ''; /* 生成URL */
$this->parameter[$this->p] = '[PAGE]';
$this->url = U(ACTION_NAME, $this->parameter);
/* 计算分页信息 */
$this->totalPages = ceil($this->totalRows / $this->listRows); //总页数
if(!empty($this->totalPages) && $this->nowPage > $this->totalPages) {
$this->nowPage = $this->totalPages;
} /* 计算分页临时变量 */
$now_cool_page = $this->rollPage/2;
$now_cool_page_ceil = ceil($now_cool_page);
$this->lastSuffix && $this->config['last'] = $this->totalPages; //上一页
$up_row = $this->nowPage - 1;
$up_page = $up_row > 0 ? '<a class="prev" href="' . $this->url($up_row) . '">' . 上一页 . '</a>' : '<a class="prev" href="javascript:(0);">' . 上一页 . '</a>'; //下一页
$down_row = $this->nowPage + 1;
$down_page = ($down_row <= $this->totalPages) ? '<a class="next" href="' . $this->url($down_row) . '">' .下一页 . '</a>' : '<a class="next" href="javascript:(0);">' .下一页 . '</a>'; //第一页
$the_first=$this->nowPage > 1 ? '<a class="first" href="' . $this->url(1) . '">' . 首页 . '</a>' : '<a class="first" href="javascript:(0);">' . 首页 . '</a>'; //最后一页
$the_end = $this->nowPage < $this->totalPages ? '<a class="end" href="' . $this->url($this->totalPages) . '">' .末页. '</a>' : '<a class="end" href="javascript:(0);">' .末页. '</a>'; //数字连接
$link_page = ""; //替换分页内容
$page_str = str_replace(
array('%HEADER%', '%NOW_PAGE%', '%UP_PAGE%', '%DOWN_PAGE%', '%FIRST%', '%LINK_PAGE%', '%END%', '%TOTAL_ROW%', '%TOTAL_PAGE%'),
array($this->config['header'], $this->nowPage, $up_page, $down_page, $the_first,$link_page, $the_end, $this->totalRows, $this->totalPages),
$this->config['theme']);
return "{$page_str}";
}

在定义的model中定义查询数据库中数据并分页

public function getDocPageList($table,$where,$p, $pageSize,$order='docid desc'){
$list= M($table)->where($where)->order($order)
->page($p.','.$pageSize)
->select();
$count = M($table)->field('*')
->where($where)
->order($order)
->count(); $Page = new \Think\Page($count, $pageSize);
$module_name = '/' . MODULE_NAME . '/' . CONTROLLER_NAME . '/' . ACTION_NAME;//此处为获取路径,模块名/控制器名/方法名
//$page便是上面效果的静态代码显示
     $Page->setConfig('header','<p><span>%NOW_PAGE%</span>/<span title="%TOTAL_PAGE%" class="all">%TOTAL_PAGE%</span></p>
<p>转到<input type="text" id="page_num" class="txt_page" />页</p>
<a class="gopage" href="'.$module_name.'/p/">GO</a>');
$Page->setConfig('theme','%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% %HEADER%');
$show = $Page->show1();
$result['pages'] = $show;
$result['list'] = $list;
$result['count'] = $count;
return $result;
}

以上分页的css样式如下

/*分页*/
.d_page{width: 700px;clear: both;margin:0px auto;padding-top:20px;}
.d_page a,.d_page p{display:inline-block;margin:0px 8px;}
.d_page a,.d_page input{border:1px solid #e6e6e6;padding:5px 10px;}
.d_page input{width:40px}
.d_page a:hover{background:#d57a22;border:1px solid #d57a22;color:#fff;}

在控制器中调用上面model下的函数,此处我以查询user数据表为例:

//定义对象,引用控制器
public function __construct() {
parent::__construct();
$this->docinfo_model = new \Common\Model\DocinfoModel();
} $result = $this->docinfo_model->getDocPageList('user',$where,$p, $pageSize,$order); $this->assign("doclist", $result['list']);
$this->assign("count", $result['count']);
$this->assign("pages", $result['pages']); $this->display();

在模板中输出的时候直接输出pages

<div>{$pages}</div>

使用jquery实现分页的跳转

 <script src='__PUBLIC__/js/jquery-1.8.3.min.js'></script>
<script>
$(function(){
//分页跳转
$('#page_num').blur(function(){
var url=$('.gopage').attr('href');
var strs=url.substr(0); var value=this.value;
var all=$('.all').attr("title");
var i=parseFloat(all);//将字符转化为数字 if(value<=i && !isNaN(value) && value>0){
value=Math.ceil(value);
}else{
value='';
}
var nuwurl=strs+value;
$(".gopage").attr("href",nuwurl);
}) });
</script>

thinkphp分页格式的完全自定义,直接输入数字go到输入数字页的更多相关文章

  1. ThinkPHP 分页功能梳理

    最近在开发一个项目,使用了国内流行的ThinkPHP框架,我之前没怎么用过这个框架,也是临时抱佛脚,用的不怎么样?可能理解不是很深刻,如果有说的不对或不正确的地方,请大家多包涵,多指教. ThinkP ...

  2. thinkphp分页实现

    以上为我对于thinkphp分页的实现效果,两种方法,一种调用公共函数中的函数方法(参考http://www.cnblogs.com/tianguook/p/4326613.html),一种是在模型中 ...

  3. ThinkPHP分页使用例子(二十一)

    原文:ThinkPHP分页使用例子(二十一) ThinkPHP分页使用 PHP代码: public function fenye(){ $User = M('Leyangjun'); // 实例化Us ...

  4. 分页技巧_改进JSP页面中的公共分页代码_实现分页时可以有自定义的过滤与排序条件

    分页技巧__改进JSP页面中的公共分页代码 自定义过滤条件问题 只有一个url地址不一样写了很多行代码 public>>pageView.jspf添加 分页技巧__实现分页时可以有自定义的 ...

  5. ThinkPHP分页实例

    ThinkPHP分页实例 (2014-09-20 15:34:36)   很多人初学thinkphp时,不太熟悉thinkphp的分页使用方法,现在将自己整理的分页方法分享下,有需要的朋友可以看看. ...

  6. thinkphp 分页类 url 编码处理

    在做thinkphp分页的时候  thinkphp 中的分页 有一个小问题 就是 在有form 表单 搜索中文的时候,点击下一页的话 中文会被转换成编码. 如图: 最直接的方法就是 直接修改 thin ...

  7. iOS TextField输入限制(限制长度、只能输入数字,只能输入数字字母……)

    项目中各个地方都会用到TextField,textField的输入也会有各种需求,各种限制,每次用到的时候要重写一遍这些限制,导致各种垃圾代码,各种重复,有一天,我终于看不下去了,于是把textFie ...

  8. OJ题:输入一个多位的数字,求各数位相加。

    题目内容: 输入一个多位的数字,1求各数位相加. 例如输入12345,则计算1+2+3+4+5=15 输入格式: 一个整数 输出格式: 一个整数 输入样例: 1234567890 输出样例: 45 时 ...

  9. C语言:输入一个多位的数字,12345,求各位相加1+2+3+4+5=15

    题目: 输入一个多位的数字,12345,求各位相加1+2+3+4+5=15(10分)题目内容: 输入一个多位的数字,1求各数位相加. 例如输入12345,则计算1+2+3+4+5=15 输入格式: 一 ...

随机推荐

  1. iOS开发中使用CIDetector检测人脸

    在iOS5 系统中,苹果就已经有了检测人脸的api,能够检测人脸的位置,包括左右眼睛,以及嘴巴的位置,返回的信息是每个点位置.在 iOS7中,苹果又加入了检测是否微笑的功能.通过使用 CIDetect ...

  2. CSS3 keyframes动画实现弹跳效果

    首先,“回到顶部”.“用户反馈”这两个按钮是通过定位放在左下角上. (1)“回到顶部”的按钮只有当滚动条有出现下滑时才出现 (2)“用户反馈”按钮,用户刚打开时会抖动一下,引起用户的注意,然后才定住. ...

  3. Redis学习手册(实例代码)

    在之前的博客中已经非常详细的介绍了Redis的各种操作命令.运行机制和服务器初始化参数配置.本篇博客是该系列博客中的最后一篇,在这里将给出基于Redis客户端组件访问并操作Redis服务器的代码示例. ...

  4. android111 java中调用c代码

    MainActivity: package com.itheima.helloworld1; import android.os.Bundle; import android.app.Activity ...

  5. Multipart Upload with HttpClient 4--reference

    by Eugen Paraschiv on May 23, 2014 in HttpClient http://www.baeldung.com/httpclient-multipart-upload ...

  6. Asp.Net MVC 实用视频教程

    [北盟学习BaMn.Cn] Asp.Net MVC 第01课--创建第一个项目.avi [北盟学习BaMn.Cn] Asp.Net MVC 第02课--自己建一个controller view.avi ...

  7. Orcle11g用户密码恢复

    1.当安装Orcle11g后,很久不用,忘记了用户名和密码.可以通过以下方法重置: 如上图及重置用户sys,system密码为123

  8. commons-fileupload源码学习心得

    commons-fileupload依赖于commons-io包. commons-fileupload的使用方法: 1.创建一个文件项目工厂类DiskFileItemFactory.       D ...

  9. C#的类型、变量和值

    大学学了C#,工作也是使用C#,虽然在日常的开发中没什么大的问题,但个人觉得在C#的理解还不是很清晰,所以决定花一定的时间来理一理学过的知识,顺便革新下脑袋里的知识,因为坑爹的学校在教.net的时候, ...

  10. 4柱汉诺塔(zz)

    多柱汉诺塔可以用Frame–Stewart算法来解决. The Frame–Stewart algorithm, giving a presumably optimal solution for fo ...