您现在的位置: PQ秀秀网 >> PQ知道 >> 正文 用户登录 新用户注册
一个数据库逻辑问题,不难,但很麻烦,求助 Web 开发 / ASP
作者:佚名    文章来源:不详    点击数:加载中...    更新时间:2008-7-11 字体:[ ]
添加到收藏: 添加到百度收藏  收藏到QQ书签  添加到雅虎收藏  添加到新浪ViVi  添加到天极网摘  添加到和讯网摘

一个数据库逻辑问题,不难,但很麻烦,求助

楼主deknight(追逐梦想)2006-12-23 14:47:55 在 Web 开发 / ASP 提问

我现在有5个下拉菜单  
  分别是  
  A   B   C   D   E,其中B   C   D   是联动的,A   E是单独的  
   
  A里的内容:  
  请选择交易类别  
  出售  
  求购  
   
  B里的内容:  
  请选择商城名称  
  所有商城  
  商城1  
  商城2  
  ...  
   
  C里:  
  请选择商城分区  
  所有分区  
  分区1  
  分区2  
  ...  
   
  D里:  
  请选择商城服务器  
  所有服务器  
  服务器1  
  服务器2  
  ...  
   
  E里:  
  请选择交易物品  
  物品1  
  物品2  
  ...  
   
  =================  
  然后提交到搜索页  
  我希望能在各种组合下搜索出结果,而不是每项都必须选  
  例如:  
  A里的内容不选,既表示搜索出的结果有出售的也有求购的,或根据我的选择列出出售的或求购的  
  B里的内容必选,因为B不选的话,后面几个联动没有数据,如果选择的是"所有商城"   就提交了搜索,则提示没有选择具体的商城  
  C里可以选择所有分区或单独的某个分区,则列出的结果会是在B里选择的某个商城的  
  所有分区或某单独分区的内容  
  D里允许选择所有服务器或某单独服务器,列出的结果则根据ABC的条件,再列出所有服务器或某单独服务器的内容  
  E里可以选择"请选择交易物品"或某个具体物品,然后根据ABCD的条件列出所有物品或选择的某个物品的内容  
   
  以上,我该如何实现?  
  我不想  
  if   request("a")="xx"   then  
  sql=  
  rs.....  
  elseif   request("a")="xx"   and   request("b")="xx"   then  
  sql..  
  rs...  
  elseif   request("a")="xx"   and   request("b")="xx"   and   request("c")="xx"   then  
  sql..  
  rs...  
  ...  
   
  这种逻辑应该如何做?或如何组合?  
  望高手指点! 问题点数:20、回复次数:7Top

1 楼deknight(追逐梦想)回复于 2006-12-23 14:56:20 得分 0

请高手速度出现!!!Top

2 楼deknight(追逐梦想)回复于 2006-12-23 15:07:35 得分 0

请高手速度出现!!!  
  Top

3 楼lingyu1983(sot)回复于 2006-12-23 15:32:21 得分 0

dim   strwhere  
   
  strwhere=""  
  strwhere="   where   1=1     "  
  if   len(trim(request("a")))<>0   then    
        strwhere=strwhere&"   and     a='"&a&"'   "  
  end   if  
  .  
  .  
  .  
  sql="select   *   from   table"&strwhere  
  conn.execute("sql")Top

4 楼deknight(追逐梦想)回复于 2006-12-23 15:41:26 得分 0

楼上的,   where   1=1会不会被过滤掉???  
  另外给个完整的行不?Top

5 楼deknight(追逐梦想)回复于 2006-12-23 15:54:11 得分 0

up!Top

6 楼deknight(追逐梦想)回复于 2006-12-23 16:09:14 得分 0

这样不知道成不成,高手指点:  
   
  ======================  
  定义要查询的SQL语句  
  sql="select   *   from   mytable"  
  '判断是否选择了交易类别  
  if   request("a")<>"请选择交易类别"   then    
  sql=sql  
  else  
  sql_name="   and   "+"jylb='"&   request("a")   &"'"  
  sql=sql+sql_name  
  end   if    
  '判断是否选择了商城  
  if   request("b")="请选择商城名称"   or   request("b")="所有商城"     then    
  sql=sql  
  else  
  sql_info="   and   "+"   scmc="&   request("b")   &""  
  sql=sql+sql_info  
  end   if  
  ....  
  类推,这样对不?Top

7 楼lingyu1983(sot)回复于 2006-12-23 16:11:30 得分 20

那个1=1是防止后面的SQL连接出错用的,大可以换成别的,只要保证最后的SQL格式不出现语法问题就行。dim   strwhere  
   
  strwhere=""  
  strwhere="   where   1=1     "  
  if   len(trim(request("a")))<>0   then    
        strwhere=strwhere&"   and     a='"&a&"'   "  
  end   if  
  .  
  这里是5个if语句,不是有5个下拉框吗?先判断传过来的数据是否为有效数据len(trim(request("a")))<>0    
  如果有效就就将   查询条件“and   a='"&a&"'   ”   加到strwhere后面,最后产生一个完整的查询条件  
  .  
  sql="select   *   from   table"&strwhere  
  conn.execute("sql")  
   
  Top

文章录入:andy    责任编辑:andy 
  网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)