2013-07-04 63 views
0

型號:笨:從陣列創建下拉字段,從數據庫表中的數據列填充

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); 
?> 

但是,有一個BIG問題,而所有選擇選項的「名稱」是相同的。此下拉列表中的所有選項都具有與(room_type)表的列名相同的值:rt_name。我嘗試了幾件事,但仍然無法爲下拉列表中的選項的名稱字段分配唯一值。

+1

這很奇怪,'form_dropdown'的第一個參數是name屬性。所以你的代碼應該給你'name =「roomtype」'。 – silkfire

+1

@silkfire參考這個 - > http://ellislab.com/codeigniter/user-guide/helpers/form_helper.html ::根據第一個參數是整個下拉列表的名稱,而不是它的微觀選項。 :)如果您在print_r行刪除評論,您將對此問題有清晰的認識。看到這個:http://paste.ubuntu.com/5844745/ –

回答

5

因爲他們都來自同一個column.like這個..

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> 
+0

給我以下錯誤:消息:未定義的變量:room_type和 消息:爲foreach() –

+2

這裏提供的無效參數** $ room_type = $ this-> reservations_model - > pop_room_type(); **現在試試這個 –

+0

現在另一個錯誤:消息:未定義的索引@ array_push($ list,$ type ['column_name']); –

1

您應該構建一個數組,其中的密鑰是選項的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 ...

+0

我同意這一點。但是如果你再次通過代碼,你會發現這些數據是從數據庫表中導入的。 –

+1

我看到,事實上,我的建議是從數據庫表中獲取一個字段,以便您的數組具有鍵和值:'room_type_id => room_type'或類似 – Dalen

1

這裏是樣品陣列,使選項的下拉你的陣列應該是這樣的

$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);,看到你在它的數據,或當您使用的是沒有定義任何變量不是發生未定義錯誤

希望它是有道理的

+0

向我提供以下錯誤:消息:未定義的變量:room_type AND消息:爲foreach提供的無效參數() –

+1

查看我更新的答案 –