PHP23 AJAX分页
模型代码设计
以留言信息管理为例。
获取根据条件查询记录总数和分页数据。
<?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>
测试效果
本博客文章未经许可,禁止转载和商业用途!
如有疑问,请联系: 2083967667@qq.com