2016-05-29 72 views
0

我想從表中顯示的下拉列表中獲取值。php - 當我從下拉列表中選擇數值時沒有獲取值?

我嘗試過不同的方式,但我不知道我出錯的地方。

任何一個可以幫助我在這個..

下面是我的代碼。

<tr class="form-field" id="appid"> 
<div> 
<th valign="top" scope="row" > 
<label for="country"><?php _e('country', 'custom_table_example')?></label> 
</th> 
<td> 
<select id="country" name="country" class="code" >; 
<option value="">select country</option> 
<?php 
global $wpdb; 
$coun_name = $wpdb->get_col("select country_name FROM countries") ; 
//print_r($coun_name); 
foreach($coun_name as $a) 
    { 
echo '<option value="'. strtolower($a) .'" />' . "$a </option>"; 

    } 
    ?> 
</td> 
</div> 
</tr> 

上面的代碼顯示的值是下拉菜單。

現在的問題是我需要得到選定的值。

echo '<option value="'. strtolower($a) .'"<?php echo $item['country']==".$a."?'selected="selected"':'' ?> />' . "$a </option>"; 

$ item是我存儲所有數據的變量。

country = name屬性。

回答

1

您是否設置$item$_POST?你是否使用POST作爲你的表單動作?做這樣的事情:

<form name='countryTest' method='POST' action='<?/*where your action is going to*/?>'> 
    <select name='country'> 
    <?foreach($coun_name as $c){ 
     ?><option value='<?echo$c;?>'<?if($_POST['country']==$c)echo' selected="selected"';?><? 
    }?> 
    </select> 
</form> 

或!如果你想成爲一個非常酷的人(好吧,不要那麼酷但很討厭)!做一個功能或類功能爲你做這一切!

class formHelper{ 
    public function select_form($name,$options=array([0]=>'Please select'),$selected=array(),$multiple=false){//name of select, options, selected options, multiple select 
     if(!is_array($selected))$selected=array($selected); 
     $sel='<select name="'.(($multiple===true)?$name.'[]':$name).'"'; 
     if($multiple===true)$sel.=' multiple'; 
     $sel.='>'; 
     foreach($options as $value=>$shown){ 
      $sel.='<option value="'.$value.'" '.((in_array($value,$selected))?'selected="selected"':'').'>'.$shown.'</option>'; 
     } 
     return$sel.='</select>'; 
    } 
} 

我們使用它只是這樣做

$coun_name=array(merge(array('Please select a country'),$coun_name)); 
formHelper::select_form('country',$coun_name,$_POST['country']); 

編輯

你的錯誤是你設置你的價值降低,但是當你比較它不降低。見strtolower。你想要做的就是比較低於$item會更低。我建議你比較像這樣在使用整數:

array(
    [1]=>'England', 
    [2]=>'Wales', 
    [3]=>'Scotland' 
); 

讓你的價值觀會

<option value='1'>England</option> 
<option value='2'>Wales</option> 
<option value='3'>Scotland</option> 

但你們您的問題是$item['country']==$a。需要是$item['country']==strtolower($a)。並刪除與完整的停止字符串引號。 "england"不等於".England."。它是「英格蘭」的原因已經是因爲你已經設置了較低的字符串。除非$item不是$_POST['county']'

+0

我編輯過帖子..請看看。 – JMR

+0

我會試試這個.. – JMR

+0

$ item在哪裏設置?你是否有一個國家的桌子上的整數? – sourRaspberri

相關問題