2014-07-11 55 views
0

我有這行代碼允許用戶輸入一個狀態;如何在PHP中爲其他字段獲取特定的選擇選項值

<input id="location-state" type="text" maxlength="2" name="location_state" value="<?php echo esc_attr($EM_Location->location_state, ENT_QUOTES); ?>" /> 

但是,我想從下拉菜單中將其更改爲選區。現在我想要做的一種方式是使用php並抓取選擇選項值並將其添加到上面的輸入中,然後隱藏用戶看到它的輸入。

不知道從哪裏開始,我嘗試做以下作爲測試,但沒有奏效;

<select> 
<option value="<?php echo esc_attr($EM_Location->location_state, 'AL'); ?>">Alabama</option> 
<option value="<?php echo esc_attr($EM_Location->location_state, 'AK'); ?>">Alaska</option> 
<option value="<?php echo esc_attr($EM_Location->location_state, 'AZ'); ?>AZ">Arizona</option> 
<option value="<?php echo esc_attr($EM_Location->location_state, 'AR'); ?>AR">Arkansas</option> 
<option value="<?php echo esc_attr($EM_Location->location_state, 'CA'); ?>CA">California</option> 
</select> 

它做這類工作,但僅限於阿拉巴馬州...

+0

if $ EM_Location-> location_state == AZ'你想選亞利桑那州嗎? – djidi

+0

對於AZ,AR和CA,您同時執行'echo esc_attr(...)'和硬編碼縮寫後面的內容,因此您可以獲得'value =「AZAZ」'。那真的是你想要的嗎? – Barmar

+0

是的,所以寧可輸入一個狀態......我希望人們選擇它......並且它看起來像'$ EM_Location-> location_state'設置腳本中的值。 – user2419316

回答

1
$values = array(
    'AL' => 'Alabama', 
    'AK' => 'Alaska', 
    'AZ' => 'Arizona' 
    ... 
); 


echo '<select id="location-state" name="location_state">'; 

foreach($values as $key => $value) 
{ 
    $selected = $key == $EM_Location->location_state ? 'selected="selected"' : ''; 
    echo '<option value="'.$key.'" '.$selected.'>'.$value.'</option>'; 
} 

echo '</select>'; 
+0

這個工作,看起來像是這樣,但第一個'AL'=>'Alabama''沒有出現... – user2419316

+0

你確定已經在'$ values'中設置了嗎? – djidi

+0

是的,...看起來像我必須設置第一個空。 – user2419316

0

您需要刪除您輸入的標籤,給選擇標籤屬性名具有相同值,因爲它是輸入的。 刪除此:

<input id="location-state" type="text" maxlength="2" name="location_state" value="<?php echo esc_attr($EM_Location->location_state, ENT_QUOTES); ?>" /> 

並添加此:

<select name="location_state"> 
<option value="<?php echo esc_attr($EM_Location->location_state, 'AL'); ?>">Alabama</option> 
<option value="<?php echo esc_attr($EM_Location->location_state, 'AK'); ?>">Alaska</option> 
<option value="<?php echo esc_attr($EM_Location->location_state, 'AZ'); ?>AZ">Arizona</option> 
<option value="<?php echo esc_attr($EM_Location->location_state, 'AR'); ?>AR">Arkansas</option> 
<option value="<?php echo esc_attr($EM_Location->location_state, 'CA'); ?>CA">California</option> 
</select> 

而且你也沒有必要改變你的PHP代碼。

+0

不,以上不起作用了。對不起,謝謝 – user2419316

相關問題