下拉列表选择:显示带项目的类别名称

时间:2012-05-31 21:23:14

标签: php codeigniter codeigniter-2

我正在填充我的数据库中的下拉列表选项。我到目前为止设法创建的下拉列表选项仅包含一些产品名称。我想显示类别名称和产品,但不应选择类别名称。

我有两张桌子。

表名:product_category

category_id     category_name
    1              Beverage
    2              Food

表名:产品

product_id   category_id    product_name
    1           1              Pepsi
    2           2              Burger

我的模特

 function products() {

     $this->db->select('product_name, product_id');
      $records=$this->db->get('products');

        $data=array();
        $data[''] = 'Select'; 
            foreach ($records->result() as $row)
                {
                    $data[$row->product_id] = $row->product_name;
                }

            return ($data);
        }  

目前,当我运行我的视图文件并单击下拉列表选项时,我得到如下值:

    Pepsi
    Burger

但是我应该在上面的模型中写些什么来使我的视图文件中的dropdrown看起来如下?

饮料

     Pepsi

食物

     Burger 

谢谢:) 仅供参考,我使用的是Codeigniter:0

2 个答案:

答案 0 :(得分:2)

有一些名为optgroup

的东西
<select>
  <optgroup label='category 1'>
    <option value='1'>Item 1</option>
    <option value='2'>Item 2</option>
  </optgroup>
  <optgroup label='category 2'>
    <option value='3'>Item 3</option>
    <option value='4'>Item 4</option>
  </optgroup>
</select>

答案 1 :(得分:2)

CodeIgniter非常棒,所以在你的例子中你可以做到:

$arr = array( 'Beverage' => array( '1' => 'Pepsi' ),
              'Food' => array( '2' => 'Bruger' ));

echo dropdown('food_id', $arr);

因此,对于每个值,您将获得额外的深度,其中第一个键是optgroup的名称,第二个键是id。它将具有@ Pitchinnate的回复

中给出的结构select > optgroup > option

在你的foreach中,它看起来像这样:

$data[$row->category_name][$row->product_id] = $row->product_name;