模型代码设计

以留言信息管理为例。

获取根据条件查询记录总数和分页数据。

<?php

namespace application\admin\models;

use core\mybase\Model;

/**用户留言信息管理数据模型*/
class GbmgrModel extends Model
{
/**查询有多少条留言*/
public function count($like = null)
{
$sql = null;
if ($like != null) {
$sql = "SELECT COUNT(1) AS total FROM guestbook WHERE uname LIKE '%" . $like . "%' ";
} else {
$sql = "SELECT COUNT(1) AS total FROM guestbook";
}
$result = $this->query($sql, null);
return $result[0]["total"]; } /**分页留言信息查询*/
public function list($pageIndex = 1, $pageSize = 10, $like = null)
{
$sql=null;
if ($like != null) {
$sql = "SELECT * FROM guestbook WHERE uname LIKE '%" . $like . "%' ORDER BY id DESC LIMIT " . ($pageIndex - 1) * $pageSize . "," . $pageSize;
}else{
$sql = "SELECT * FROM guestbook ORDER BY id DESC LIMIT " . ($pageIndex - 1) * $pageSize . "," . $pageSize;
}
return $this->query($sql, null);
} }

  

控制器代码设计

控制器接受从视图发起的数据请求。

从数据模型获取分页数据,以json格式返回视图。

<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2018/7/12
* Time: 11:21
*/ namespace application\admin\controllers; use application\admin\models\GbmgrModel;
use core\mybase\Controller; class PageController extends Controller
{
public function index()
{
$this->display();
} /**分页留言数据*/
public function listgb()
{
$pageIndex = isset($_GET['pageIndex']) ? $_GET['pageIndex'] : 1;
$pageSize = isset($_GET['pageSize']) ? $_GET['pageSize'] : 10;
$like = isset($_GET['like']) ? $_GET['like'] : null;
$gm = new GbmgrModel();
//获得符合条件的总记录数
$totalCount = $gm->count($like);
//获得分页数据
$list = $gm->list($pageIndex, $pageSize, $like);
//总页数
$totalPage = $totalCount % $pageSize == 0 ? $totalCount / $pageSize : intval($totalCount / $pageSize) + 1; //上一页
$previous = $pageIndex <= 1 ? 1 : $pageIndex - 1;
//下一页
$next = $pageIndex >= $totalPage ? $totalPage : $pageIndex + 1; $result = ["totalCount" => $totalCount, "totalPage" => $totalPage, "pageIndex" => $pageIndex, "previous" => $previous, "next" => $next, "list" => $list];
echo json_encode($result, JSON_UNESCAPED_UNICODE);
}
}

  

视图脚本

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>自定义分页</title>
<script src="<?php echo __ADMIN_JS__;?>jquery-1.11.1.min.js"></script>
<script type="text/javascript"> $(function () {
getByPage(1);
$("#qureyBut").click(function () {
getByPage(1);
});
}); function getByPage(pageNo) {
$("[name=pageIndex]").val(pageNo);//设置表单的 页号参数
var params = $("#selectName").serialize();//序列化模糊查询条件和页码
$.getJSON("index.php?g=admin&c=page&a=listgb", params, function (data) {
//删除表格之前数据(标题栏除外)--->防止出现几页的数据叠加的情况
$("#selectTable tr").not(":first").remove();
//设置上一页 下一页连接
$("a:eq(0)").attr("href", "javascript:getByPage(1)");
$("a:eq(1)").attr("href", "javascript:getByPage(" + data.previous + ")");
$("a:eq(2)").attr("href", "javascript:getByPage(" + data.next + ")");
$("a:eq(3)").attr("href", "javascript:getByPage(" + data.totalPage + ")");
//设置显示信息(当前页号,总页号,总条数)
$("#pageIndex").html(data.pageIndex);
$("#totalPage").html(data.totalPage);
$("#totalCount").html(data.totalCount);
//在表格添加数据 使用each方法遍历 控制器传回的数据中的list集合
$.each(data.list, function () {
var tr = "<tr>" +
"<td>" + this.id + "</td>" +
"<td>" + this.uname + "</td>" +
"<td>" + this.uemail + "</td>" +
"<td>" + this.uphone + "</td>" +
"<td>" + this.umessage + "</td>" +
"</tr>";
$("#selectTable").append(tr);
});
});
}
</script>
</head>
<body> <div class="menu">
<form method="post" action="#" id="selectName">
<input name="pageIndex" type="hidden" value="1">
用户名:<input name="like" class="input-text" type="text" value="">     
<input value="查 询" type="button" id="qureyBut">
</form>
</div> <div class="content"> <table id="selectTable" border="1px">
<tr>
<th>编号</th>
<th>姓名</th>
<th>邮箱</th>
<th>电话</th>
<th>留言</th>
</tr>
</table> 当前第<span id="pageIndex"></span> 页 ,
总页数:<span id="totalPage"></span>,
总条数:<span id="totalCount"></span>      <a href="">首页</a>
<a href="">上一页</a>
<a href="">下一页</a>
<a href="">末页</a>
</div> </body>
</html>

  

