2011-10-17 122 views
0

我有我的下拉列表中的項目。現在我想根據數據庫值選擇項目。假設我有城市名單,他們有近300個城市。我的記錄中有作爲新球衣的城市價值。現在,在編輯表格時,檢查每個選項對於300個選項是不可能的。像PHP與下拉選擇

<option value="A" <? if ($a="A") echo "selected"; ?> >A</option> 
<option value="B" <? if ($a="B") echo "selected"; ?> >B</option> 
<option value="C" <? if ($a="C") echo "selected"; ?> >C</option> 
<option value="D" <? if ($a="D") echo "selected"; ?> >D</option> 
<option value="E" <? if ($a="E") echo "selected"; ?> >E</option> 
<option value="F" <? if ($a="F") echo "selected"; ?> >F</option> 
<option value="G" <? if ($a="G") echo "selected"; ?> >G</option> 
<option value="H" <? if ($a="H") echo "selected"; ?> >H</option> 

沒有任何方法可以最小化300條記錄。我不能爲此寫短代碼嗎?

**注:我的選項值不存儲在陣列**

+1

你是如何通過動態建立的選項循環? –

回答

5

假設你的值存儲在一個名爲$options一個數組,你可以寫這樣的事情:

foreach($options as $option) 
{ 
    echo "<option value=\"$option\""; 
    if($option == $a) 
    { 
    echo ' selected="selected"'; 
    } 
    echo ">$option</option>"; 
} 
+0

但我的值不存儲在數組中。比??? –

+0

@RahulSingh如果你的值來自一個預先定義的範圍,比如AZ,那麼你可以用@GhazanfarMir的回答 –

+2

中提到的'range()'函數替換'$ options',如果你的值不是源自一個範圍,你可以像這樣預加載你的選項數組:'$ options = array('myval1','myval2',...);' –

0

你應該使用loops輸出

$result = mysql_query('select id, city from cities'); 
while($row = mysql_fetch_assoc($result)) { 
    echo '<option value=' . $row['id'] . (($row['city'] == 'new jersey') ? 'selected' : '') . " >" . $row['city'] . '</option>'; 
} 
+0

爲什麼你不明白我的選項值存儲在數組中? –

+0

你從頭髮葡萄乾上面得到了很好的答案,使用它 – user973254

0

在PHP會range功能:

<?php foreach (range('A', 'Z') as $letter){?> 
    <option value="<?php echo $letter?>" <? if ($a==$letter) echo "selected='selected'"; ?> ><?php echo $letter?></option> 
<?php }?> 

相應地更改範圍。你也可以用整數來使用這個函數。

+0

這意味着首先按字母順序排列的A-Z,我必須將這些值存儲在$信函中,把它想成數組? –

+0

沒有..範圍()函數將循環從A-Z每次迭代一次存儲一個字母。 –

+0

但是如果我在選項中有名字,比如Ghazanfar,rahul,那麼它將會是怎麼樣的。 –