我有一个购物商店,许多产品有多个颜色值或某些产品有多个尺寸值,如。的小,中,大,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; ?>
答案 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);
}