2013-10-13 41 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