1、效果图如下:

点击提交后,把符合条件的筛选出来

2、代码:

逻辑:选中数据----以数组方式提交---拼接sql语句

难点:

(1)从数据库里读取的数据要去重

(2)读取的数据是数组,要拼接

(3)js实现一键全选

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body> <?php
require "DB.class.php";
$db = new DB();
$keyword="";
$arr1 = "";
$tj1 = " 1=1 ";
$tj2 = " 1=1 ";
$tj3 = " 1=1 ";
$tj4 = " 1=1 "; if(!empty($_POST["ck1"]))
{
$arr1 = $_POST["ck1"];
$str1 = implode("','",$arr1);
$tj1 = " area in ('{$str1}') ";
}
if(!empty($_POST["ck2"]))
{
$arr2 = $_POST["ck2"];
$str2 = implode("','",$arr2);
$tj2 = " renttype in ('{$str2}') ";
}
if(!empty($_POST["ck3"]))
{
$arr3 = $_POST["ck3"];
$str3 = implode("','",$arr3);
$tj3 = " housetype in ('{$str3}') ";
}
if(!empty($_POST["keyword"]))
{
$keyword = $_POST["keyword"];
$tj4 = " keyword like '%{$keyword}%' ";
} $tj = "{$tj1} and {$tj2} and {$tj3} and {$tj4} ";
$sql = "select * from house where".$tj;
echo $sql;
?> <form method="post" action="main-3.php">
<div style="margin:0px 400px"> <div >区域:<input type="checkbox" name="qx1" onclick="quanxuan1(this)"/> 全选</div>
<?php
$sql1 = "select distinct area from house ";
$arr = $db->query($sql1);
foreach($arr as $v)
{
echo "<input type='checkbox' name='ck1[]' class='ck1' value='{$v[0]}'
checked = '
' />{$v[0]}";
}
?>
<br /><br /> <!--第二个--> <div >租赁类型:<input type="checkbox" name="qx2" onclick="quanxuan2(this)"/> 全选</div>
<?php
$sql2 = "select distinct renttype from house ";
$arr = $db->query($sql2);
foreach($arr as $v)
{
echo "<input type='checkbox' name='ck2[]' class='ck2' value='{$v[0]}'/>{$v[0]}";
}
?>
<br /><br />
<!--第三个--> <div >房屋类型:<input type="checkbox" name="qx3" onclick="quanxuan3(this)"/> 全选</div>
<?php
$sql3 = "select distinct housetype from house ";
$arr = $db->query($sql3);
foreach($arr as $v)
{
echo "<input type='checkbox' name='ck3[]' class='ck3' value='{$v[0]}'/>{$v[0]}";
}
?><br /><br />
<div> 关键字:<input type="text" name="keyword" value="<?php echo $keyword?>"/> </div>
<input type="submit" value="提交" />
</div>
<br /><br /> <!--第四个--> <table border="1" cellpadding="0" cellspacing="0" width="50%" style="margin: 0px auto;">
<tr>
<td>关键字</td>
<td>区域</td>
<td>使用面积</td>
<td>租金(¥)</td>
<td>租赁类型</td>
<td>房屋类型</td>
</tr>
<?php
$arr = $db->query($sql);
foreach($arr as $v)
{
echo "<tr>
<td>{$v[1]}</td>
<td>{$v[2]}</td>
<td>{$v[3]}</td>
<td>{$v[4]}</td>
<td>{$v[5]}</td>
<td>{$v[6]}</td>
</tr> ";
} ?>
</table>
</form>
</body>
</html> <script type="text/javascript">
function quanxuan1(qx1)
{
var ck1 = document.getElementsByClassName("ck1");
if(qx1.checked)
{
for(var i=0;i<ck1.length;i++)
{
ck1[i].setAttribute("checked","checked");
}
}
else
{
for(var i=0;i<ck1.length;i++)
{
ck1[i].removeAttribute("checked");
}
}
}
</script> <script type="text/javascript">
function quanxuan2(qx2)
{
var ck2 = document.getElementsByClassName("ck2"); if(qx2.checked)
{
for(var i=0;i<ck2.length;i++)
{
ck2[i].setAttribute("checked","checked");
}
}
else
{
for(var i=0;i<ck2.length;i++)
{
ck2[i].removeAttribute("checked");
}
}
}
</script>
<script type="text/javascript">
function quanxuan3(qx3)
{
var ck3= document.getElementsByClassName("ck3"); if(qx3.checked)
{
for(var i=0;i<ck3.length;i++)
{
ck3[i].setAttribute("checked","checked");
}
}
else
{
for(var i=0;i<ck3.length;i++)
{
ck3[i].removeAttribute("checked");
}
}
}
</script>

注:

将js转换成一个函数调用:

红色部分为不同部分:

<div  style="margin:0px 400px">

             <div >区域:<input type="checkbox"  onclick="quanxuan(this,'bb')"/> 全选</div>
<?php
$sql = "select distinct area from house ";
$arr = $db->query($sql);
foreach($arr as $v)
{
echo "<input type='checkbox' name='ck1[]' class='bb' value='{$v[0]}'/>{$v[0]}";
}
?>
<br /><br /> <!--第二个--> <div >租赁类型:<input type="checkbox" onclick="quanxuan(this,'aa')"/> 全选</div>
<?php
$sql = "select distinct renttype from house ";
$arr = $db->query($sql);
foreach($arr as $v)
{
echo "<input type='checkbox' name='ck2[]' class='aa' value='{$v[0]}'/>{$v[0]}";
}
?>
<br /><br />
<!--第三个--> <div >房屋类型:<input type="checkbox" onclick="quanxuan(this,'qy')"/> 全选</div>
<?php
$sql = "select distinct housetype from house ";
$arr = $db->query($sql);
foreach($arr as $v)
{
echo "<input type='checkbox' name='ck3[]' class='qy' value='{$v[0]}'/>{$v[0]}";
}
?><br /><br />
function quanxuan(a,ff)
{
var ck = document.getElementsByClassName(ff);
if(a.checked)
{
for(var i=0;i<ck.length;i++)
{
ck[i].setAttribute("checked","checked");
}
}
else
{
for(var i=0;i<ck.length;i++)
{
ck[i].removeAttribute("checked");
}
}
}
</script>

