根据数组中的值从数据库中获取值

时间:2012-11-19 02:11:55

标签: php arrays codeigniter populate

我需要根据数组中的值填充下拉列表。 这是我的代码。

假设用户有id 1,2,3。然后必须选择与这些ID对应的table_group并在下拉列表中显示。此外,不应该有任何重复值,如在这种情况下在id 2和3值23重复,在这种情况下,将只采取一个值。这里$ table_id是从USERS TABLE中获取的。

     $mod = explode(',',$table_id);
     $mod = array('1','2','3')
     $res = array();

     function addItems($items, $arr) {
        foreach ($items as $value) {
            if (!in_array($value, $arr)) {
                $arr[] = $value;
            }
        }

        return $arr;
     }

     $res = array();
     for ($i = $mod[0]; $i <= end($mod); $i++) {
        $query = $this->db->query("SELECT table_group FROM group where table_id = '$i'");
        $row = $query->row();
        $grp = $row->table_group;
        $group = explode(',', $grp);
        $res = addItems($group, $res);
     }
     return $res;

它实际上工作,但这里发生的错误是假设用户选择1,2,4。在此,只能选择1,2和4的table_group值。但是使用我的代码,选择了1,2,3,4的值。如果它的3,4,5或2,3,4等代码工作正常。我该如何解决这个错误? 只需要纠正代码。

2 个答案:

答案 0 :(得分:1)

改变,

for ($i = $mod[0]; $i <= end($mod); $i++) {
$query = $this->db->query("SELECT table_group FROM group where table_id = '$i'");

for ($i = 0; $i < count($mod); $i++) {
$query = $this->db->query("SELECT module_group FROM module_group where module_id = '$mod[$i]'");

答案 1 :(得分:0)

不能承认其他人所写的内容;

您有2个查询可以放入ID与GROUP的关联数组中:

idVsgroups array
[1] = array(value11, value12, value 13)
[2] = array(value21, value 22, value 23)
[3] = array(value31, value 23)
[4] = array(value 41, value 13)
[5] = array(value 51)

之后,如果选择了1,2和3,请执行以下操作:

foreach ($selected as $key) { $result[] = $selected[$key] }

哪个会把所有东西都放到$ selected中 - 真的很容易?之后尝试使用array_unique或do what this guys already written for you