2013-01-25 21 views
0

我在$ categories变量中返回了一个result_array(),现在我想创建一个下拉菜单。但是如果我直接使用这个变量,数组的所有元素都将被显示。不过,我只想显示名称并将其ID保留为值。我该怎么做?使用数组作为值的codeigniter中的下拉列表

$options = $categories; 
echo form_dropdown('category', $options); 

我想是这样

<select name="category"> 
<option value="1"> ABC </option> 
..... 
<option value="10"> NNNC </option> 
</select> 

回答

5

键在$ options数组的值不数据库行的实际ID。

所以你的$ options数组是这样的:

Array(
'0' => array('id'=>'10', 'value'=>'someval1'), 
'1' => array('id'=>'22', 'value'=>'someval2'), 
'2' => array('id'=>'36', 'value'=>'someval3')) 

看到这一点,把print_r($options);回声调用之前。

为了让真正的下拉菜单,你应该做的辅助功能,看起来像这样:

function my_form_dropdown($name, $result_array){ 
    $options = array(); 
    foreach ($result_array as $key => $value){ 
     $options[$value['id']] = $value['value']; 
    } 
    return form_dropdown($name, $options); 
} 
+1

如果$类别来自数据库查询,您也可以在模型中直接创建下拉值。但是尼古拉正在喋喋不休,他答案的最后一部分就是应该完成的方式。这样你就可以将id作为价值,这是你最终想要的。 –

0

你可以做

$options = array(


    '1' => 'ABC', 
    '2' => 'NNC' 
); 

echo form_dropdown('category', $options); 

其中关键将是下拉

1

很好,因为我得到的所有返回的行为$类别阵列

因此在$一的print_r()类别给我的输出

Array 
(
    [0] => Array 
     (
      [id] => 24 
      [name] => First 
     ) 

    [1] => Array 
     (
      [id] => 25 
      [name] => Second 
     ) 

    [2] => Array 
     (
      [id] => 26 
      [name] => third 
     ) 

) 

但我需要的东西像下面的代码,以使下拉工作

Array 
(
    [24] => First 
    [25] => Second 
    [26] => third 
) 

所以我不得不做修改我的代码如下

$options = array(); 
        foreach ($categories as $category) { 
         $options[$category['id']] = $category['name']; 
        } 

        echo form_dropdown('cat_id', $options); 

因此,HTML生成的是如下这是我所期望的标记。

<select name="category"> 
<option value="24"> First </option> 
<option value="25"> Second </option> 
<option value="26"> Third </option> 
</select> 

它确实奏效。谢谢你的回答,但是经过两天头部划伤,我终于做到了。当你是初学者时,有时候这很困难。

相关问题