2016-03-05 25 views
0

我想在逗號分隔的MySql行中輸入多個值,並使用Codeigniter在下拉列表中顯示用戶。例如,一個潮溼的網站產品有不同的值,如產品(顏色:紅色,白色,藍色,橙色)這些不同的值存儲在一行中,並在下拉列表中向用戶顯示這些值。 我目前的列表顯示爲: enter image description here在mysql行中輸入多個值,用逗號分隔輸出,使用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 ($result['color_values']) { 
       $result['color_values'] = explode(',' , $result['color_values']); 
      } 
      if ($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 foreach($posts as $post) : ?> 
      <li> 
       <form method="post" action="<?=base_url();?>cart_test/add/"> 

        <p><?=$post['pro_name'];?></p> 

        <img style="width: 100px;height: 100px" src="<?=base_url();?>uploads/<?=$post['prod_image'];?>"> 

        <p>$<?=$post['prod_price'];?></p> 

        <?php if($post['color_values']) : ?> 
         <p>Color: <select> 
          <option><?=$post['color_values']?></option> 
         </select></p> 
        <?php endif; ?> 

        <?php if($post['size_values']) : ?> 
         <p>Size: <select> 
          <option><?=$post['size_values'];?></option> 
         </select></p> 
        <?php endif; ?> 

       </form> 
      </li> 
     <?php endforeach; ?> 
+0

在MySQL中值進行組合選擇使用CONCAT(VAL1,VAL2 ...),請查看文檔CONCAT_WS() –

+0

產品選項來自哪裏?一張獨立的桌子? –

回答

0

這樣做將創建一個視圖,將看起來像這樣的一種方法:)這裏

SELECT p.prod_id, p.pro_name, p.prod_image, GROUP_CONCAT(CONCAT(opt_color.option_value_id, '::', opt_color.option_value_name) SEPARATOR '||') AS color_options 
    FROM vendor_products AS p 
    LEFT JOIN vendor_products_options AS opt_color ON p.prod_id = opt_color .prod_id AND opt_color .option_id = 1 
    GROUP BY p.prod_id 
    -- Other joins for other options varying the option_id 

的GROUP_CONCAT見參考文獻(功能:http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_group-concat

然後,您使用的視圖你的模型,而不是表本身。提取選項的代碼是這樣的:

​​

和代碼生成的選擇HTML在您的視圖:

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

我寫了相同的代碼,但在查看此代碼時發現錯誤:() show error undefined offset 1 –

+0

You是對的,這裏是更正 –

+0

這段代碼有什麼錯誤? –