我有一个导师数据库(MySQL),可以存储导师可用的科目, 例:- tutor1可用主题= A,B,C tutor2可用主题= A,B tutor3可用主题= A
<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有所有科目,
但在我的编码中,我知道这是错的,有没有人可以帮我解决这个问题?
谢谢所有程序员,^^
答案 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应该不会太难。