【问题标题】:Multiple values in Database separated by comma show these values one by one in Dropdown list using Codeigniter数据库中以逗号分隔的多个值使用 Codeigniter 在下拉列表中一一显示这些值
【发布时间】:2016-03-07 04:42:21
【问题描述】:

我有一家购物商店,许多产品具有多种颜色值,或者某些产品具有多种尺寸值,例如。 小号、中号、大号、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; ?>

【问题讨论】:

  • 我看到的第一件事是,您在模型中返回了 $query,但您在 $result 中进行了一些数据操作。所以也许你应该返回 $result 数组。
  • 你能帮我如何操作模型中的数据吗?
  • 请给我一个代码示例,谢谢

标签: php mysql database codeigniter


【解决方案1】:

我在评论中的意思是,您正在操作数组 $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);
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    • 2020-02-24
    • 2020-05-31
    • 1970-01-01
    • 2018-10-28
    相关资源
    最近更新 更多