第一步:导入类
下载AjaxPage.class.php
我这里的提供的是之前3.1时候用的,在3.2用的时候需要在类里面加个命名空间
Paste_Image.png
这个类放在ThinkPHP
- Library
-Org
-Util
路径下
Paste_Image.png
第二步:php里该写的代码
ProductController
是我建的产品类
01 | class ProductController extends PublicController{ |
02 |
03 | public function index() |
04 | { |
05 | //导入三方库 |
06 |
07 | // 查询满足要求的总记录数 |
08 | $count = $this ->model-> count (); |
09 |
10 | //创建对象,指定对象执行的方法 |
11 | $Page = new \Org\Util\AjaxPage( $count ,7, "productPage" ); //productPage是调用js中方法,通过该方法给js传递页码值,7代表一页显示7条数据 |
12 |
13 | // 实例化分页类 传入总记录数和每页显示的记录数 |
14 | $show = $Page ->show(); // 分页显示输出 |
15 | // 进行分页数据查询 注意limit方法的参数要使用Page类的属性 |
16 | $list = $this ->model->order( 'id asc' )->limit( $Page ->firstRow. ',' . $Page ->listRows)->select(); |
17 |
18 |
19 | //判断是不是ajax, |
20 | if (!IS_AJAX){ |
21 |
22 | $this ->assign( 'result' , $list ); // 赋值数据集 |
23 | $this ->assign( 'page' , $show ); // 赋值分页输出 |
24 | $this ->view(); // 输出模板 |
25 |
26 | } else { |
27 |
28 | $data [ 'result' ]= $list ; |
29 | $data [ 'page' ] = $show ; |
30 | $this ->ajaxReturn( $data ); |
31 | } |
32 | } |
33 |
34 | //编辑产品 |
35 | public function edit(){ |
36 |
37 | //进入编辑页面,显示待编辑的信息 |
38 | if (! empty ( $_GET )){ |
39 | $result = $this ->model->where( $_GET )->find(); |
40 | $this ->assign( 'result' , $result ); |
41 | } |
42 | //编辑完提交,保存,跳转回首页 |
43 | if (! empty ( $_POST )){ |
44 |
45 | $id = $_POST [ 'id' ]; |
46 | $result = $this ->model->where( "id=$id" )->save( $_POST ); |
47 | //0表示保存失败 |
48 | if ( $result != 0){ |
49 | redirect( 'index' ); |
50 | } |
51 | } |
52 | $this ->view(); |
53 | } |
54 |
55 | //删除产品 |
56 | public function delete (){ |
57 |
58 | $id = $_GET [ 'id' ]; |
59 | $result = $this ->model->where( "id=$id" )-> delete (); |
60 | if ( $result != 0){ |
61 | $this ->redirect( 'index' ); |
62 | } |
63 | } |
64 | } |
3.2的写法
3.1的写法
page输出显示是这样的
result输出显示是这样的
第三步:html该写的代码,把assign过来的数据赋值到td上
下面是对应的代码
01 | <table class = "table table-bordered table-striped table-hover" > |
02 | <thead> |
03 | <tr> |
04 | <th>NO</th> |
05 | <th>产品名称</th> |
06 | <th>单价</th> |
07 | <th>备注</th> |
08 | <th>操作</th> |
09 | </tr> |
10 | </thead> |
11 | <tbody id= "neirong" > |
12 | < foreach name= "result" item= "val" > |
13 | <tr class = "cen" > |
14 | <td>{ $val .no}</td> |
15 | <td><a href= "#" >{ $val .pro_name}</a></td> |
16 | <td>{ $val .price}</td> |
17 | <td>{ $val .remark}</td> |
18 | <td> |
19 | <button class = "btn btn-primary" onclick= "edit({$val.id})" >编辑</button> |
20 | <button class = "btn btn-danger" onclick= "del({$val.id})" >删除</button> |
21 | </td> |
22 | </tr> |
23 | </ foreach > |
24 | </tbody> |
25 | </table> |
26 | <div class = "panel panel-default" > |
27 | <div class = "panel-bd" > |
28 | <div class = "pagination" >{ $page }</div> |
29 | </div> |
30 | </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里面请求新的数据
01 | <script> |
02 | //点击页码,重新请求数据 |
03 | function productPage(id) { |
04 |
05 | var url = '' ; |
06 | url = '__APP__/home/product/index/p/' +id; |
07 |
08 | $.get(url, function (content) { |
09 |
10 | //重写html代码 |
11 | //将pagination div重写一遍 |
12 | //将json转成对象类型 |
13 | //var data = eval('('+content+')'); //强制将json转成对象类型 |
14 | var data = content; |
15 |
16 | //输出页码 |
17 | $( '.pagination' ).html(data.page); |
18 |
19 | var l = '' ; |
20 | for ( var i = 0; i < data.result.length; i++){ |
21 |
22 | l += '<tr class="cen">' ; |
23 | l += '<td>' + data.result[i].no + '</td>' ; |
24 | l += '<td>' + data.result[i].pro_name + '</td>' ; |
25 | l += '<td>' + data.result[i].price + '</td>' ; |
26 | l += '<td>' + data.result[i].remake + '</td>' ; |
27 | 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>' ; |
28 | l += '</tr>' ; |
29 | } |
30 | //重新输出整个表格 |
31 | $( '#neirong' ).html(l); |
32 | }); |
33 | } |
34 |
35 | //点击编辑按钮 |
36 | function edit(id) { |
37 | window.location.href= '__APP__/home/product/edit/id/' +id; |
38 | } |
39 |
40 | //点击删除按钮 |
41 | function del(id) { |
42 | if (confirm( "您确定要删除么!" )){ |
43 | window.location.href= '__APP__/home/product/delete/id/' +id; |
44 | } |
45 | } |
46 | </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,看看有没有数据,没有就打开这段代码试试.
本文标题: ThinkPHP3.2分页显示,超详细,超简单
固定链接: http://www.tcode.me/article/751.html 来自淘代码转载请注明