php-当我从下拉列表中选择值时,没有获取值?

时间:2016-05-29 18:51:41

标签: php wordpress

我正在尝试从表格中显示的下拉列表中获取值。

我曾尝试过diff,但我不知道我哪里出错了。

任何人都可以帮助我..

以下是我的代码。

<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 个答案:

答案 0 :(得分: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>

OR!如果你想要真的很酷(是的,不是很酷,但书呆子)!创建一个函数或类函数来为您完成所有这些!

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."。它是什么&#34;英国&#34;已经是因为你已经将字符串设置为较低。除非$item不是$_POST['county']&#39;