2012-02-21 132 views
4

我試圖在php中填充生日字段中的選擇框。從查詢中設置變量$ year,並在該選擇框中選擇特定年份。到目前爲止的代碼是這樣的,它只是填充年份,但它不選擇存儲在MySQL數據庫中的年份,有誰知道爲什麼?由於選擇框:如何填充年份php

$year = $row['year']; // this comes from a query that is stored in the db 
<select name="year"><? 
    for ($x = 1920; $x < date('Y'); $x++) { 
    ?><option value=<? echo $x; if ($x == $year) {echo 'selected="selected"';}?>><? echo $x;?></option><? 
}?> 
</select> 
+0

你能的var_dump($年)只是爲了證明它擁有你所期望 – bumperbox 2012-02-21 00:48:00

回答

7

試試這個:

$year = (int)$row['year']; // this comes from a query that is stored in the db 
?> 
<select name="year"><?php 
    for ($x = 1920; $x < date('Y'); $x++) { 
?><option value="<?php echo $x . '"'; if ($x == $year) { echo ' selected="selected"';}?>><?php echo $x; ?></option><? 
}?> 
</select> 

的主要問題是你沒有關閉value用雙引號,所以'selected="selected"被列入。所以你有這樣的:

<option value=1990selected="selected">1990</option> 

而且,你沒有以前<select

+1

工作,就像你說的巨大價值,我沒有關閉標籤。非常感謝 – chenci 2012-02-21 00:51:46

+0

非常歡迎 – 2012-02-21 00:52:05

0

它看起來就像你沒有離開標籤值和所選標籤之間的間隙關閉PHP標籤。嘗試改變這一點:

<option value=<? echo $x; if ($x == $year) {echo 'selected="selected"';}?>><? echo $x;?></option> 

到:

<option value="<? echo $x; ?>" <? if ($x == $year) {echo 'selected="selected"';}?>><? echo $x;?></option>