问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

php 中如何实现将查找结果并分页显示?

发布网友 发布时间:2022-04-07 23:20

我来回答

2个回答

懂视网 时间:2022-04-08 03:41

PHP搜索加分页浏览小结:
1 分页后再做搜索
2 这里对于url的拼接,以及模糊查询,搜索时候的显示添加,SQL语句的拼接
3 对于页面传递过来的超级链接的变量,如果不存在就要设置,对于可能抛出异常的要加上@屏蔽错误
4 对于查询一般用一些关键字来获取
5 分页显示的limit条件要写好
6 搜索时候的where条件

搜索表单:
<!--- 搜索表单--->
	<form action="list3.php" method="get">
	标题:<input type="text" name="title" size="10" value="<?php echo @$_GET[‘title‘];?>"/> 
	关键字:<input type="text" name="keywords" size="10" value="<?php echo @$_GET[‘keywords‘];?>"/> 
	作者:<input type="text" name="author" size="10" value="<?php echo @$_GET[‘author‘];?>"/> 
	<input type="submit" value="搜索"/>
	<input type="button" value="全部信息" onclick="window.location=‘list3.php‘"/>
	</form>
<!---------------->

分页封装
<?php
	//=======================
	//封装搜索的信息
	//定义一个封装搜索条件的数组变量
	$wherelist=array();
	//定义一个封装搜索的url,用于放置到url后面作为参数
	$urllist=array();
	//判断新闻标题是否有值就封装搜索条件
	if(!empty($_GET[‘title‘])){
	$wherelist[]="title like ‘%{$_GET[‘title‘]}%‘";
	$urllist[]="title={$_GET[‘title‘]}";
	
	}
	//判断关键字是否有值就封装搜索条件
	if(!empty($_GET[‘keywords‘])){
	$wherelist[]="keywords like ‘%{$_GET[‘keywords‘]}%‘";
	$urllist[]="keywords={$_GET[‘keywords‘]}";
	}
	//判断作者是否有值就封装搜索条件
	if(!empty($_GET[‘author‘])){
	$wherelist[]="author like ‘%{$_GET[‘author‘]}%‘";
	$urllist[]="author={$_GET[‘author‘]}";
	}
	//组装搜索条件
	//将数组合并成字符串用implode();
	if(count($wherelist)>0){
	$where=" where ".implode(" and ",$wherelist);
	$url=@"&".implode("&",$urllist);
	}
	//echo @$where;
	//echo @$url;
	
	//=======================
	?>

3 分页处理
<?php
	//=====插入分页处理代码=====
	//1 定义分页的变量
	$page=isset($_GET[‘page‘])?$_GET[‘page‘]:1;//当前页数,默认为1
	$pageSize=4;	//页大小
	$maxRows="";	//最大数据条数
	$maxPages="";	//最大页数
	
	//获取最大数据条数
	@$sql="select count(*) from news {$where}";
	$res=mysql_query($sql,$conn);
	$maxRows=mysql_result($res,0,0);//定位从结果集中获取总数据的条数,就是获取第一个单元格中的值

	//3 计算出最大页数
	$maxPages=ceil($maxRows/$pageSize);//进一取整获取最大页数,7/3;
	//4 判断页数是否越界,判断是否有效
	if($page>$maxPages){
	$page=$maxPages;
	//判断是否超出了最大页
	}
	if($page<1){
	$page=1;
	}
	//拼接$sql,限制每页显示的条数
	$limit=" limit ".(($page-1)*$pageSize).",{$pageSize}";
	//起始位置是当前页减1乘以每页显示的条数
	//==========分页封装结束==============
	@$sql="select * from news {$where} order by addtime desc {$limit}";
	//limit 0,3表示从第一条记录到第三条记录
	//将最新的新闻先显示出来
	$result=@mysql_query($sql,$conn);?>

具体实例:新闻搜索和分页程序:
搜索和分页功能如下:

list3.php 完整代码
<?php
header("content-Type:text/html;charset=utf-8");
?>
<?php
	require("menu.php");
	require("dbconfig.php");
?>
<title>新闻信息管理系统</title>
<script>
function dodel(id){
	//判断是否要删除
	if(confirm("确定要删除吗?")){
	window.location="action.php?action=del&id="+id;
	}


}

