2016-02-12 315 views
1

選擇下拉有一個簡單的if語句爲默認從下拉正確的日期?因此,例如,如果日期是02/11/16然後它會默認選擇 01/28/16 基本上我要求的是一個聲明,如果默認選擇的下拉該日期內從日期範圍

<?php 
        date_default_timezone_set('US/Eastern'); 
        $currenttime = date('d:m:y:h:i:s A'); 
        list($day,$month,$year) = split(':',$currenttime); 
        $currentdate = "$month/$day/$year"; 
?> 


<form> 
<select> 
<option>01/14/16</option> 
<option>01/28/16</option> 
<option>02/14/16</option> 
///the list goes on for ages so i saved time and cropped out the rest of the dates. 
</select> 
</form> 
+0

你將如何決定它是在計費週期? –

+2

你爲什麼不只是做'$的currentdate =日期( 「M/d/Y」)',而不是分裂的時間? – Barmar

+1

@Sougata看起來帳單期限是菜單中日期之間的範圍。 – Barmar

回答

1

把所有的日期在一個數組中,並循環它們。然後您可以測試它們並確定當前日期是否在結算期間。

$dates = array('16-01-14', 
       '16-01-28', 
       '16-02-14', 
       ...); 
$currentdate = date('y-m-d'); 

?> 
<form> 
<select> 
<?php 
foreach ($date as $i => $d) { 
    if ($currentdate >= $d && ($i == count($dates)-1 || $currentdate < $dates[$i+1])) { 
     $selected = "selected"; 
    } else { 
     $selected = ""; 
    } 
    list($year, $month, $day) = explode('-', $d); 
    echo "<option $selected>$month/$day/$year</option>"; 
} 
?> 
</select> 
</form> 

我改變的$currentdate的格式y-m-d,使他們可以按照字符串進行比較,看是否日期是在一個範圍內。

由於它遍歷日期列表,它測試的當前日期是否是數組中的日期和未來日期間(或它的陣列中的最後日期)。如果是,它增加了selected屬性爲<option>

+0

@barmar謝謝你的迴應是否有可能問這是如何工作的?如果不是它的罰款,我仍然會將這個問題標記爲回答,只是想知道你是否可以更具體;我不明白的是foreach函數? – Johnny

+1

我已經給答案增加了一些解釋。 – Barmar

+1

讓我知道它是否仍然不清楚它是如何工作的。 – Barmar