测试效果

  

PHP23 AJAX分页的更多相关文章

  1. [jQuery]jQuery DataTables插件自定义Ajax分页实现

    前言 昨天在博客园的博问上帮一位园友解决了一个问题,我觉得有必要记录一下,万一有人也遇上了呢. 问题描述 园友是做前端的,产品经理要求他使用jQuery DataTables插件显示一个列表,要实现分 ...

  2. ThinkPHP 整合Bootstrap Ajax分页

    ThinkPHP Ajax分页代码 publicfunction index() { $where=array(); $name = I('name'); if(!empty($name)){ $wh ...

  3. yii2的分页和ajax分页

    要想使用Yii分页类第一步:在控制器层加载分页类 use yii\data\Pagination;第二步: 使用model层查询数据,并用分分页,限制每页的显示条数$data = User::find ...

  4. [js开源组件开发]ajax分页组件

    ajax分页组件 我以平均每一周出一个开源的js组件为目标行动着,虽然每个组件并不是很庞大,它只完成某一个较小部分的工作,但相信,只要有付出,总会得到回报的.这个组件主要完成分页的工作. 这张图里显示 ...

  5. MvcPager 概述 MvcPager 分页示例 — 标准Ajax分页 对SEO进行优化的ajax分页 (支持asp.net mvc)

    该示例演示如何使用MvcPager最基本的Ajax分页模式. 使用AjaxHelper的Pager扩展方法来实现Ajax分页,使用Ajax分页模式时,必须至少指定MvcAjaxOptions的Upda ...

  6. MVC - 11(下)jquery.tmpl.js +ajax分页

    继续 mvc-11(上).dto:http://www.cnblogs.com/tangge/p/3840060.html jquery.tmpl.js 下载:http://pan.baidu.com ...

  7. laraver ajax分页

    ,设置分页容器参考laraver手册 我的设置代码如下: ,控制器调用的方法:代码如下 );         include($path);         $content = ob_get_cle ...

  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. from表单POST提交nodejs

    var form = new formidable.IncomingForm(); form.parse(req, function(err, fields, files) { console.log ...

  2. 040--JavaScript

    一.JavaScript的两种引入方式 {#1 直接编写#} <script> alert('hello Galileo') </script> {#2 导入文件#} < ...

  3. Django中的Ajax详解

    AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”.即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当 ...

  4. python 字符串操作一

    一.创建字符串 >>> s1 = '12345' >>> s1 '12345' >>> s2 = str(12345) >>> ...

  5. loj #6302. 「CodePlus 2018 3 月赛」寻找车位【线段树+单调队列】

    考虑静态怎么做:枚举右边界,然后枚举上边界,对应的下边界一定单调不降,单调栈维护每一列从当前枚举的右边界向左最长空位的长度,这样是O(nm)的 注意到n>=m,所以m<=2000,可以枚举 ...

  6. poj 1743 Musical Theme【二分+SA】

    差分,然后二分长度mid,判断是把height按照min不小于mid分组,取最大最小的sa位置看是否>=mid即可,注意差分后最后答案要+1 #include<iostream> # ...

  7. bzoj 2560: 串珠子【状压dp】

    正难则反,设g[s]为集合s不一定联通的方案数,这个很好求,把边数+1乘起来即可,f[s]为s一定联通的方案数 f考虑容斥,就是g[s]-Σf[nw]*g[s^nw],nw是s的子集,这样就减掉了不联 ...

  8. Luogu P1736 创意吃鱼法【dp】By cellur925

    题目传送门 题意:给出一个01矩阵,找出一条对角线,使得对角线上的元素都为1,而对角线所在矩阵其他元素均为0,使得这样的对角线最长. 状态:$f[i][j]$表示以($i$,$j$)为对角线端点的最长 ...

  9. Eclipse - Maven项目Update Project后jdk版本变成1.5

    问题与分析 最近遇到个奇怪的问题,在Eclipse里对一个Maven项目进行Update Project(快捷键是 Alt+F5),原本jdk为1.8的项目忽然就变成了1.5,于是就报了一些错误. 我 ...

  10. 贪心 Codeforces Round #297 (Div. 2) C. Ilya and Sticks

    题目传送门 /* 题意:给n个棍子,组成的矩形面积和最大,每根棍子可以-1 贪心:排序后,相邻的进行比较,若可以读入x[p++],然后两两相乘相加就可以了 */ #include <cstdio ...