2011-10-11 3 views
1

좋아, 그래서 양식을 드롭 다운 메뉴에서 너무 많은 자바 스크립트 코딩없이 현재 날짜를 autoselect하려고 했으므로 아래 코드를 얻었습니다. (autoselect는 아니지만 첫 번째 옵션으로 현재 날짜를 포함합니다). 그 해가 처음에 나타나지 않았던 것처럼. 나는 똑같은 일을했고, 그 두 개는 완벽하게 작동했다. 그러나 같은 코드를 사용했을 때, 년 대신에 일/월 (mday와 mon은 괄호 안의 숫자)을 제외하고, 첫해 선택은 나타나지 않았다. 나는이 문제가 [$ t [ 'year']의 두 인스턴스 안에있는 부분이라고 생각한다. 코드의 나머지 부분은 정상적으로 작동하지만, 나는 그것에 대해 뭔가를 놓친 경우를 대비해서 포함 시켰습니다. (또한 모든 연도를 각각의 마지막 2 자리로 대체했지만 동일한 결과를 보았습니다).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

나는 이미 그 모든 것을 읽었습니다. 그것은 내 상황에서 반드시 작동하지는 않습니다. 나는 'year'가되기로되어있는 'mday'와 'mon'과 같은 해를 얻으려고 노력하고 있습니다 ... – 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>'; 
관련 문제