首 页   · 站长博客 · 用户注册 · 会员登陆  · 会员排行  ·最新主题  ·最近回复  精华区  版权声明  ·论坛管理
  当前登录身份:游客,请先登录。  笔名: 口令: 验证码:   
楼 主  index »  PHP相关资源下载区 » [求助]请问如果用MYSQL+PHP 多条件查询  


  作者:mukden
  注册时间:2004-12-09
  主题/回复:1/3
  积分:408
  等级:★★☆(五级)
  称号:略有小成

  mukden@126.com
  未提供
  mukden.yeah.net

 

 发表:2004-12-09 18:00:50 阅读 3635 次 回复 5 次 得分1  |   字号 字色
[求助]请问如果用MYSQL+PHP 多条件查询
请问如果用MYSQL+PHP 多条件查询

请问能否帮助制作下面网站的查询,一样就可以

http://assoc.scvs.tpc.edu.tw/room/www/vir_query.php

最好弄好后将源代码给打个包上传过来,谢谢.
 
 1#楼  
 
  回复人:一起PHP
  注册时间:2004-02-27
  主题/回复:247/1521
  积分:4649
  等级:★★★★★☆(十一级)
  称号:论坛圣人

   
 1#楼 发表于2004-12-10 03:01:08  评分:1 

数据库结构如何????
没有数据库结构,如何写出查询代码???
不过,查询思路是简单的。。。就是到了提交的页面,首先判断
用户有没有选择“按照时间查询”。。如果选择了,则把用户选择的时间接收过来。然后判断用户选择了模式一还是模式二。如果是模式一,则判断三个checkbox用户选择了哪几个(关于如何取得checkbox值。本站有相关文章),然后把用户选择的接收过来。。如果选择了模式二,那么很简单,只需要把那一个select的值取过来即可。

取过来相关信息之后,就可以根据数据库结构,写出sql语句。
 2#楼  
 
  回复人:mukden
  注册时间:2004-12-09
  主题/回复:1/3
  积分:408
  等级:★★☆(五级)
  称号:略有小成

   
 2#楼 发表于2004-12-10 03:53:32  评分:× 

语句我写出来了,但是我在提交表里怎么写呢,数据库
CREATE TABLE `ks_date` (
  id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT ,
  name VARCHAR(8) NOT NULL ,
  store INT(3) NOT NULL ,
  danhao INT(7) NOT NULL ,
  sku INT(6) NOT NULL ,
  bumen CHAR(8) NOT NULL ,
  trade_name VARCHAR(255) NOT NULL ,
  tsdate varchar(20) NOT NULL default '',
  u_name CHAR(8) NOT NULL default '',
  u_tel1 CHAR(30) ,
  u_tel2 CHAR(30) ,
  u_tel3 CHAR(30) ,
  address VARCHAR(255) ,
  neirong VARCHAR(255) NOT NULL ,
  nbchul CHAR(50) ,
  chulijg CHAR(50) ,
  money CHAR(50) ,
  remark CHAR(50) ,
  UNIQUE KEY `id` (`id`)
) TYPE=MyISAM;

