本文目录一览:
php多条件复合查询
在我们的网站设计过程中,经常会用到多条件查询,本文的源码是一个二手房屋查询的例子。在本例中,我们要实现能够通过地理位置,物业类型,房屋价格,房屋面积及信息发布日期等多个条件查询到客户所需的资料。
查询文件(search.php)
一、生成查询语句:
?
$conn=mysql_connect("localhost","root","");
$db=mysql_select_db("lingyun");
$query="select * from message where tradetype='".$tradetype."'"; //交易类型,如出租,出售
$SQL=$SQL . "wuye='" . $wuye . "'";
if($housetype!="不限"){
$query.=" housetype='".$housetype."'"; //房屋类型,如二室一厅,三室二厅
}
if($degree!="不限"){
$query.=" degree='".$degree."'"; //新旧程度
}
if($wuye!="不限"){
$query.=" wuye='".$wuye."'"; //物业类型 如住房,商铺
}
if($price2!=""){
switch($price1){
case "大于":
$query.=" price'".$price2."'"; //价格
break;
case "等于":
$query.=" price='".$price2."'";
break;
case "小于":
$query.=" price'".$price2."'";
break;
}
}
if($area2!=""){
switch($area1){
case "大于":
$query.=" area'".$area2."'"; //面积
break;
case "等于":
$query.=" area='".$area2."'";
break;
case "小于":
$query.=" area'".$area2."'";
break;
}
}
switch($pubdate){ //发布日期
case "本星期内":
$query.=" TO_DAYS(NOW()) - TO_DAYS(date)=7";
break;
case "一个月内":
$query.=" TO_DAYS(NOW()) - TO_DAYS(date)=30";
break;
case "三个月内":
$query.=" TO_DAYS(NOW()) - TO_DAYS(date)=91";
break;
case "六个月内":
$query.=" TO_DAYS(NOW()) - TO_DAYS(date)=183";
break;
}
if($address!=""){
$query.=" address like '%$address%'"; //地址
}
if(!$page){
$page=1;
}
?
二、输出查询结果:
?php
if ($page){
$page_size=20;
$result=mysql_query($query);
#$message_count=mysql_result($result,0,"total");
$message_count=10;
$page_count=ceil($message_count/$page_size);
$offset=($page-1)*$page_size;
$query=$query." order by date desc limit $offset, $page_size";
$result=mysql_query($query);
if($result){
$rows=mysql_num_rows($result);
if($rows!=0){
while($myrow=mysql_fetch_array($result)){
echo "tr";
echo "td width='15' height='12'img src='image/home2.gif' width='14' height='14'/td";
echo "td width='540' height='12'$myrow[id] $myrow[tradetype] $myrow[address] $myrow[wuye]($myrow[housetype])font style='font-size:9pt'[$myrow[date]]/font";
echo "/td";
echo "td width='75' height='12'a href='view_d.php?code=$myrow[code]' target='_blank'详细内容/a/td";
echo "/tr";
}
}
else echo "trtddiv align='center'img src='image/sorry.gif'brbr没有找到满足你条件的记录/div/td/tr";
}
$prev_page=$page-1;
$next_page=$page+1;
echo "div align='center'";
echo " 第".$page."/".$page_count."页nbsp";
if ($page=1){
echo "|第一页|";
}
else{
echo "a href='$PATH_INFO?page=1'|第一页|/a";
}
echo " ";
if ($prev_page1){
echo "|上一页|";
}
else{
echo "a href='$PATH_INFO?page=$prev_page'|上一页|/a";
}
echo " ";
if ($next_page$page_count){
echo "|下一页|";
}
else{
echo "a href='$PATH_INFO?page=$next_page'|下一页|/a";
}
echo " ";
if ($page=$page_count){
echo "|最后一页|";
}
else{
echo "a href='$PATH_INFO?page=$page_count'|最后一页|/a";
}
echo "/div";
}
else{
echo "p align='center'现在还没有房屋租赁信息!/p";
}
echo "hr width="100%" size="1"";
?
/table
PHP实现搜索查询功能的方法技巧
下面是首页显示数据表package中的内容,但是有个条件,显示在首页的内容还必须是 :字段status=0,且printing=0的数据才能在首页列表中显示出来。
页面上有一个“搜索”功能,输入条件后就会根据条件来进行查询。
一般的搜索的话,只要在首页显示列表方法index()中给一个:
?
$map=array();//初始化查询条件
$map=$this-_search();//调用查询方法
$total = $this-Model-where ($map)-count(); //这个主要是用来计算页面显示数据条数的
if ($total == 0) {
$_list = '';
} else {
$_list = $this-Model-where ($map)-limit( $post_data ['first'] . ',' . $post_data ['rows'] )-select();
}
然后,就是写一个_search():
protected function _search(){
$map = array ();
$post_data = I ( 'post.' );
if ($post_data ['packageid'] != '') {
$map ['packageid'] = array (
'like',
'%' . $post_data ['packageid'] . '%'
);
}
return $map;
}
最后,在设置的“搜索”菜单中,调用这个搜索方法。
但是,这个搜索的.同时,还要确保在字段status=0,且printing=0的数据中进行搜索。
这个限制条件该加在什么地方。各种尝试和查询后,才知道。限制条件直接加在SQL语句中就行了(如下红色的地方)。(我自己试的时候一直在如下蓝色的地方加条件,屡试屡败!)
$map=array();
$map=$this-_search();
$total = $this-Model-where ($map)-where(array('status' =0,'print_status'=0))-count();
if ($total == 0) {
$_list = '';
} else {
$_list = $this-Model-where ($map)-where(array('status' =0,'print_status'=0))-limit( $post_data ['first'] . ',' . $post_data ['rows'] )-select();
}
更多相关文章推荐:
如何在PHP页面实现指定条件的查询
在页面里把条件都写到多选按钮里,post提交,php接收提交的参数,然后拼接成完整的sql语句不就行了?
PHP查询功能如何实现
//获得连接
$db = mysql_connect("localhost", "root", "root") or die(mysql_error());
//echo "Connected to MySQLbr/";
//连接数据库
mysql_select_db("test") or die(mysql_error());
//echo "Connected to Database";
$result = mysql_query("select * from books",$db);
//循环遍历
while ($myrow = mysql_fetch_row($result)){
print_r($myrow) ;
}
PHP查询数据库中满足条件的记录条数(两种实现方法)
在需要输出网站用户注册数,或者插入数据之前判断是否有重复记录的时候,就需要获取满足条件的MySQL查询的记录数目。
第一种方法:查询时候直接统计
复制代码
代码如下:
$sql="SELECT
COUNT(*)
AS
count
FROM
TABLE
WHERE
id='$id'";
$result=mysql_fetch_array(mysql_query($sql));
$count=$result['count'];
第二种方法:先取出,后统计
复制代码
代码如下:
$sql="SELECT
*
FROM
TABLE
WHERE
id='$id'";
$result=mysql_fetch_array(mysql_query($sql));
$count=count($result);//或者$count=mysql_num_rows($result);
不过直接使用MySQL的COUNT(*)在数据量庞大的时候,效率的优势是十分显著的,因为后者需要二次计算,所以还是最好使用前者进行数据条数的统计。