数据库中以逗号分隔的多个值使用Codeigniter

时间:2016-03-07 04:42:22

标签: php mysql database codeigniter

我有一个购物商店,许多产品有多个颜色值或某些产品有多个尺寸值,如。的小,中,大,XL

我将这些值存储在数据库列中,并希望在下拉列表选择列表中逐个显示。我使用codeigniter,但没有显示在下拉列表中。这是我的代码。

模型

public function get_all()
    {
        $this->db->select()
                 ->from('vendor_products')
                 ->order_by(1,'DESC');
        $data = $this->db->get();
        $query = $data->result_array();

        foreach ($query as $result) {

            if (!empty($result['color_values'])) {
                $result['color_values'] = explode('||' , $result['color_values']);
            }
            if (!empty($result['size_values'])) {
                $result['size_values'] = explode('||',$result['size_values']);
            }
        }
        return $query;
    }

控制器

public function index()
    {
        $this->load->model('cartm');
        $data['posts'] = $this->cartm->get_all();
        $this->load->view('cart/index',$data);
    }

查看

<?php if($post['color_values']) : ?>
                        <p>Color: <select>
    <?php foreach($post['color_values'] as $optvalue) : 
        $option_array = explode('::', $optvalue);
    ?>
    <option value="<?=$option_array[0]?>"><?=$option_array[1]?></option>
    <?php endforeach; ?>
                        </select></p>
    <?php endif; ?>

    <?php if($post['size_values']) : ?>
                        <p>Size: <select>
    <?php foreach($post['size_values'] as  $optsize) : 
        $opt_size = explode('::', $optsize)
    ?>
     <option value="<?=$opt_size[0]?>"><?=$opt_size[1];?></option>
    <?php endforeach;?>
                        </select></p>
    <?php endif; ?>

1 个答案:

答案 0 :(得分:0)

我在评论中的意思是,你正在操作数组$ result,但是你要返回$ query。所以,你的操纵没有任何影响。你应该这样做:

public function get_all()
    {
        $this->db->select()
                 ->from('vendor_products')
                 ->order_by(1,'DESC');
        $data = $this->db->get();
        $query = $data->result_array();

        foreach ($query as $k => $result) {

            if (!empty($result['color_values'])) {
                $query[$k]['color_values'] = explode('||' , $result['color_values']);
            }
            if (!empty($result['size_values'])) {
                $query[$k]['size_values'] = explode('||',$result['size_values']);
            }
        }
        return $query;
    }

然后,在编写更多代码之前,请检查控制器中是否在视图中获得了所需的所有值:

public function index()
    {
        $this->load->model('cartm');
        $data['posts'] = $this->cartm->get_all();

        print "<pre>";
        print_r($data);
        print "</pre>";

       // $this->load->view('cart/index',$data);
    }