当用户从下拉列表中选择一个值时,我正在尝试使用多个值来获取数据

时间:2015-04-21 21:47:13

标签: php mysql

我有这个选择下拉列表

<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 .=")";

现在当我测试这段代码时,它会带给我所有课程,尽管子查询中有条件吗?有什么帮助吗?

0 个答案:

没有答案