我有一个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;
仍然在寻找答案,请帮助或至少提出这个问题,这已经过了几周。
答案 0 :(得分:0)
遇到同样问题的人:
对结果查询执行的以下for循环可以解决问题!
$query = $this->db->get();
$tags = array();
foreach($query->result() as $row)
{
$tags[$row->tag_id] = $row->tag_name;
}
return $tags;