首先需要一个搜索的表单
<!--添加 查询-->
<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");