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

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);
	[email protected]"&".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表示从第一条记录到第三条记录
	//将最新的新闻先显示出来
	[email protected]_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);
	[email protected]"&".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表示从第一条记录到第三条记录
	//将最新的新闻先显示出来
	[email protected]_query($sql,$conn);
	while([email protected]_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)[email protected]$url;?>">上一页</a>  
	<!--这里用分割符号分离出来添加页数--->
	<a href="list3.php?page=<?php echo ($page+1)[email protected]$url;?>">下一页</a>  
	<a href="list3.php?page=<?php echo [email protected]$url;?>">尾页</a>

</center>
时间: 2024-11-03 21:44:03

PHP搜索MYSQL数据库加分页浏览小结的相关文章

分页查询信息(使用jdbc连接mysql数据库实现分页查询任务)

         分页查询信息       使用jdbc连接mysql数据库实现分页查询任务 通过mysql数据库提供的分页机制,实现商品信息的分页查询功能,将查询到的信息显示到jsp页面上. 本项目时一个简单的运用eclipse+jdbc+mysql的小程序. 连接的数据库名称为db_database11,属性如下: 1.创建名为com.pmf.bean的包,包中是名为Product的类,用于封装商品信息. 全部代码如下: package com.pmf.bean; /** * 商品 * */

lucene索引并搜索mysql数据库[转]

由于对lucene比较感兴趣,本人在网上找了点资料,终于成功地用lucene对mysql数据库进行索引创建并成功搜索,先总结如下: 首先介绍一个jdbc工具类,用于得到Connection对象: [java] view plaincopy import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; /** * JdbcUtil.java * @version 1.0 * @cre

MySQL数据库实现分页查询的SQL语句写法!

一:分页需求: 客户端通过传递start(页码),limit(每页显示的条数)两个参数去分页查询数据库表中的数据,那我们知道MySql数据库提供了分页的函数limit m,n,但是该函数的用法和我们的需求不一样,所以就需要我们根据实际情况去改写适合我们自己的分页语句,具体的分析如下: 比如: 查询第1条到第10条的数据的sql是:select * from table limit 0,10;   ->对应我们的需求就是查询第一页的数据:select * from table limit (1-1

mysql数据库加索引

添加普通索引: ALTER  TABLE  `cmf_cz_czfjbxx`  ADD  INDEX index_xz (  `xz`  )ALTER  TABLE  `cmf_cz_czfjbxx`  ADD  INDEX index_zzyt (  `zzyt`  )ALTER  TABLE  `cmf_cz_czrxx`  ADD  INDEX index_zjlx (  `zjlx`  )ALTER  TABLE  `cmf_cz_fwjbxx`  ADD  INDEX index_tj

PHP实现对mysql数据库内容分页显示

<?php $conn=mysql_connect('127.0.0.1','root',''); mysql_query('use test',$conn); mysql_query('set names utf8',$conn); $perNumber=3; //每页显示的记录数 $page=$_GET['page']; //获得当前的页面值 $count=mysql_query("select count(*) from kangbiao"); //获得记录总数 $rs=m

oracle,mysql,SqlServer三种数据库的分页查询

MySql: MySQL数据库实现分页比较简单,提供了 LIMIT函数.一般只需要直接写到sql语句后面就行了.LIMIT子 句可以用来限制由SELECT语句返回过来的数据数量,它有一个或两个参数,如果给出两个参数, 第一个参数指定返回的第一行在所有数据中的位置,从0开始(注意不是1),第二个参数指定最多返回行数.例如:select * from table WHERE … LIMIT 10; #返回前10行select * from table WHERE … LIMIT 0,10; #返回前

MySQL、SQLServer2000(及SQLServer2005)和ORCALE三种数据库实现分页查询的方法

在这里主要讲解一下MySQL.SQLServer2000(及SQLServer2005)和ORCALE三种数据库实现分页查询的方法. 可能会有人说这些网上都有,但我的主要目的是把这些知识通过我实际的应用总结归纳一下,以方便大家查询使用. 下面就分别给大家介绍.讲解一下三种数据库实现分页查询的方法. 一. MySQL 数据库分页查询 MySQL数据库实现分页比较简单,提供了LIMIT函数.一般只需要直接写到sql语句后面就行了. LIMIT子句可以用来限制由SELECT语句返回过来的数据数量,它有

oracle,mysql,SqlServer三种数据库的分页查询总结

MySql: MySQL数据库实现分页比较简单,提供了 LIMIT函数.一般只需要直接写到sql语句后面就行了. LIMIT子 句可以用来限制由SELECT语句返回过来的数据数量,它有一个或两个参数,如果给出两个参数, 第一个参数指定返回的第一行在所有数据中的位置,从0开始(注意不是1),第二个参数指定最多返回行数.例如: select * from table    LIMIT 10;    #返回前10行 select * from table    LIMIT 0,10; #返回前10行

Servlet 连接mysql数据库

一.安装MySQL并创建相应的数据库和插入所要操作的信息(如下图所示) 二.在Myeclipse中加载MySQL驱动 1)鼠标右键 项目-->"Build Path"-->"Add Libraries..."-->选中"User Library"后单击"next",具体操作如下面的图片所示: 最后查看项目处会出现如下图的信息,则表示mysql数据库加载成功. 三.在所创建的Servlet文件中输入 1 pac