【问题标题】:CodeIgniter: Creating a dropdown field from an array, populated from database table data columnCodeIgniter:从数组创建下拉字段,从数据库表数据列填充
【发布时间】:2013-07-04 20:03:28
【问题描述】:

型号:

function pop_room_type() {
    $this->db->select('rt_name')->from('room_type');
    $query=$this->db->get();
    return $query->result_array();
}

控制器:

function index() {
    $this->load->model('reservations_model');
    $data['room_type'] = $this->reservations_model->pop_room_type();
    //echo "<pre>";print_r($data['room_type']);echo"</pre>";
    $this->load->view('/main/new_reservation', $data);
}

查看:

<?php 
//$js = 'name='$room_type'';
echo form_dropdown('room_type', $room_type);
?>   

但是,有一个大问题,而所有选择选项的“名称”都是相同的。此下拉列表中的所有选项都带有与 (room_type) 表的列名相同的值:rt_name。我尝试了几件事,但仍然无法为下拉列表中选项的名称字段分配唯一值。

【问题讨论】:

标签: php forms codeigniter


【解决方案1】:

因为他们都来自同一列。像这样..

array(
  array('column_name'=>'value1'),
  array('column_name'=>'value2'),
  array('column_name'=>'value3'),
  array('column_name'=>'value4')
)

试试这个(控制器):-

 $list=array();
 foreach($room_type as $type )
 {
     array_push($list, $type['column_name']);      
 }
 $this->load->view('/main/new_reservation', array('list'=>$list));

在视图中:-

  <?php 
   //$js = 'name='$room_type'';
    echo form_dropdown('room_type', $list);
  ?>   

现在你有这样的下拉菜单:-

<select name="room_type">
  <option value="0">value1</option>
  <option value="1">value2</option>
  <option value="2">value3</option>
  <option value="3">value4</option>
 </select>

【讨论】:

  • 给了我以下错误:消息:未定义的变量:room_type 和消息:为 foreach() 提供的参数无效
  • 这里 $room_type=$this->reservations_model->pop_room_type(); 现在试试这个
  • 现在出现另一个错误:消息:未定义索引@array_push($list, $type['column_name']);
  • dude 作为示例,我使用 column_name 这里 column_name 是您的表的列名:)
  • 没有。我首先使用了我的表列名(rt_name),但这是不行的!知道为什么吗?
【解决方案2】:

您应该构造一个数组,其中键是选项的value 属性,值是选项的description

docs 中所述,使用这样的数组:

$options = array(
                  'small'  => 'Small Shirt',
                  'med'    => 'Medium Shirt',
                  'large'   => 'Large Shirt',
                  'xlarge' => 'Extra Large Shirt',
                );

会产生如下的选择元素:

<select name="shirts">
   <option value="small">Small Shirt</option>
   <option value="med">Medium Shirt</option>
   <option value="large">Large Shirt</option>
   <option value="xlarge">Extra Large Shirt</option>
</select>

在您的数组中,键始终相同(列名),您需要区分它们以实现您想要的。

可能在模型中您还必须选择房间的 ID...

【讨论】:

  • 我同意这一点。但是如果你再看一遍代码,你会发现这些数据是从数据库表中导入的。
  • 我明白了,事实上我的建议是从数据库表中再获取一个字段,这样您就可以同时拥有数组的键和值:room_type_id =&gt; room_type 或类似的东西跨度>
【解决方案3】:

这是使下拉列表中的选项看起来像这样的示例数组

$options = array(
            "" => "Select",
                "1" => "Test",
                "2" => "Testing",
);

echo form_dropdown('name_of_selectbox', $options);

它会像这样显示

<select name="name_of_selectbox">
<option value="">Select</option>
<option value="1">Test</option>
<option value="2">Testing</option>
</select>

你也可以这样做

        $room_typearray=array();
        $room_typearray[]="Select";
        foreach($room_type as $room){
        $room_typearray[$room['rt_name']]=$room['rt_name'];
        }

echo form_dropdown('room_type', $room_typearray);

这是您评论的回复

function index() {
    $this->load->model('reservations_model');
    $data['room_type'] = $this->reservations_model->pop_room_type();
    //echo "<pre>";print_r($data['room_type']);echo"</pre>";
    $this->load->view('/main/new_reservation', $data);
}

您必须在$data['room_type'] 中加载结果并将其传递给查看首先尝试var_dump($room_type); 并查看其中是否有数据或当您使用任何未定义的变量时发生未定义错误

希望有意义

【讨论】:

  • 给了我以下错误:消息:未定义的变量:room_type 和消息:为 foreach() 提供的参数无效
猜你喜欢
  • 2014-12-25
  • 2011-11-09
  • 2018-10-03
  • 2016-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多