</script>
<center>
	<h2>搜索和分页浏览新闻</h2>
	<!--- 搜索表单--->
	<form action="list3.php" method="get">
	标题:<input type="text" name="title" size="10" value="<?php echo @$_GET[‘title‘];?>"/> 
	关键字:<input type="text" name="keywords" size="10" value="<?php echo @$_GET[‘keywords‘];?>"/> 
	作者:<input type="text" name="author" size="10" value="<?php echo @$_GET[‘author‘];?>"/> 
	<input type="submit" value="搜索"/>
	<input type="button" value="全部信息" onclick="window.location=‘list3.php‘"/>
	</form>
	<!---------------->
	<table border="1" cellpadding="2" cellspacing="0">
	<tr><th>新闻id号</th><th>新闻标题</th><th>发布者</th>
	<th>关键字</th><th>添加时间</th><th>新闻内容</th><th>操作</th>
	</tr>
	<?php
	//=======================
	//封装搜索的信息
	//定义一个封装搜索条件的数组变量
	$wherelist=array();
	//定义一个封装搜索的url,用于放置到url后面作为参数
	$urllist=array();
	//判断新闻标题是否有值就封装搜索条件
	if(!empty($_GET[‘title‘])){
	$wherelist[]="title like ‘%{$_GET[‘title‘]}%‘";
	$urllist[]="title={$_GET[‘title‘]}";
	
	}
	//判断关键字是否有值就封装搜索条件
	if(!empty($_GET[‘keywords‘])){
	$wherelist[]="keywords like ‘%{$_GET[‘keywords‘]}%‘";
	$urllist[]="keywords={$_GET[‘keywords‘]}";
	}
	//判断作者是否有值就封装搜索条件
	if(!empty($_GET[‘author‘])){
	$wherelist[]="author like ‘%{$_GET[‘author‘]}%‘";
	$urllist[]="author={$_GET[‘author‘]}";
	}
	//组装搜索条件
	//将数组合并成字符串用implode();
	if(count($wherelist)>0){
	$where=" where ".implode(" and ",$wherelist);
	$url=@"&".implode("&",$urllist);
	}
	//echo @$where;
	//echo @$url;
	
	//=======================
	?>
	<?php
	//=====插入分页处理代码=====
	//1 定义分页的变量
	$page=isset($_GET[‘page‘])?$_GET[‘page‘]:1;//当前页数,默认为1
	$pageSize=4;	//页大小
	$maxRows="";	//最大数据条数
	$maxPages="";	//最大页数
	
	//获取最大数据条数
	@$sql="select count(*) from news {$where}";
	$res=mysql_query($sql,$conn);
	$maxRows=mysql_result($res,0,0);//定位从结果集中获取总数据的条数,就是获取第一个单元格中的值

	//3 计算出最大页数
	$maxPages=ceil($maxRows/$pageSize);//进一取整获取最大页数,7/3;
	//4 判断页数是否越界,判断是否有效
	if($page>$maxPages){
	$page=$maxPages;
	//判断是否超出了最大页
	}
	if($page<1){
	$page=1;
	}
	//拼接$sql,限制每页显示的条数
	$limit=" limit ".(($page-1)*$pageSize).",{$pageSize}";
	//起始位置是当前页减1乘以每页显示的条数
	//==========分页封装结束==============
	@$sql="select * from news {$where} order by addtime desc {$limit}";
	//limit 0,3表示从第一条记录到第三条记录
	//将最新的新闻先显示出来
	$result=@mysql_query($sql,$conn);
	while($row=@mysql_fetch_assoc($result)){
	echo "<tr>";
	echo "<td>{$row[‘id‘]}</td>";
	echo "<td>{$row[‘title‘]}</td>";
	echo "<td>{$row[‘author‘]}</td>";
	echo "<td>{$row[‘keywords‘]}</td>";
	echo "<td>".date("Y-m-d H:i:s",$row[‘addtime‘])."</td>";
	echo "<td>{$row[‘content‘]}</td>";
	echo "<td><a href=‘javascript:dodel({$row[‘id‘]})‘>删除</a> | <a href=‘edit.php?id={$row[‘id‘]}‘>修改

</a></td>";
	echo "</tr>";
	
	}
	//释放结果集
	@mysql_free_result($result);
	mysql_close($conn);
	?>
	</table>
	<?php
	//显示当前页数值,上一页和下一页
	echo "<br/>";
	echo "当前页 {$page}/{$maxPages}页 共计:{$maxRows}条  ";?>
	<a href="list3.php?page=1<?php echo @$url;?>">首页</a>  
	<a href="list3.php?page=<?php echo ($page-1).@$url;?>">上一页</a>  
	<!--这里用分割符号分离出来添加页数--->
	<a href="list3.php?page=<?php echo ($page+1).@$url;?>">下一页</a>  
	<a href="list3.php?page=<?php echo $maxPages.@$url;?>">尾页</a>
	
