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


Dropdown Select: Displaying category names with items

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

我有以下两个表格。

表名: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 

谢谢:)仅供参考,我正在使用代码点火器:0

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;

有一种叫做 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>