具有时间间隔的sql,php和html:在时间间隔到期后检索所选选项

时间:2016-03-04 04:49:20

标签: php sql drop-down-menu

我有下表:

train
-------------
trainID
departuredate

对于每位乘客,我都有一个表格,他们可以从下拉列表中选择2个首选日期,但选项有限:它们仅显示过去30天或未来日期的列车。 然后我有一个编辑页面,他们可以更改所选的选项。

我从数据库加载他们以前的选择并将它们放在一个数组中:$ datesarray。然后输出2个下拉列表

for ($i = 0; $i <2; $i++) {
  $sql = "SELECT trainID, departuredate
  FROM train
  WHERE departuredate > CURRENT_DATE - INTERVAL '30' DAY";

  $result = $conn->query($sql);
  echo '<select name="train[]">';

  while($row = $result->fetch_assoc()) {
  echo '<option'
  , ($datesarray[$i] == $row['trainID'] ? ' selected="selected" ' : ' ' )
  . 'value="' . $row['trainID'] . '">'
  . $row['departuredate']
  . '</option>';
  } //end while
 echo '</select>';
}//end for

问题

当我加载编辑表单时,如果在过去30天(当然)之前选择列车,他们就不会出现在选项中。 我明白为什么会发生这种情况,但我不知道是否有一个解决方案(在sql或php中)包含previuos选项,即使它们是指超过30天的列车。 谢谢!!

1 个答案:

答案 0 :(得分:0)

那很简单!!!! 我刚刚在我的查询中添加了OR:

$sql = "SELECT trainID, departuredate
 FROM train
 WHERE departuredate > CURRENT_DATE - INTERVAL '30' DAY
 OR trainID = $datesarray[$i]";

问题2

现在,如果$ datesarray [1]没有值,我只会遇到问题。我怎么能修改我的SQL?类似的东西:

OR trainID = isset($datesarray[$i])";