</center>

 

PHP搜索MYSQL数据库加分页浏览小结

标签:

热心网友 时间:2022-04-08 00:49

第一个问题、你是不是已经会把结果整页显示了?我下面假释你已经会了,否则说不清楚。

第二个问题、你用的什么数据?我下面假释你用的MYSQL,其它数据库可能要可能稍微麻烦一点。

假释你的查询程序是query.php,现在要修改query.php程序,在前面增加一个检测$p_num参数值的语句,并用这个语句控制SQL查询语句,一般结构如下:

$p_size=20;//这个你可以自己定,表示没也显示多少条
$p_num+=0;//如果没有此参数表示显示第0页
$start_num=$p_num * $p_size;//计算从第几条查询结果中开始显示

$sql="select ... from ... where ...";//你自己的构造查询语句的代码

$sql.="limit $start_num , $p_size";//添加SQL语句取数据的*,表示从$start_num开始取$p_size条查询结果

在查询结果显示完毕以后,需要显示各页的连接,也可以放在查询结果显示之前,代码如下:

//$num_tottal为总共满足条件的数据条数,$p_total为总共页数,你自己完成计算
$url="query.php?基本查询条件";
for ($i=0;$i<=$p_total;$i++)
echo "<a href='$url&p_num=$i'>".($i+1)."</a>";
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
打印机硒鼓安装方法及步骤 如何安装新硒鼓? 我现在很困惑该不该和女友继续发展下去 电脑上字体怎么安装方法简单易行的字体安装步骤及技巧 网页字体显示不出.怎么办? 如何添加电脑上没有的字体解决电脑字体限制增加字体选择多样性_百度知 ... 不有效字体文件 电脑字体识别不了 梦见身上煤炭黑的长辈给我钥匙的预兆 株洲最值得一去的古镇 摄像机的画质和分辨率大小清不清楚看什么参数?500w和200w像素有啥区别? 手机摄像头200万像素和300万像素有多大差别? 摄像头像素:200W上什么意思 萤石室外摄像头200w像素可以吗 监控设备200万像素跟800万像素有什么区别? 新手第一次使用数位屏有什么好的学习步骤?注意哪些问题? 第一次学习c4d打开是这样子的,怎么回事? 如何画好动漫人物这个是我第一次画的图,之后想要再画一直无从下手,求大神给点初学者学的图或者书,视频 公共英语PETS3级证书,企业会认可吗? 全国公共英语考试pets3和pets4的差异? 考PETS3有什么用呢? 公共英语三级(PETS3)有哪些阅读技巧? 可以直接参加全国公共英语*PETS3考试吗?没有PET1和2的证书 Pets的三级和英语三级有什么区别 PETS-3是公共英语3级么? 大学公共英语三级是不是就是PETS3? pets3是不是就是我们在学校考的英语3级 请问全国公共英语三级PETS3证书 会有有效期吗? 爷爷留下来的一个小金元宝 上面写着大清银库 不知是真是假? 大清库银、足银银元宝、重一百一十六克、是真的吗? 怎么两个不同监控摄像头拍出来的照片像素都是200万像素的照片而清晰度不同呢? 囊内卵黄囊未显示是什么意思? 6周+2天左侧卵巢黄体,卵黄囊结构显示不清 很多孕妈分不清什么叫孕囊什么叫卵黄囊,它们有什么区别吗? 怀孕42天hcg10611.0做彩超看不到卵黄囊是什么意思? 很多孕妈分不清什么叫孕囊,什么叫卵黄囊,这两者有哪些不同呢? 很多孕妈分不清什么叫孕囊,那什么叫卵黄囊,有哪些区别? 16mm×13 mm17×mm 壁厚,回声较强,囊内见卵黄囊。双附件显示不清。什 孕妇彩超检查囊内胎芽不清,似查见卵黄囊是怎么回事 未见卵黄囊怎么办 怀孕约两个月,无胎心,囊内见不清胚芽及卵 请问卵黄囊是什么意思 宫腔内扫见7*4*8mm无回声暗区,周边有略强回声环绕,其内未见卵黄囊。双侧卵巢显示不清。 平板电脑wps里的文本怎么保存到內存卡呢 手持挂烫机哪种好? 京东商城飞利浦挂烫机与手持熨烫机哪种好用 钉钉老师没有开启直播回放自己也错过了直播 怎么办? 钉钉在老师直播时到一定时间时就会被强制下播吗? 钉钉错过直播怎么办会被老师发现吗? 钉钉老师未开学直播算违规吗?