thinkphp之ajax分页类

<?php

class IndexAction extends Action {

	public function index() {
		import("@.ORG.Page");       //导入分页类
		$Form   =   M(‘Form‘);
		$list = $Form->select();
		// $list = range(2,51);
		$param = array(
			‘result‘=>$list,			//分页用的数组或sql
			‘listvar‘=>‘list‘,			//分页循环变量
			‘listRows‘=>10,			//每页记录数
			‘parameter‘=>‘search=key&name=thinkphp‘,//url分页后继续带的参数
			‘target‘=>‘content‘,	//ajax更新内容的容器id,不带#
			‘pagesId‘=>‘page‘,		//分页后页的容器id不带# target和pagesId同时定义才Ajax分页
			‘template‘=>‘Index:ajaxlist‘,//ajax更新模板
		);
		$this->page($param);
		$this->display();
	}

	/**
	  +----------------------------------------------------------
	 * 分页函数 支持sql和数据集分页 sql请用 buildSelectSql()函数生成
	  +----------------------------------------------------------
	 * @access public
	  +----------------------------------------------------------
	 * @param array   $result 排好序的数据集或者查询的sql语句
	 * @param int       $totalRows  每页显示记录数 默认21
	 * @param string $listvar    赋给模板遍历的变量名 默认list
	 * @param string $parameter  分页跳转的参数
	 * @param string $target  分页后点链接显示的内容id名
	 * @param string $pagesId  分页后点链接元素外层id名
	 * @param string $template ajaxlist的模板名
	 * @param string $url ajax分页自定义的url
	  +----------------------------------------------------------
	 */
	public function page($param) {
		extract($param);
		import("@.ORG.Page");
		//总记录数
		$flag = is_string($result);
		$listvar = $listvar ? $listvar : ‘list‘;
		$listRows = $listRows? $listRows : 21;
		if ($flag)
			$totalRows = M()->table($result . ‘ a‘)->count();
		else
			$totalRows = ($result) ? count($result) : 1;
		//创建分页对象
		if ($target && $pagesId)
			$p = new Page($totalRows, $listRows, $parameter, $url,$target, $pagesId);
		else
			$p = new Page($totalRows, $listRows, $parameter,$url);
		//抽取数据
		if ($flag) {
			$result .= " LIMIT {$p->firstRow},{$p->listRows}";
			$voList = M()->query($result);
		} else {
			$voList = array_slice($result, $p->firstRow, $p->listRows);
		}
		$pages = C(‘PAGE‘);//要ajax分页配置PAGE中必须theme带%ajax%,其他字符串替换统一在配置文件中设置,
		//可以使用该方法前用C临时改变配置
		foreach ($pages as $key => $value) {
			$p->setConfig($key, $value); // ‘theme‘=>‘%upPage% %linkPage% %downPage% %ajax%‘; 要带 %ajax%
		}
		//分页显示
		$page = $p->show();
		//模板赋值
		$this->assign($listvar, $voList);
		$this->assign("page", $page);
		if ($this->isAjax()) {//判断ajax请求
			layout(false);
			$template = (!$template) ? ‘ajaxlist‘ : $template;
			exit($this->fetch($template));
		}
		return $voList;
	}
}
时间: 2024-08-28 13:28:50

thinkphp之ajax分页类的相关文章

thinkphp自带分页类

thinkphp自带分页使用案例: $Data = M('Data'); // 实例化Data数据对象  date 是你的表名     import('ORG.Util.Page');// 导入分页类     $count = $Data->where($map)->count();// 查询满足要求的总记录数 $map表示查询条件     $Page = new Page($count);// 实例化分页类 传入总记录数     $show = $Page->show();// 分页显

thinkphp中的ajax分页

thinkphp中用ajax分页和普通的ajax分页的区别在于处理位置的不同,thinkphp是在控制器的方法中处理ajax传的值,然后返回数据.下面是一个点击事件触发后,显示的内容用ajax分页. 下面的示例是同一个类别下,根据点击不同的分类显示出点击的分类的数据. 需要修改的地方用黄色背景标示. 1.ajax处理页面 $(".php_list").click(function(){//点击事件,可以根据自己的要求修改.也可以放在$(document).ready(function(

thinkphp 分页类介绍

thinkphp 中的分页类在我看来还是很强大的,使用起来也是很方便的.只要传总的条数,和每页显示的条数,还有样式配置数组,你就可以轻松显示分页,而且可以方便的调整前台页数代码的样式. 下面介绍一下一些配置参数: public $firstRow; // 起始行数 public $listRows; // 列表每页显示行数 public $parameter; // 分页跳转时要带的参数 public $totalRows; // 总行数 public $totalPages; // 分页总页面

【TP3.2】TP3.2下实现ajax分页(原创+亲测可用)

一,写在最开始:ajax分页的原理,是利用了js的ajax执行请求,获取分页list和分页page [代码块],去替换页面显示数据的[代码块] 技术:js的ajax + TP3.2的fetch("Index/data")技术,仅此而已. 1.在Library\Think\ 目录下直接加入以下代码:Ajaxpage.class.php <?php /** * ajax分页类,有namespace,使用方法: * 控制器直接$ajaxpage = new \Think\Ajaxpag

thinkphp ajax分页

临时更改后的page类(很多地方没修改...因为笔者PHP没学好..)如下: 复制代码 <?php namespace Fenye\libs; /** file: page.class.php 完美分页类 Page */ class Page { private $total; //数据表中总记录数 private $listRows; //每页显示行数 private $limit; //SQL语句使用limit从句,限制获取记录个数 private $uri; //自动获取url的请求地址

thinkphp简洁、美观、靠谱的分页类

废话不多说先上图预览下:即本博客的分页: 这个分页类是在thinkphp框架内置的分页类的基础上修改而来: 原分页类的一些设计,在实际运用中感觉不是很方便: 1:只有一页内容时不显示分页: 2:原分页类在当前页是第一页和最后一页的时候,不显示第一页和最后一页的按钮: 3:分页数比较少时不显示首页和末页按钮: 4:包裹分页内容的父级div没有class: 针对以上问题逐一进行了修改成如下: 1:如果没有数据不显示分页,如果有一页及以上内容即显示分页: 2:默认就显示第一页和最后一页按钮,但是在当前

thinkphp 原生sql使用分页类

public function index(){ import("@.ORG.Page"); //导入分页类 $Dao = M(); $count = count($Dao->query("SELECT * FROM ofuser WHERE uid IN (SELECT uid FROM ofid WHERE uid ='1')"));//总计条数 $Page = new Page($count, 10); //一页中的数量为5 $list = $Dao-&

定制 ThinkPHP 分页类

第一步,引入: 1 import('ORG/Util/Page'); 2 $total = M('xxx')->count(); //获取总记录数 3 $page = new Page($total, 3); //实例化:(总数,每页显示的记录数) 4 5 $limit = $page->firstRow.','.$page->listRows; //用于SQL 的 limit 语句的限制字符串:'limit 0,12' 6 $result = M('xxx')->limit($l

ThinkPHP分页用异步来做,玩转分页类!

具体为什么用异步来做分页我就不多说了! 用异步来做分页,主要还是看分页类怎么玩! 方便管理,还是把Ajax分页作为一个工具来使用: 同样新建工具类: 多次尝试,最终修改好的分页类是这样的:(我自己使用还是比较爽的) <?php namespace Components; class AjaxPage { public $firstRow; // 起始行数 public $listRows; // 列表每页显示行数 public $parameter; // 分页跳转时要带的参数 public $