vir_query.php页面部分代码
<script Language="JavaScript">
<!--
function merge_date(theForm)
{
var sqlstr="SELECT * FROM ks_date WHERE ";

if(theForm.cbdate.checked)
{
var sd,ed;
sd=theForm.syear.value+"-"+theForm.smonth.value+"-"+theForm.sday.value;
ed=theForm.eyear.value+"-"+theForm.emonth.value+"-"+theForm.eday.value;
sqlstr+=(" AND ksdate BETWEEN '"+sd+"' and '"+ed+"'");

}
if(theForm.rbsel[0].checked)
{
if(theForm.cbroom.checked)
{
sqlstr+=(" AND bumen ='"+theForm.selbumen.value+"'");

}
if(theForm.cbname.checked)
{
sqlstr+=(" AND nbchul ='"+theForm.selnbchul.value+"'");

}
if(theForm.cbcourse.checked)
{
sqlstr+=(" AND chulijg ='"+theForm.chulijg.value+"'");

}
theForm.sqlstr2.value=sqlstr;
sqlstr+=" Order By id desc";

}
}
//-->
</script>
<form name="form1" method="post" action="vir_query2.php" onsubmit="return merge_date(this)">
  <table border="1" cellspacing="0" cellpadding="0" align="center">
    <tr> 
  <td height="50" colspan="3"> 
    <div align="center"><font size="+3" color="#000099"><i>预约资料条件式查询</i></font></div>
  </td>
    </tr>
    <tr> 
  <td height="10" colspan="3" bgcolor="#E4D2FF"><font size="2" color="#666666">如有需要时间条件,请先勾选「日期”,并选择开始、结束时间。</font></td>
    </tr>
    <tr bgcolor="#FFFFEE"> 
  <td height="30" width="80"> 
    <div align="center"> 
  <input type="checkbox" name="cbdate" value="checkbox">
  <span class="blue1">日期</span> </div>
  </td>
  <td colspan="2"> 
    <select name="syear">
  <OPTION VALUE=2002  >2002</OPTION><OPTION VALUE=2003  >2003</OPTION><OPTION VALUE=2004 SELECTED  >2004</OPTION><OPTION VALUE=2005  >2005</OPTION><OPTION VALUE=2006  >2006</OPTION><OPTION VALUE=2007  >2007</OPTION><OPTION VALUE=2008  >2008</OPTION><OPTION VALUE=2009  >2009</OPTION><OPTION VALUE=2010  >2010</OPTION>    </select>
    年 
    <select name="smonth">
  <OPTION VALUE=1  >一月</OPTION><OPTION VALUE=2  >二月</OPTION><OPTION VALUE=3  >三月</OPTION><OPTION VALUE=4  >四月</OPTION><OPTION VALUE=5  >五月</OPTION><OPTION VALUE=6  >六月</OPTION><OPTION VALUE=7  >七月</OPTION><OPTION VALUE=8  >八月</OPTION><OPTION VALUE=9  >九月</OPTION><OPTION VALUE=10  >十月</OPTION><OPTION VALUE=11  >十一月</OPTION><OPTION VALUE=12 SELECTED  >十二月</OPTION>    </select>
    <select name="sday">
  <OPTION VALUE=1  >1</OPTION><OPTION VALUE=2  >2</OPTION><OPTION VALUE=3  >3</OPTION><OPTION VALUE=4  >4</OPTION><OPTION VALUE=5  >5</OPTION><OPTION VALUE=6  >6</OPTION><OPTION VALUE=7  >7</OPTION><OPTION VALUE=8  >8</OPTION><OPTION VALUE=9 SELECTED  >9</OPTION><OPTION VALUE=10  >10</OPTION><OPTION VALUE=11  >11</OPTION><OPTION VALUE=12  >12</OPTION><OPTION VALUE=13  >13</OPTION><OPTION VALUE=14  >14</OPTION><OPTION VALUE=15  >15</OPTION><OPTION VALUE=16  >16</OPTION><OPTION VALUE=17  >17</OPTION><OPTION VALUE=18  >18</OPTION><OPTION VALUE=19  >19</OPTION><OPTION VALUE=20  >20</OPTION><OPTION VALUE=21  >21</OPTION><OPTION VALUE=22  >22</OPTION><OPTION VALUE=23  >23</OPTION><OPTION VALUE=24  >24</OPTION><OPTION VALUE=25  >25</OPTION><OPTION VALUE=26  >26</OPTION><OPTION VALUE=27  >27</OPTION><OPTION VALUE=28  >28</OPTION><OPTION VALUE=29  >29</OPTION><OPTION VALUE=30  >30</OPTION><OPTION VALUE=31  >31</OPTION>    </select>
    日~ 
    <select name="eyear">
  <OPTION VALUE=2002  >2002</OPTION><OPTION VALUE=2003  >2003</OPTION><OPTION VALUE=2004 SELECTED  >2004</OPTION><OPTION VALUE=2005  >2005</OPTION><OPTION VALUE=2006  >2006</OPTION><OPTION VALUE=2007  >2007</OPTION><OPTION VALUE=2008  >2008</OPTION><OPTION VALUE=2009  >2009</OPTION><OPTION VALUE=2010  >2010</OPTION>    </select>
    年 
    <select name="emonth">
  <OPTION VALUE=1  >一月</OPTION><OPTION VALUE=2  >二月</OPTION><OPTION VALUE=3  >三月</OPTION><OPTION VALUE=4  >四月</OPTION><OPTION VALUE=5  >五月</OPTION><OPTION VALUE=6  >六月</OPTION><OPTION VALUE=7  >七月</OPTION><OPTION VALUE=8  >八月</OPTION><OPTION VALUE=9  >九月</OPTION><OPTION VALUE=10  >十月</OPTION><OPTION VALUE=11  >十一月</OPTION><OPTION VALUE=12 SELECTED  >十二月</OPTION>    </select>
    <select name="eday">
  <OPTION VALUE=1  >1</OPTION><OPTION VALUE=2  >2</OPTION><OPTION VALUE=3  >3</OPTION><OPTION VALUE=4  >4</OPTION><OPTION VALUE=5  >5</OPTION><OPTION VALUE=6  >6</OPTION><OPTION VALUE=7  >7</OPTION><OPTION VALUE=8  >8</OPTION><OPTION VALUE=9 SELECTED  >9</OPTION><OPTION VALUE=10  >10</OPTION><OPTION VALUE=11  >11</OPTION><OPTION VALUE=12  >12</OPTION><OPTION VALUE=13  >13</OPTION><OPTION VALUE=14  >14</OPTION><OPTION VALUE=15  >15</OPTION><OPTION VALUE=16  >16</OPTION><OPTION VALUE=17  >17</OPTION><OPTION VALUE=18  >18</OPTION><OPTION VALUE=19  >19</OPTION><OPTION VALUE=20  >20</OPTION><OPTION VALUE=21  >21</OPTION><OPTION VALUE=22  >22</OPTION><OPTION VALUE=23  >23</OPTION><OPTION VALUE=24  >24</OPTION><OPTION VALUE=25  >25</OPTION><OPTION VALUE=26  >26</OPTION><OPTION VALUE=27  >27</OPTION><OPTION VALUE=28  >28</OPTION><OPTION VALUE=29  >29</OPTION><OPTION VALUE=30  >30</OPTION><OPTION VALUE=31  >31</OPTION>    </select>
    日</td>
    </tr>
    <tr> 
  <td height="10" colspan="3" bgcolor="#E4D2FF"><font size="2" color="#666666">使用mode1,必须确定各条件的相对应关系,否则会找不到查询的结果喔。</font></td>
    </tr>
    <tr> 
  <td height="30" bgcolor="#FFFFEE"> 
    <div align="center"> 
  <input type="radio" name="rbsel" value="1" checked>
  <span class="blue1">mode1</span> </div>
  </td>
  <td colspan="2" bgcolor="#FFFFEE" class="calen">(我要自己选择搭配所要查询的条件)</td>
    </tr>
    <tr> 
  <td height="30" bgcolor="#F0FEFF"> </td>
  <td width="90" bgcolor="#F0FEFF"> 
    <input type="checkbox" name="cbroom" value="checkbox">
    <span class="normal2">部门</span></td>
  <td width="400" bgcolor="#F0FEFF"> 
    <select name="selroom">
      <option value="216">
  216  </option>
      <option value="60A">
  60A  </option>
      <option value="214">
  214  </option>
      <option value="215">
  215  </option>
    </select>
    <span class="blue1"></span> </td>
    </tr>
    <tr> 
  <td height="30" bgcolor="#F0FFF0"> </td>
  <td bgcolor="#F0FFF0"> 
    <input type="checkbox" name="cbname" value="checkbox">
    <span class="normal2">内部处理</span></td>
  <td bgcolor="#F0FFF0"> 
    <select name="selroom">
      <option value="216">
  216  </option>
      <option value="60A">
  60A  </option>
      <option value="214">
  214  </option>
      <option value="215">
  215  </option>
    </select>
    <span class="blue1"></span> </td>
    </tr>
    <tr> 
  <td height="30" bgcolor="#F0FEFF"> </td>
  <td bgcolor="#F0FEFF"> 
    <input type="checkbox" name="cbcourse" value="checkbox">
    <span class="normal2">处理结果</span></td>
  <td bgcolor="#F0FEFF"> 
    <select name="course1">
    <option value='研习如何玩疯狂坦克'>研习如何玩疯狂坦克</option>