php 多条件查询的更多相关文章

  1. jqGrid jqGrid分页参数+条件查询

    HTML <div class="row"> <div class="col-sm-20"> <form id="for ...

  2. Rafy 中的 Linq 查询支持(根据聚合子条件查询聚合父)

    为了提高开发者的易用性,Rafy 领域实体框架在很早开始就已经支持使用 Linq 语法来查询实体了.但是只支持了一些简单的.常用的条件查询,支持的力度很有限.特别是遇到对聚合对象的查询时,就不能再使用 ...

  3. Oracle学习总结_day03_day04_条件查询_排序_函数_子查询

    本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! day03_条件查询_排序_函数 清空回收站: PUR ...

  4. [NHibernate]条件查询Criteria Query

    目录 写在前面 文档与系列文章 条件查询 一个例子 总结 写在前面 上篇文章介绍了HQL查询,我个人觉得使用ORM框架就是为了让少些sql,提高开发效率,而再使用HQL就好像还是使用sql,就觉得有点 ...

  5. PHP-----练习-------租房子-----增删改查,多条件查询

    练习-------租房子-----增删改查,多条件 一 .题目要求: 二 .做法: [1]建立数据库 [2]封装类文件------DBDA.class.php <?php class DBDA ...

  6. 【Java EE 学习 17 下】【数据库导出到Excel】【多条件查询方法】

    一.导出到Excel 1.使用DatabaseMetaData分析数据库的数据结构和相关信息. (1)测试得到所有数据库名: private static DataSource ds=DataSour ...

  7. SpringMVC整合Hibernate实现增删改查之按条件查询

    首先我贴出我项目的结构,只完成了条件查询的相关代码,增删改没有写. 1.新建一个动态Web工程,导入相应jar包,编写web.xml配置文件 <context-param> <par ...

  8. EasyUI ComboGrid的绑定,上下键和回车事件,输入条件查询

    首先我们先看一下前台的绑定事件 1.先定义标签 <input id="cmbXm" type="text" style="width: 100p ...

  9. MySQL数据库6 -查询基础,简单查询,条件查询,对查询结果排序

    一.SELECT语句 SELECT COL1,COL2,....COLn FROM TABLE1,TABLE2,....TABLEn [WHERE CONDITIONS] -- 查询条件 [GROUP ...

  10. C#中使用Sql对Excel条件查询

    如何在C#中实现对Excel的条件查询呢? 在使用Sql条件语句对Excel进行查询时,遇到"至少一个参数没有被指定值"的问题,如何解决? 使用OleDbConnection对象创 ...

随机推荐

  1. 关于特殊文件权限:suid、sgid和sticky-bit

    用 ls –l 命令时,能看到三个八进制数字,表示文件的权限.其实文件的权限应该用4个八进制文件来表示,没有显示的那个是第一位,用来设定一些特殊的权限,这个八进制数字的三个位是:SUID.SGID.s ...

  2. git 设置不需要输入密码, 去除 fetch / pull 代码每次都需要输入密码的烦恼

    https方式每次都要输入密码,按照如下设置即可输入一次就不用再手输入密码的困扰而且又享受https带来的极速 设置记住密码(默认15分钟): git config --global credenti ...

  3. Java中双向链表的代码实现

    写在前面: 双向链表是一种对称结构,它克服了单链表上指针单向性的缺点,其中每一个节点即可向前引用,也可向后引用,这样可以更方便的插入.删除数据元素. 由于双向链表需要同时维护两个方向的指针,因此添加节 ...

  4. 搭建自己的Git服务器

    前言: GitHub是一个免费托管开源代码的远程仓库,使用起来即方便又安全,但在国内有时访问巨慢,原因你懂得.还有一些公司和个人视源码如生命,既不想开源代码又不想给Github交保护费.这时搭建一个自 ...

  5. 蓝桥杯-密码发生器-java

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...

  6. python之基础中的基础(三)

    1.类,类就像是负责特定项目的主管,交给主管干这件事情,主管可以让手下的人分别去完成自己该干的活,最后综合起来把结果交给主管传递出去,即完成任务. class Dog(): ""& ...

  7. 深入浅出理解yield

    索引 转载部分内容来自:http://www.jianshu.com/p/d09778f4e055 [彻底理解yield] http://blog.csdn.net/haskei/article/de ...

  8. 深入分析 Java I/O 的工作机制

    I/O 问题可以说是当今互联网 Web 应用中所面临的主要问题之一,因为当前在这个海量数据时代,数据在网络中随处流动.这个流动的过程中都涉及到 I/O 问题,可以说大部分 Web 应用系统的瓶颈都是 ...

  9. 第三方登录SDK

    紧接着上次的第三方登录文档,这一波又来了. 一.使用qq登录https://connect.qq.com/ 首次登录的话会跳转到应用开发者注册,自己测试的话选择个人.下面的各项自己按真实情况填写. 注 ...

  10. Java Regex match IP address

    Reference: [1] https://www.mkyong.com/regular-expressions/how-to-validate-ip-address-with-regular-ex ...