《PHP》课件5-3 新闻搜索页面设计-old_第1页
已阅读1页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本节主要内容模糊查询和精确查询的介绍新闻搜索页面的实现WEB开发中网页分页的原理在新闻表数据访问层中添加分页处理添加分页的新闻列表页面的设计与实现模糊查询和精确查询在SQL语句中,like操作符用于在where子句中搜索列中的指定模式,通常将使用like操作符的查询语句称之为模糊查询,而使用其他关系操作符的查询则称之为精确查询selectcolumn_name(s)fromtable_namewherecolumn_namelikepatternselect*fromtbl_userwhereunamelike'%李%';模糊查询和精确查询functionfindNewsByName($keyword,$search_field="all"){

if($search_field=="all"){

$sql="select*from`tbl_news`where`title`like'%$keyword%'

or`content`like'%$keyword%'orderby`publishtime`desc";

}else{

$sql="select*from`tbl_news`where`$search_field`like'%$keyword%'orderby`publishtime`desc";}

$link=get_connect();

$rs=execQuery($sql,$link);

return$rs;}新闻搜索页面的实现设计思路:首先需要添加一个搜索表单,该表单的作用就是将搜索条件传递给PHP脚本,再由PHP脚本根据搜索条件查询MySQL数据库,最后将查询结果再次输出到页面中进行显示。添加搜索功能的页面header.php……<formaction="newslist_page.php"method="get">

新闻查询:<selectname="search_field"><optionvalue="title">按标题</option><optionvalue="content">按内容</option><optionvalue="all">两者均可</option></select><inputtype="text"name="keyword"placeholder="请输入查询内容"><inputtype="submit"value="提交"class="form-btn"></form>……添加搜索处理的newslist.php页面<?phprequire_once('common/news.dao.php');require_once('common/checkFormlib.php');if(isset($_GET['classid'])){

$classid=test_input($_GET['classid']);

$newslist=findNewsByClassid($classid);

//加入查询之后的代码

}elseif(isset($_GET['keyword'])){//判断是否有关键字传入

$keyword=test_input($_GET['keyword']);

$search_field=test_input($_GET['search_field']);

$newslist=findNewsByName($keyword,$search_field);}else{$newslist=findNews();}?>运行结果WEB分页原理分页是一种将所有信息分段展示给浏览器的技术,浏览器用户每次看到的不是全部信息,而是其中的一部分信息,如果没有找到所需内容,可以通过跳转到指定页或翻页的方式切换显示内容。分页技术实现的位置:浏览器:使用客户端脚本,例如用JavaScript脚本语言实现分页;web服务器:使用动态脚本语言实现分页功能,例如PHP;数据库服务器:使用SQL语句实现分页功能,直接在数据库端进行过滤。浏览器端分页的特点浏览器端可以使用JavaScript脚本实现分页功能,但前提是从数据库中查询出满足需要的全部记录。这种方式的特点是实现了数据的离线访问,用户切换分页速度快,体验较好,但初次等待时间长,消耗了大量的服务器资源和网络带宽,且在数据量过大时,容易造成系统性能急剧下降。WEB服务器端分页的特点同样需要从数据库中查询出满足需要的全部记录,并传输到web服务器端。减少了服务器端到用户端的大量数据传输。增加了web服务器的运算量,并降低了用户切换分页的极速体验,是一种典型的折衷方案。数据库端分页的特点使用SQL语句实现分页功能,直接在数据库端进行过滤,将用户所需记录集发送到web服务器端,再转发到客户端浏览器,无需进行二次过滤。效率高,对服务器资源和网络带宽均极为节省,是最为常见的分页技术,又称之为“真分页”。实现分页的核心原理是利用SQL语句的limit子句。Limit子句有两个参数,第1个参数表示查询数据的起始位置,第2个参数表示页面的大小。真分页的原理select*fromtbl_userlimit0,10;--获取第1页的10条数据select*fromtbl_userlimit10,10;--获取第2页的10条数据select*fromtbl_userlimit20,10;--获取第3页的10条数据select*fromtbl_userlimit30,10;--获取第4页的10条数据select*fromtbl_userlimit40,10;--获取第5页的10条数据数据表中的数据条目从0开始计算的limit第1个参数=($1)*$pagesize添加新闻表访问层中的分页处理功能序号函数描述1findNews_page($page,$pagesize=10)分页显示新闻信息,参数$page是当前页码,$pagesize为每页的最大记录数2