<option value='网际网路研讨会'>网际网路研讨会</option>
<option value='写教室预约的php程式'>写教室预约的php程式</option>
    </select>
  </td>
    </tr>
  </table>
</form>
 3#楼  
 
  回复人:mukden
  注册时间:2004-12-09
  主题/回复:1/3
  积分:408
  等级:★★☆(五级)
  称号:略有小成

   
 3#楼 发表于2004-12-10 03:54:11  评分:× 

请问,我的"vir_query2.php"页应该怎么写呢.
 4#楼  
 
  回复人:mukden
  注册时间:2004-12-09
  主题/回复:1/3
  积分:408
  等级:★★☆(五级)
  称号:略有小成

   
 4#楼 发表于2004-12-10 04:01:00  评分:× 

您就把循环的哪部分写出来就可以了,
 5#楼  
 
  回复人:一起PHP
  注册时间:2004-02-27
  主题/回复:247/1521
  积分:4649
  等级:★★★★★☆(十一级)
  称号:论坛圣人

   
 5#楼 发表于2004-12-15 19:08:20  评分: 

这个不难写。。全部代码写出来太长,而且比较费劲。我得去查看每一个表单的名字、属性。。我这里给出一段“伪代码”。。你只要把其中的相应部分换成你的变量即可。。。。
这个程序的稍微复杂一点的地方,就是你得接收几个checkbox和radio的值。然后根据用户的选择,产生一个sql语句,最后执行这个语句。
-----------------------------------------------------------------
vir_query2.php
<?php

