2013-10-13 42 views
0

提交的項目我有一個選擇是這樣的:笨從選擇

$stuff=$this->Database->getItems(); 
$data['mySelect']=form_multiselect('addedStuff[]', $stuff, '1', 'id="addedStuff" multiple="multiple"'); 

當我提交表單,然後POST選擇我有這個的所有值:

$var = $this->input->post('addedStuff'); 
var_dump($var); 

而且後續代碼var_dump顯示:

array (size=3) 
    0 => string '0' (length=1) 
    1 => string '1' (length=1) 
    2 => string '2' (length=1) 

我的問題是,我不想有數字字符串,我想我的選定項目的文本。他們應該是這樣的:

array (size=3) 
    0 => string 'IMP 291B' (length=8) 
    1 => string 'IMP 9891' (length=8) 
    2 => string 'IMP 492' (length=7) 

getItems:

function getItems() 
    { 
     $query = $this->db->query(sprintf (GET_PRINTERS_MODELS)); 

     $results=array(); 

     foreach ($query->result_array() as $row) 
     { 
      array_push ($results, $row['modelo']); 
     } 
     return $results; 
    } 

我的選擇正確顯示在視圖中......

我該如何解決這個問題?

+0

安置自己的模型太'getItems();' –

+0

是什麼'的var_dump($東西)'什麼樣子的? – doitlikejustin

回答

1

您需要將$stuff陣列的按鍵設置你的價值觀,試試這個:

$stuff = $this->Database->getItems(); 
$stuff = array_combine($stuff,$stuff); 
$data['mySelect']=form_multiselect('addedStuff[]', $stuff, '1', 'id="addedStuff" multiple="multiple"'); 
+0

http://who-is-awesome.com/who-is-awesome.jpg – dak

1

我看到了兩個解決方案。

1)你改變$stuff具有相同的值的鍵。

CodeIgniter的form_multiselect就像form_dropdown產生的選項,使得通過選項列表的鍵包含相應選項的文本值。 埃爾戈你做的多選前:

$stuff = array_combine($stuff,$stuff); 

2)由於方法1可能會或可能不會弄亂任何發送的數據,你保持了指數,但要基於指數接收控制器查找。具體如下:

$stuff=$this->Database->getItems(); 
$var = $this->input->post('addedStuff'); 
$var = array_intersect_key($stuff,$var); 

第二種方法更有安全感..

+0

謝謝^^ http://who-is-awesome.com/who-is-awesome.jpg – dak