我有这个选择下拉列表
<select name="avalable" id="avalable">
<option value="">All</option>
<option value="1">Spring</option>
<option value="0">Fall</option>
</select>
我发布了像这样的值
$avalablesemster= isset($_POST['avalable']) ? $mysqli->real_escape_string($_POST['avalable']) : '';
在表格中,我将值排序为
Fall=0
Spring=1
Both=2
我需要做什么,例如如果用户选择Fall我需要获取Fall和Both(0和2) 如果用户选择Spring我需要获取Spring和Both(1和2)
如果使用选择&#39;全部&#39;我需要获取Fall,Spring和Bothe(0,1,2)
我试过这样做
$str='';
if($avalablesemster==''){
$str=" ('0','1','2') ";
}
elseif ($avalablesemster=='0')
{
$str=" ('0','2') ";
}elseif ($avalablesemster=='1')
{
$str=" ('1','2') ";
}
我现在收到此错误
Trying to get property of non-object
这是我的完整代码
<?php
if(isset($_POST['Submit']) AND $_POST['Submit'] == 'Submit') {
$coursneededdate = isset($_POST['needed']) ? $mysqli->real_escape_string($_POST['needed']) : '';
$gradunder=isset($_POST['gradunder']) ? $mysqli->real_escape_string($_POST['gradunder']) : '';
$avalablesemster= isset($_POST['avalable']) ? $mysqli->real_escape_string($_POST['avalable']) : '';
$str='';
if($avalablesemster==''){
$str=" ('0','1','2') ";
}
elseif ($avalablesemster=='0')
{
$str=" ('0','2') ";
}elseif ($avalablesemster=='1')
{
$str=" ('1','2') ";
}
$result2 ="SELECT
*
FROM
curriculumcourses NATURAL
JOIN courses
where semester_ava = '$str'
AND curriculum_id IN
(SELECT
curriculum_id
FROM
curriculum
WHERE '".$coursneededdate."'
BETWEEN startdate AND enddate ";
if(!empty($gradunder)){
$result2 .=" AND grad_under = '".$gradunder."'";
}
$result2 .=") GROUP BY (course_id);";
更新 @ chris85我已经关闭了这样的子查询。这是对的吗?
$result2 ="SELECT
*
FROM
curriculumcourses NATURAL
JOIN courses
where semester_ava IN $str
AND curriculum_id IN
(SELECT
curriculum_id
FROM
curriculum
WHERE '".$coursneededdate."'
BETWEEN startdate AND enddate ";
if(!empty($gradunder)){
$result2 .=" AND grad_under = '".$gradunder."' GROUP BY (course_id)";
}
$result2 .=")";
现在当我测试这段代码时,它会带给我所有课程,尽管子查询中有条件吗?有什么帮助吗?