我可以使用form_multiselect()来返回我传入的值而不是索引吗?

时间:2014-05-29 15:45:18

标签: php mysql arrays codeigniter get

我有一个form_multiselect()来搜索带有关联标签的项目。 我的表格:

<div class="control-group">
       <?= form_label('Tags: ', 'tag', $label_attr);?>

       <div class="controls">
           <?= form_multiselect('tag[]',$tags,'','id="tag-select"');?>
       </div>
</div>

我用我的模型中的get_tags()填充表单:

public function get_tags() {
    $this->db->select('tag_name');
    $this->db->distinct();
    $this->db->from('offers_tags');

    $query = $this->db->get();

    $results = $query->result_array();

    $tags_arr= array();
    $i = 0;
    foreach ($results as $id => $tag_name){
        foreach ($tag_name as $name){
            $tags_arr[$i] = $name;
            ++$i;
        }
    }

    return $tags_arr;      
}

我遍历查询返回的关联$results数组。如果没有,当我只想要一个标签名称列表点击时,表单将填充索引及其关联的数组。

提交后,我获取数据,稍后将该数据传递给更大的查询结果,其中包含以下内容:

$tag_arr = $this->input->get('tag');

我遇到的问题是表单得到的只是从表单中选择的任何标记的索引。我需要将实际标记作为通过get返回的字符串。 例如: /../../..&tag%5B%5D=8 8是我选择的标签的索引,而不是我需要标签。

非常感谢任何帮助,谢谢。

**测试更新: 仍无法获得正确数据的解决方案。但是我尝试将查询中的results_array()传递给form_multiselect()以及在选择项目后获得的内容,只获取值'tag_name'。所以我假设它传递了查询从中拉出的元组的名称,因为它是一个关联数组。

还尝试循环遍历结果以通过循环传递results_array()的新数组:

foreach ($results as $id => $tag_name){
   $tags_arr[$id] = $tag_name;
}

所以仍然希望从表单中获取字符串数据。我可以得到元组的名称和字符串数据的索引。

我无法找到使用array_values()功能的信息。所以我试过这个没有用,仍然使用multiselect的'submit'返回索引值,完成我的get_tags()函数:

$tags_final = array_values($tags_arr);
return $tags_final;

仍然在寻找答案,请帮助或至少提出这个问题,这已经过了几周。

1 个答案:

答案 0 :(得分:0)

遇到同样问题的人:

对结果查询执行的以下for循环可以解决问题!

    $query = $this->db->get();
    $tags = array();

    foreach($query->result() as $row)
    {
         $tags[$row->tag_id] = $row->tag_name;
    }
    return $tags;