如何在下拉列表中搜索多个条件?

时间:2010-09-07 05:48:30

标签: php mysql html

我有一个导师数据库(MySQL),可以存储导师可用的科目, 例:- tutor1可用主题= A,B,C tutor2可用主题= A,B tutor3可用主题= A

在SearchTutor.php中;

<select id="select3" class="medium" name="upsr">
<option selected="selected" value="%">-</option>
<option value="A">A only</option>
<option value="A,B">A and B only</option>
<option value="A,B,C">All Subjects</option>
</select>

在DisplayTutor.php中;

$subjectin = '';
$subdescription = '';
  if(strlen($upsr) > 1)
 {
  $subjectin .= "'106',";
  if($upsr == "A")
   $subdescription .= "'A',";
  else if($upsr == "A,B")
   $subdescription .= "'A','B',";
  else if($upsr == "A,B,C")
   $subdescription .= "'A','B','C',";
  else
   $subdescription .= "'".$upsr."',";
 }

所以..我想要的是,当我选择“A only”时, 结果应该是tutor3,因为我想要“A only”,那些有A,B,C的导师不合格,当我选择“All Subjects”时,结果应该是tutor1,因为只有tutor1有所有科目,

但在我的编码中,我知道这是错的,有没有人可以帮我解决这个问题?

谢谢所有程序员,^^

3 个答案:

答案 0 :(得分:0)

您可以更改此部分,您可以根据需要获得结果

$subjectin = '';
$subdescription = '';
  if(strlen($upsr) > 0)
 {
  $subjectin .= "'106',";
  if($upsr == "A")
   $subdescription .= "'A',";
  else if($upsr == "A,B")
   $subdescription .= "'A','B',";
  else if($upsr == "A,B,C")
   $subdescription .= "'A','B','C',";
  else
   $subdescription .= "'".$upsr."',";
 }

因为在A的第一个结果中,你得到的字符串长度为1,所以你无法得到任何东西。现在试试。

答案 1 :(得分:0)

$arr=array('A'=>'tutor3','A,B'=>'tutor2','A,B,C'=>'tutor1')
echo(arra[$upsr]);

答案 2 :(得分:0)

你不能太容易实现这一点(只有我知道存在子查询的方式,但我声称我建议的内容更具可读性,更容易根据选择动态构造),值为('A', 'B','C')假设你在不同的表中有这些,其中一些列引用了教师和主题表。

我建议你做的是用左连接不止一次加入第二个表。我只是抛出表名,用正确的名称替换。还要修复引用列名称

select othercolumns, 
   s1.description as DESCA, 
   s2.description as DESCB, 
   s3.description as DESCC 
from tutor t
left join subject s1 on s1.description = 'A' and s1.idref = t.id
left join subject s2 on s2.description = 'B' and s2.idref = t.id
left join subject s3 on s3.description = 'C' and s3.idref = t.id

在where -clause中,你检查你想要的是否为空而其他则不是。仅限A:

where DESCA is not null and DESCB is null and DESCC is null

代表A和B:

where DESCA is not null and DESCB is not null and DESCC is null

我想你明白了。如果不是这样,那么“转换”到PHP应该不会太难。