Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带时间间隔的sql、php和html:在时间间隔过期后检索所选选项_Php_Sql_Drop Down Menu - Fatal编程技术网

带时间间隔的sql、php和html:在时间间隔过期后检索所选选项

带时间间隔的sql、php和html:在时间间隔过期后检索所选选项,php,sql,drop-down-menu,Php,Sql,Drop Down Menu,我有下表: train ------------- trainID departuredate 对于每位乘客,我有一个表格,他们可以从下拉列表中选择2个首选日期,但选项有限:他们只显示过去30天或未来日期的列车。 然后我有一个编辑页面,他们可以在其中更改所选的选项 我从数据库中加载他们以前的选择,并将它们放入一个数组:$datesarray。然后输出2个下拉列表 for ($i = 0; $i <2; $i++) { $sql = "SELECT trainID, departure

我有下表:

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
for($i=0;$i查询($sql);
回声';
而($row=$result->fetch_assoc()){
回声“
.$row[“出发日期”]
. '';
}//结束时
回声';
}//结束
问题

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

那很容易!!!! 我刚刚在我的查询中添加了或:

$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])";