模型代码设计

以留言信息管理为例。

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

<?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. 高效使用ppt素材

    一.素材大致分为: 立体素材:以TG素材为代表的那种高光立体素材 平面素材:以咨询公司麦肯锡.罗兰贝格公司为代表的平面设计的素材 二.使用原则: 原则一:平面左边,立体右边 这个原则告诉你几件事: 如 ...

  2. 《高性能iOS 应用开发》之降低你 APP 的电量消耗

    在编写高性能 代码时, 电量消耗是一个需要重点处理的重要因素, 就执行时间和 CPU 资源的利用而言, 我们不仅要实现高效的数据结构和算法, 还需要考虑其他的因素,如果某个应用是个电池黑洞,那么一定不 ...

  3. Cg(C for Graphic)语言关键字(转)

    摘抄“GPU Programming And Cg Language Primer 1rd Edition” 中文名“GPU编程与CG语言之阳春白雪下里巴人” 第三章从 GPU 运行原理和数据流程的角 ...

  4. Spring Boot中使用Swagger2构建RESTful APIs介绍

    1.添加相关依赖 <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 --> <depen ...

  5. CI框架错误汇总

    2017年1月13日12:09:02 [1] A PHP Error was encounteredSeverity: NoticeMessage: Undefined variable: aticl ...

  6. the little schemer 笔记(3)

    第三章 cons the magnificent (rember a lat)是什么,其中a是mint,lat是(lamb chops and mint jelly) (lamb chops and ...

  7. selenium之webdriverAPI接口详解

    1. 浏览器操作 driver.maximize_window() #最大化窗口driver.execute_script('window.scrollTo(0,0);') #滚动窗口到最上面driv ...

  8. Codeforces Round #544 (Div. 3) D. Zero Quantity Maximization

    链接:https://codeforces.com/contest/1133/problem/D 题意: 给两个数组a,b. 同时ci = ai * d + bi. 找到一个d使c数组中的0最多. 求 ...

  9. 洛谷 P3400 仓鼠窝

    卡常 #pragma GCC optimize(2) #include<cstdio> #include<algorithm> #include<cstring> ...

  10. web 前端的一些问题

    1. HTML 和 JS 一个网页显示出来的静态的内容为html创见的静态object 对这些object的操作通过JS来响应 2. HTTP cookie cookie是由server set, 由 ...