接收日期checkbox值
接收mode radio值
接收 教室、申请人、课程的checkbox值


查询语句= "select * from [表名] where" 

if(日期选中了){

 开始日期=开始年-开始月-开始日
 结束日期=结束年-结束月-结束日
 
 查询语句.=" ([日期]>开始日期 and [日期]<结束日期)"

 }


 if(mode1选中了){

  if(教室被选中了){
   
   教室=选择的教室
   
   查询语句.=" and [教室]=教室"
    
   }
  if(申请人被选中了){
   申请人= 选择的申请人
   查询语句.=" and [申请人]=申请人"
  
    }

   if(课程被选中了){
    
    课程名=选择的课程
 
    查询语句.=" and [课程名]=课程名"
  
    }
   
  }else{    //如果选择了mode2

   课程名=选择的课程名
  
   if(日期被选中了){

    查询语句 .= " and [课程名]=课程名"
    }else{
    查询语句 .= " [课程名]=课程名"
    }
  
 }

连接数据库
选择表
执行 查询语句
输出结果
?>
---------------------------------
上面,用[]扩起来的,表示你的表中对应的字段名。其他中文部分,都换成变量名和表达式就可以了。。
注意其中使用的 .= 运算符,不是  =
  页数1/1首页 « 1 » 末页
  发表回复:您还没有登陆,无法发表回复。请先[登陆]

一起PHP技术联盟 主办:一起PHP 联系方式:站长QQ:4304410 QQ群:8423742 20159565 站长博客 E-mail: nqp@nqp.me 执行时间:0.026sec
SimsmaBBS 2008 (v6.0) Developed by 17php.com,Copyright(C)2003-2010 All rights reserved. 副本授权:一起PHP官方专用版