您的位置:首页 > 编程语言 > PHP开发

在ThinkPhp 中使用原生的 带条件查询 + 分页

2016-11-08 00:00 323 查看
首先需要一个搜索的表单
<!--添加 查询-->
<form name="form" id="form" method="POST" action="U('action')" >//跳转到处理页面
<div class="pub_line clearfix">

<div class="floatr">
<div class="pub_search">

//搜索的值
<input type="text" class="ui-input" placeholder="搜索" id="keyword" name="keyword">
<button type="submit" class="icon icon-search"></button>
</div>
<div class="floatr">

//搜索的类型
<select name="typeid" id="typeid" class="form-control input-sm">
<option value="">全部类型</option>
<option value="1">条件1</option>
<option value="2">条件2</option>
</select>
</div>
</div>
</form>

//处理的页面

//  获取到查询的条件

$typeid =  I('post.typeid');

$text = I('post.keyword');

// 声明一个查询变量

$where = '';

//  根据获取到的值,再判断是什么查询

if($typeid == '1'){

$where = 'WHERE id='.$text;

}elseif($typeid == '2'){

$where = 'WHERE name='.$text;

}

//统计符合条件的总数据

$total = M()->query("SELECT count(*) as total FROM User $where");

//上面这条语句查询出来的结果是二维数组

//总页码为           $maxtotal = $total[ 0 ][ 'total' ];

//设置展示的条数

$num = 5;

//计算出最大页码(总条数除以分页数)     ceil 为 进一取整(如  2/3  时 结果是 1.5  则最大页码是 2);

$maxPage = ceil($maxtotal  /  $num);

//获取页码

$p = empty( I('get.p') ) ? '1' : I('get.p');

//设定开始值

$start = ($p -1) * $num;

/*由于limit(n,m) 意思为读取 从第n 条数据开始读取  到 只取m条

第一页是 limit( (1-1),m);   意思是从第0条开始读取 m条

第二页 limit( (2-1) ,m );          意思是从第 1 * m 条读取 m条*/

//然后判断传的页数是否正常

$p =max('1',$p);

$p = min($maxPage,$p);

//执行原生的查询语句  ,拼接上查询语句,如果没有条件时$where 是空的所以不用担心查询语句出错

M()->query("SELECT * FROM User $where LIMIT $start,$num");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: