php实现页面搜索框查询数据库流程
仅供本人学习查阅使用,不误人子弟
前端:index.html页面
//隐藏域。监控输入的关键词进行传值到后台
<input type="hidden" name="keyword" value="" id="input-name"/>
...
//搜索框
<input type="text" id="search_key" size="30" class="qsbox" placeholder="名称、价格...">
<input type="submit" class="btn" onclick="ajax_get_table('search-form2',1)" value="搜索">
...
//用来接收搜索后数据显示的区域
<div id="flexigrid" cellpadding="0" cellspacing="0" border="0">
</div>
ajax抓取搜索框输入的关键词:
/*注意:抓取页面操作之前,必须要有以下几行代码,这是为了防止文档在完全加载(就绪)之前运行 jQuery 代码.
*/
<script type="text/javascript">
$(document).ready(function () {
ajax_get_table('search-form2', 1);
});
//ajax 抓取页面
function ajax_get_table(tab, page) {
//去掉空格,并获取数据
var search_key=$.trim($('#search_key').val());
//设置表单字段的值
$('#input-name').val(search_key);
//当前页面 保存为全局变量
cur_page = page;
$.ajax({
type: "POST",
url: "/index.php/Admin/goods/ajaxindex/p/" + page,//+tab,
// 你的formid
data: $('#' + tab).serialize(),
success: function (data) {
//flexigrid是成功返回,接收数据显示的区域
$("#flexigrid").html('');
$("#flexigrid").append(data);
// 表格行点击选中切换
$('#flexigrid > table>tbody >tr').click(function () {
$(this).toggleClass('trSelected');
});
}
});
}
</script>
前端:ajaxindex页面
//分页的位置
{$page}
<script>
//点击翻页等操作
$('.pagination a').click(function () {
//翻页后显示数据
var data=$(this).data('p');
ajax_get_table('serach-form2',data);
})
</script>
后端 admin/goods/ajaxindex 方法来处理
$condction是对表中数据字段查询的条件,可忽略。
public function ajaxIndex()
{
//搜索条件
$key=array();
//拿到前台隐藏域监控输入的关键字
$keyword=trim(I('keyword',''));
if ($keyword){
//搜索框输入名称和价格的模糊查询
$key['name|price']=array('like',"%$keyword%");
}
$condction['business_id']=0;
$condction['type']=1;
//查询符合条件的数据总数
$count=Db::name('goods')->where($condction)->where($key)->count();
//将数据进行分页
$Page=new AjaxPage($count,3);
//分页显示
$show=$Page->show();
//页面显示列表
$list = Db::name('goods')
->where($condction)
->where($key)
->limit($Page->firstRow . ',' . $Page->listRows)
->select();
$this->assign('orderList', $list);
//前台{$page}就可以确定分页位置,一般位于数据列表下方
$this->assign('page',$show);
$this->assign('pager',$Page);
return $this->fetch();
}