ThinkPHP3.2分页显示,超详细,超简单

栏目: PHP · 发布时间: 6年前

内容简介:ThinkPHP3.2分页显示,超详细,超简单

第一步:导入类

下载AjaxPage.class.PHP

我这里的提供的是之前3.1时候用的,在3.2用的时候需要在类里面加个

命名空间

ThinkPHP3.2分页显示,超详细,超简单

Paste_Image.png

这个类放在

Think<a href="https://www.52bz.la/tag/php" title="PHP" target="_blank">PHP</a>

Library

Org

Util

路径下

ThinkPHP3.2分页显示,超详细,超简单

Paste_Image.png

第二步:PHP里该写的代码

ProductController

是我建的产品类

class ProductController extends PublicController{      public function index()     {         //导入三方库          // 查询满足要求的总记录数         $count = $this->model->count();          //创建对象,指定对象执行的方法         $Page = new /Org/Util/AjaxPage($count,7,"productPage");//productPage是调用js中方法,通过该方法给js传递页码值,7代表一页显示7条数据          // 实例化分页类 传入总记录数和每页显示的记录数         $show = $Page->show();// 分页显示输出         // 进行分页数据查询 注意limit方法的参数要使用Page类的属性         $list = $this->model->order('id asc')->limit($Page->firstRow.','.$Page->listRows)->select();           //判断是不是ajax,         if (!IS_AJAX){              $this->assign('result',$list);// 赋值数据集             $this->assign('page',$show);// 赋值分页输出             $this->view(); // 输出模板          }else{              $data['result']=$list;             $data['page'] = $show;             $this->ajaxReturn($data);         }     }      //编辑产品     public function edit(){          //进入编辑页面,显示待编辑的信息         if (!empty($_GET)){             $result = $this->model->where($_GET)->find();             $this->assign('result',$result);         }         //编辑完提交,保存,跳转回首页         if (!empty($_POST)){              $id = $_POST['id'];             $result = $this->model->where("id=$id")->save($_POST);             //0表示保存失败             if ($result != 0){                 redirect('index');             }         }         $this->view();     }      //删除产品     public function delete(){          $id = $_GET['id'];         $result = $this->model->where("id=$id")->delete();         if ($result != 0){             $this->redirect('index');         }     } }

ThinkPHP3.2分页显示,超详细,超简单

3.2的写法

ThinkPHP3.2分页显示,超详细,超简单

3.1的写法

ThinkPHP3.2分页显示,超详细,超简单

page输出显示是这样的

ThinkPHP3.2分页显示,超详细,超简单

result输出显示是这样的

第三步:HTML该写的代码,把assign过来的数据赋值到td上

ThinkPHP3.2分页显示,超详细,超简单

下面是对应的代码

<table class="table table-bordered table-striped table-hover">     <thead>         <tr>             <th>NO</th>             <th>产品名称</th>                                    <th>单价</th>             <th>备注</th>             <th>操作</th>         </tr>     </thead>     <tbody id="neirong">         <foreach name="result" item="val">             <tr class="cen">                 <td>{$val.no}</td>                 <td><a href="#">{$val.pro_name}</a></td>                 <td>{$val.price}</td>                 <td>{$val.remark}</td>                 <td>                     <button class="btn btn-primary" onclick="edit({$val.id})">编辑</button>                     <button class="btn btn-danger" onclick="del({$val.id})">删除</button>                 </td>             </tr>         </foreach>     </tbody> </table> <div class="panel panel-default">     <div class="panel-bd">         <div class="pagination">{$page}</div>     </div> </div>

解释下关键代码:

<tbody id="neirong">

这里设置个id,在js里面会用到

<foreach name="result" item="val">

foreach为tp的标签,遍历数组用的,

name

对应数据源,

item

是循环变量

<button class="btn btn-primary" onclick="edit({$val.id})">编辑</button>

edit是写在js里的方法,根据id编辑内容

<button class="btn btn-danger" onclick="del({$val.id})">删除</button>

del是写在js里的方法,根据id删除内容

<div class="pagination">{$page}</div>

{$page}是显示1,2,3分页码的,这个class类后面js会用到

第四步:完成前三步,首页的信息肯定可以显示出来了,但是点击页码没有反应,这时候,我们需要在js里面请求新的数据

<script>     //点击页码,重新请求数据     function productPage(id) {          var url = '';         url = '__APP__/home/product/index/p/'+id;          $.get(url,function (content) {              //重写html代码             //将pagination div重写一遍             //将json转成对象类型             //var data = eval('('+content+')');  //强制将json转成对象类型             var data = content;              //输出页码             $('.pagination').html(data.page);              var l = '';             for (var i = 0; i < data.result.length; i++){                  l += '<tr class="cen">';                 l +=    '<td>'+ data.result[i].no +'</td>';                 l +=    '<td>'+ data.result[i].pro_name +'</td>';                 l +=    '<td>'+ data.result[i].price +'</td>';                 l +=    '<td>'+ data.result[i].remake +'</td>';                 l +=    '<td><button class="btn btn-primary" onclick="edit('+ data.result[i].id +')">编辑</button><button class="btn btn-danger" onclick="del('+ data.result[i].id +')">删除</button></td>';                 l += '</tr>';             }             //重新输出整个表格             $('#neirong').html(l);         });     }      //点击编辑按钮     function edit(id) {         window.location.href='__APP__/home/product/edit/id/'+id;     }      //点击删除按钮     function del(id) {         if(confirm("您确定要删除么!")){             window.location.href='__APP__/home/product/delete/id/'+id;         }     } </script>

解释下关键代码:

function productPage(id) {

这是我们 PHP 代码

$Page = new /Org/Util/AjaxPage($count,7,"productPage")

里的方法

url = '__APP__/home/product/index/p/'+id;

p参数为页码,

//var data = eval('('+content+')'); //强制将json转成对象类型

这里是注释,没错.建议在这步alert一下content,看看有没有数据,没有就打开这段代码试试.


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Head First JavaScript Programming

Head First JavaScript Programming

Eric T. Freeman、Elisabeth Robson / O'Reilly Media / 2014-4-10 / USD 49.99

This brain-friendly guide teaches you everything from JavaScript language fundamentals to advanced topics, including objects, functions, and the browser’s document object model. You won’t just be read......一起来看看 《Head First JavaScript Programming》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具