php mysql ajax方法实现单表多字段多关键词查询
本文通过一个实例讲述了php mysql ajax实现单表、多字段、多关键字查询的方法。分享给大家参考,如下:
单表多字段查询在一些稍微复杂的查询中非常有用。这里MySQL数据库中的concat函数主要用于实现单表、多字段、多关键字的查询。显示查询结果的表格可以根据选择的数据表动态生成。
Html代码:
!DOCTYPE html html head meta charset=' UTF-8 ' title/title script src=' http : js/jquery-1。9 .1 .量滴js ' type=' text/JavaScript ' charset=' utf-8 '/script script src=' http : js/jpages。js ' type=' text/JavaScript ' charset=' utf-8 '/script script type=' text/JavaScript ' $(function(){/}回车提交查询$('#queryBox ').向下键(函数(e){ if(e.keyCode==13) { $('#query ')).焦点();//查询按钮获得焦点$(“# query”).单击();//调用点击提交按钮} });//点击查询按钮$(“# query”).单击(函数(){ //获取用户选择的数据表和查询关键词var queryType=$('#queryType ').val().trim();var query keywords=$(' # query keywords ').val().trim();//对查询关系词的内容进行限制,比如只能输入汉字、字母、数字和空格var reg=/^[ a-za-z0-9 \ u4e 00-\ u9 fa 5]$/;if(reg。test(queryKeywords)==false){ $(' # queryTip ').文本('您输入的关键词有部分内容不符合要求,只能输入汉字、字母、数字和空格。');} //如果内容检测通过,开始提交查询else { if(queryType!='' queryKeywords!='') { $('#queryTip ').文本('正在为您检索,请稍候……');//使用创建交互式、快速动态网页应用的网页开发技术访问服务器端编程语言(专业超文本预处理器的缩写)页面进行查询$.ajax({ type:'post ',URL : ' queryInIndex.php ',async:true,data : { queryType : $(' # queryType ')).val(),query keywords : $(' # query keywords ').val()},dataType:'json ',success :函数(数据){ if(数据==' no '){ $(' # queryTip ').文本('没有找到您要查询的信息。');} else { $('#queryTip ').文本('为您找到"数据。长度"条信息。');//预设结果表格字符名if($('#queryType ').val()=='users ')字段字符串='邮箱,姓名,英文名,学号,学位类型,导师,手机,房间;else if($('#queryType ').val()=='papers ')字段字符串='作者,标题,期刊/会议,卷期页,级别,状态;else if($('#queryType ').val()=='软件')字段字符串='作者,标题,登记号,日期;else if($('#queryType ').val()=='patents') fieldsString='作者,标题,受理日期,受理号,授权日期,授权号;//调用函数创建表格createTable('queryResultList ',数据,字段字符串、“查询结果页面”);$('#queryKeywords ').焦点();//关键词文本框继续获得焦点,以方便用户继续输入内容} } });} else { $('#queryTip ').文本('请先选择查询类型,并输入关键词,然后点击查询按钮。
');$('#queryKeywords ').焦点();} } })函数createTable(tableHolder,data,fieldsString,page holder)//自动创建结果表格的函数/* 参数含义:tableHolder:显示结果表格的父元素数据:JSON格式的查询结果字段字符串:字段名字符串寻呼机支架:显示分页导航的元素* */{ field sarr=field sstring。split(',');//对字段名字符串进行分割var列号=字段sarr。长度;//获取列数data.length//获取行数$(“#”tableHolder).html(" ");//清除现有表格$(“#”tableHolder).追加('表格边框=' 1 ' DTR/tr/dtbody/t body/table ');//设置表格结构var I=0;//临时循环变量while(icolumnNum) //加载字段值{ $(" # " Tableholder " ad tr ").追加(“th”字段sarr[I]“/th”);我;} I=0;while(irowNum)//加载数据{ var j=0;$("#"Tableholder"t body ").追加(' tr ')while(jcolumnNum){ $(' # ' Tableholder ' t body tr : last ').追加(' td '数据[I][j]'/TD ');j;} $(“#”Tableholder“t body”).附加('/tr ')I;} //分页导航,这里利用jPages插件$("# "页架).jPages({ containerID : tableHolder ' t body ',//存放表格的窗口标签'上一个: '前一页', //指示首页的按钮下一个: '下一页',//指示尾页的按钮perPage : 10,//每页显示表格的行数延迟: 0 //分页时动画持续时间,0表示无动画});//设置结果表格的隔行变色$(“#”Tableholder“tr :奇数”).css(“”背景色,' # fff ');$(“#”Tableholder“tr : even”).css('背景色',' # EFE fef ');} })/script/head body div id=' query box ' style=' text-align : center;衬垫-top : 10px;填充-底部: 10px宽度: 100%;span select id=' query TYPe ' style=' height : 30px;-选择数据表的下拉菜单-所选选项='所选'值='请选择数据表/option选项值="用户"学生信息/option选项值='文件'论文/option选项值="软件"软著/option选项值='专利'专利/option /select /span输入类型=' text ' id=' queryKeywords ' style=' width : 200 px;高度: 25px'/!-输入查询关键词的文本框-input type=' button ' id=' query ' style=' width : 30px;高度: 30pxcursor:指针;'/!-提交查询按钮-/span div id=' queryTip ' class=' tip '本功能支持以空格为分割标记的多词查询/div!-信息提示框-/div div id=' queryResultList '/div!-用于显示查询结果-div id=' queryResultPager ' style=' text-align : center;页边距-top : 10px;/div!-结果分页导航的容器-/body/HTMlqueryindex。PHP:
?phpinclude_once('./PHpfiles/ConMySQL。PHP’);//包含连接数据库的代码$查询类型=$ _ POST['查询类型'];//目标数据表$ query关键字=$ _ POST[' query关键字'];//查询词$ queryKeywords=preg _ replace(' # \ s # ',' ',$ queryKeywords);//将字符串中多个连续空格替换为一个空格$keywords=explode(',$ queryKeywords);//查询词按空格分割//根据不同的数据表生成不同的查询语句if($ query TYPe==' users '){ $ sqlsmt='从$queryType其中中选择电子邮件、真名、姓名、身份、学位、主管姓名、电话、房间/查询语句的初始值//利用循环生成对每个关键词的查询语句foreach($关键字作为$关键字){ $sqlsmt .='concat(电子邮件、truename、enName、stuid、学位、主管姓名、电话、房间)如“% $关键字%”或";//本句是关键,利用concat函数实现从多个字段查询单个关键词,并用或者关键词把每个关键词的concat结果合并} $sqlsmt=substr($sqlsmt,0,strlen($ sqlsmt)-3);//去掉查询字符串尾部的或$sqlsmt .='按学位排序阿斯克斯图伊德desc;//追加排序子句} else if($ query TYPe==' papers '){ $ sqlsmt='从$ queryType中选择作者、标题、jorc、vap、级别、状态,其中;foreach($关键字作为$关键字){ $sqlsmt .='concat(作者、标题、jorc、vap、级别、状态),如“% $关键字%”或;} $sqlsmt=substr($sqlsmt,0,strlen($ sqlsmt)-3);$sqlsmt .='按级别排序,desc,desc ';} else if($queryType=='软件s '){ $ sqlsmt='选择作者、标题、编号、日期从$ query TYPe开始,其中;foreach($关键字作为$关键字){ $sqlsmt .='concat(作者、标题、编号、日期),如“% $关键字%”或;} $sqlsmt=substr($sqlsmt,0,strlen($ sqlsmt)-3);$sqlsmt .="按日期订购,desc”;} else if($ query TYPe==' patents '){ $ sqlsmt='从$查询类型中选择作者、标题、接受日期、接受编号、授权日期、授权日期、其中;foreach($关键字作为$关键字){ $sqlsmt .='concat(作者、标题、接受日期、接受编号、授权日期、授权日期)如“% $关键字%”或;} $sqlsmt=substr($sqlsmt,0,strlen($ sqlsmt)-3);$sqlsmt .="订单接受日期desc”;} $ myrs=MySQL _ query($ sqlsmt);//执行查询if(MySQL _ num _ rows($ myrs)=0)//如果结果为空返回no " { echo(JSON _ encode(' no '))";}else //否则返回json格式的结果{ while($ row=MySQL _ fetch _ array($ myrs)){ $ temp[]=$ row;} echo(JSON _ encode($ temp));}?运行结果截图:
更多关于服务器端编程语言(专业超文本预处理器的缩写)相关内容感兴趣的读者可查看本站专题: 《PHP+ajax技巧与应用小结》 、 《PHP网络编程技巧总结》 、 《PHP基本语法入门教程》 、 《php面向对象程序设计入门教程》 、 《php字符串(string)用法总结》 、 《php+mysql数据库操作入门教程》 及《php常见数据库操作技巧汇总》
希望本文所述对大家服务器端编程语言(专业超文本预处理器的缩写)程序设计有所帮助。
版权声明:php mysql ajax方法实现单表多字段多关键词查询是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。