findNewsByClassid_page($classid,$page,$pagesize=10)分页显示指定类别的新闻信息,参数$classid为新闻类别编号3findNewsByName_page($keyword,$page,$search_field="all",$pagesize=10)分页显示模糊查询的新闻信息,参数$keyword为查询内容,$search_field为参数字段4maxpage_findNews($pagesize=10)获取分页查询新闻信息的最大页码数5maxpage_findNewsByClassid($classid,$pagesize=10)获取分页查询指定类别的新闻信息的最大页码数6maxpage_findNewsByName($keyword,$search_field="all",$pagesize=10)获取分页模糊查询新闻信息的最大页码数maxpage_findNews()方法/**

获取全部新闻分页后的最大页码*@paramint$pagesize每页显示最大记录数默认为10条记录*/functionmaxpage_findNews($pagesize=10){$link=get_connect();

$sql="selectcount(*)asnumfrom`tbl_news`orderby`publishtime`desc";$rs=execQuery($sql,$link);$count=$rs[0];

//取出查询结果中的num列的值$count=$count['num'];//取得最大页码值

$max_page=ceil($count/$pagesize);return$max_page;}ceil()函数进行向上取整添加分页的新闻表数据访问层/**

分页查询所有新闻信息,按照发布时间倒序*@paramint$page当前page值*@paramint$pagesize每页显示最大记录数默认为10条记录*/functionfindNews_page($page,$pagesize=10){

$max_page=maxpage_findNews($pagesize);

//拼接查询语句并执行,获取查询数据

$page=$page>$max_page?$max_page:$page;

$lim=($1)*$pagesize;

$sql="select*from`tbl_news`orderby`publishtime`desclimit$lim,$pagesize";

$link=get_connect();

$rs=execQuery($sql,$link);

return$rs;}若传递的页码超过最大页码,则将页码设置为最后一页添加分页的新闻表数据访问层/***获取分类新闻查询分页后的最大页码*@paramint$classid新闻类别编号*@paramint$pagesize每页显示最大记录数默认为10条记录*/functionmaxpage_findNewsByClassid($classid,$pagesize=10){$link=get_connect();$sql="selectcount(*)asnumfrom`tbl_news`where`classid`=$classidorderby`publishtime`desc";$rs=execQuery($sql,$link);$count=$rs[0];//取出查询结果中的num列的值$count=$count['num'];//取得最大页码值

$max_page=ceil($count/$pagesize);return$max_page;}添加分页的新闻表数据访问层/***分页查询选定类别的新闻信息,按照发布时间倒序*@paramint$classid新闻类别编号

*@paramint$page当前page值*@paramint$pagesize每页显示最大记录数默认为10条记录*/functionfindNewsByClassid_page($classid,$page,$pagesize=10){

$max_page=maxpage_findNewsByClassid($pagesize);$page=$page>$max_page?$max_page:$page;

//拼接查询语句并执行,获取查询数据$lim=($1)*$pagesize; $sql="select*from`tbl_news`where`classid`=$classidorderby`publishtime`desclimit$lim,$pagesize";$link=get_connect();$rs=execQuery($sql,$link);return$rs;}添加分页的新闻表数据访问层functionmaxpage_findNewsByName($keyword,$search_field="all",$pagesize=10){$link=get_connect();if($search_field=="all"){ $sql="selectcount(*)asnumfrom`tbl_news`where`title`like'%$keyword%'or`content`like'%$keyword%'orderby`publishtime`desc";}else{

$sql="selectcount(*)asnumfrom`tbl_news`where`$search_field`like'%$keyword%'orderby`publishtime`desc";}$rs=execQuery($sql,$link);$count=$rs[0];//取出查询结果中的num列的值$count=$count['num'];//取得最大页码值$max_page=ceil($count/$pagesize);return$max_page;}添加分页的新闻表数据访问层functionfindNewsByName_page($keyword,$page,$search_field="all",$pagesize=10){//取得最大页码值$max_page=maxpage_findNewsByName($keyword,$search_field,$pagesize);$page=$page>$max_page?$max_page:$page;

$lim=($1)*$pagesize;if($search_field=="all"){

$sql="select*from`tbl_news`where`title`like'%$keyword%'or`content`like'%$keyword%'orderby`publishtime`desclimit$lim,$pagesize";}else{

$sql="select*from`tbl_news`where`$search_field`like'%$keyword%'orderby`publishtime`desclimit$lim,$pagesize";}$link=get_connect();$rs=execQuery($sql,$link);return$rs;}添加分页的新闻列表页面newslist_page.php……

$page=isset($_GET['page'])?intval($_GET['page']):1;$pagesize=2;$params=array();//保存url中参数列表

if(isset($_GET['classid'])){……

$max_page=maxpage_findNewsByClassid($classid,$pagesize);

//获取当前选择的页码,并作容错处理

$page=$page>$max_page?$max_page:$page;

$page=$page<1?1:$page;

$newslist=findNewsByClassid_page($classid,$page,$pagesize);

//将classid参数保存入数组变量$params $params['classid']=$classid;}elseif(isset($_GET['keyword'])){

$keyword=test_input($_GET['keyword']);

$search_field=test_input($_GET['search_field']);$max_page=maxpage_findNewsByName($keyword,$search_field,$pagesize);//获取当前选择的页码,并作容错处理

$page=$page>$max_page?$max_page:$page;$page=$page<1?1:$page;$newslist=findNewsByName_page($keyword,$page,$search_field,$pagesize);

//将keyword和search_field参数保存入数组变量$params $params['keyword']=$keyword;$params['search_field']=$search_field; }else{

$

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论