2011-10-11 50 views
1

好,所以我試圖讓表單下拉菜單自動選擇當前日期而沒有太多的javascript編碼,所以我得到了下面的代碼(它不會自動選擇,但它包括當前日期作爲第一個選項)。這一年並沒有像它應該的那樣首先出現。我在日和月做了同樣的工作,這兩個工作都很完美,但是當我使用相同的代碼時,除了幾年/幾個月(星期幾和星期一)以外,第一年的選擇並未出現。我猜這個問題是[$ t ['year']]的兩個實例中的部分。其餘的代碼運行良好,但我只是把它包括在案例中,我錯過了一些關於它的事情(我也嘗試用最後的兩個數字替換所有年份,但結果相同)。當前年份的PHP日期函數無法正常工作?

<?php 
$t = getdate(time()); 
$year = array(1 =>'2000', '2001', '2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016', '2017', '2018', '2019', '2020', '2021', '2022', '2023', '2024', '2025', '2026', '2027', '2028', '2029', '2030'); 

echo '&nbsp Year <select name="year" >'; 
echo '<option value="\" . $t[\'year\'] . \"">' . $year[$t['year']] . '</option>'; 
foreach($year as $key => $value) { 
    echo "<option value = \"$key\">$value</option>"; 
} 
echo '</select>'; ?> 

回答

3

使用date('Y')

http://php.net/manual/en/function.date.php

<?php 
$t = getdate(time()); 
$year = array('2000', '2001', '2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016', '2017', '2018', '2019', '2020', '2021', '2022', '2023', '2024', '2025', '2026', '2027', '2028', '2029', '2030'); 

echo '&nbsp Year <select name="year" >'."\n"; 
echo '<option value="' . array_search(date('Y'),$year) . '">' . date('Y') . '</option>'."\n"; 
foreach($year as $key => $value) { 
    echo "<option value = \"$key\">$value</option>\n"; 
} 
echo '</select>'."\n"; 

?> 

http://codepad.org/7h2MnxzC

這也將選擇只是在select的一個值,這樣你就不會需要兩個:

<?php 
$t = getdate(time()); 
$year = array('2000', '2001', '2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016', '2017', '2018', '2019', '2020', '2021', '2022', '2023', '2024', '2025', '2026', '2027', '2028', '2029', '2030'); 
$c_year = date('Y'); 

echo '&nbsp Year <select name="year" >'."\n"; 
foreach($year as $key => $value) { 
    echo "<option".($c_year == $value?' selected="true"':'')." value = \"$key\">$value</option>\n"; 
} 
echo '</select>'."\n"; 

?> 

http://codepad.org/uGx6zoyn

+0

我已經閱讀過所有這些內容。這並不一定適用於我的情況。我試圖讓今年的'月'和'週一',這應該是'年'... – FrozenTime

+0

看到我的編輯。我不知道你爲什麼這樣做,但那會起作用。 –

+0

花了很多時間來驗證OP的想法之後,我會難過地爲此+1。我厭倦了不得不經常引用人們到php.net手冊! **編輯:**噢,還有什麼要補充的! –

2
$years = range(2000, 2030); 
$cur_year = date('Y'); 

echo '<select name="year">'; 
foreach($years as $year) 
    if($year == $cur_year) 
     echo "<option selected>$year</option>"; 
    else 
     echo "<option>$year</option>"; 
echo '</select>';