2016-03-04 46 views
0

我有以下表:SQL與時間間隔,PHP和HTML:檢索選定的選項之後的時間間隔已經過期

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天的列車。 謝謝!

回答

0

這很容易! 我只是說,或到我的查詢:

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