2017-04-03 1 views
0

J'ai un problème lorsque j'ajoute des produits au panier, mais quand je veux aller chercher le contenu du panier, je le trouve vide.Ajouter et montrer la liste des produits dans le panier codeigniter

ceci est mon contrôleur:

public function add_to_cart(){ 

    $insert_data = array( 
    'id' => $this->input->post('id'), 
    'name' => $this->input->post('name'), 
    'price' => $this->input->post('price'), 
    'qty' => $this->input->post('qty')); 

    // This function add items into cart. 
    $this->cart->insert($insert_data); 


} 

et ceci est ma forme d'ajouter un nouveau produit au panier:

<div class="button-group"> 
        <form method="POST" action="<?php echo base_url().'add_to_cart'; ?>"> 
        <div style="display:none"> 
        <input type="hidden" name="<?php echo $this->security->get_csrf_token_name(); ?>" value="<?php echo $this->security->get_csrf_hash();?>" /> 
        </div> 
        <input type="hidden" name="<?php echo $this->security->get_csrf_token_name(); ?>" value="<?php echo $this->security->get_csrf_hash(); ?>"> 
        <input type="number" name="qty" id="<?php echo $ligneBase->id;?>"> 
        <input type="hidden" name="name" value="<?php echo $ligneBase->name;?>"> 
        <input type="hidden" name="price" value="<?php echo $ligneBase->price;?>"> 
        <input type="hidden" name="id" value="<?php echo $ligneBase->id;?>"> 
         <input class="add_cart" type="submit" value="Add to cart"> 
         <div class="add-to-links"> 
        </form> 
       </div> 

et ceci est mon panier en header.php:

<table class="table"> 
       <tbody> 
       <div id="text"> 
        <?php $cart_check = $this->cart->contents(); 

        // If cart is empty, this will show below message. 
        if(empty($cart_check)) { 
        echo '<h4 align="center">No Product in cart, To add products to your shopping cart click on "Add to Cart" Button</h4>'; 
        } ?> 
       </div> 

        <?php 
        $cart = $this->cart->contents(); 
        foreach($cart as $indice => $ligneBase){ 
        ?> 
        <tr> 
        <td class="text-center"><a href="product.html"><img class="img-thumbnail" title="Xitefun Causal Wear Fancy Shoes" alt="Xitefun Causal Wear Fancy Shoes" src="image/product/sony_vaio_1-50x50.jpg"></a></td> 
        <td class="text-left"><a href="product.html"><?php echo $ligneBase->id;?></a></td> 
        <td class="text-right">x 1</td> 
        <td class="text-right"><?php echo $ligneBase->name;?> </td> 
        <td class="text-center"><button class="btn btn-danger btn-xs remove" title="Remove" onClick="" type="button"><i class="fa fa-times"></i></button></td> 
        </tr> 

       <?php 
        } 
       ?> 


       </tbody> 
       </table> 
+0

Est-ce que cette ligne retourne une rowid lorsque vous insérez $ this-> Cart-> insert (insert_data de $); – shantanu

+0

Assez sûr que la bibliothèque 'cart' a été supprimée dans les versions récentes de CI - Juste un avertissement! – MackieeE

Répondre

0

Puis-je suggérer des améliorations de bits dans la structure de votre code. Vous devez utiliser un modèle pour les interactions db

Étape 1. Contrôleur Fonction

public function cart() 
{ 
    $data['cart_items']=$this->cart_model->getCartItems(); 
    if($_POST) 
    { 
     // Perform Validation 
     if($this->form_validation->run()==false) 
     { 
      $data['errors']=validation_errors(); 
      $this->load->view('cart_view',$data); 
     } 
     else 
     { 
      $row=$this->cart_model->insertToCart($this->security->xss_clean($_POST)); 
      if($row) 
      { 
       $data['success']='Item Added'; 
       $this->load->view('cart_view',$data); 
      } 
      else 
      { 
       $data['error']='Item Could not be Added'; 
       $this->load->view('cart_view',$data); 
      } 
     } 
    } 
    else 
    { 
     $this->load->view('cart_view',$data); 
    } 

} 

Step-2. Modèle Fonctions

public function getCartItems() 
{ 
    $sql='create query'; 
    return $this->db->query($sql)->result_array(); 
} 

public function insertToCart($data) 
{ 
    $item=array(
     'field' => $data['index'] 
    ); 
    $this->db->insert('cart',$item); 
    return $this->db->insert_id(); 
} 

Step-3. Voir

<div class="button-group"> 
    <form method="POST" action=""> 
     <input type="hidden" name="<?php echo $this->security->get_csrf_token_name(); ?>" value="<?php echo $this->security->get_csrf_hash();?>" /> 
     <input type="hidden" name="<?php echo $this->security->get_csrf_token_name(); ?>" value="<?php echo $this->security->get_csrf_hash(); ?>"> 
     <input type="number" name="qty" id="<?php echo $ligneBase->id;?>"> 
     <input type="hidden" name="name" value="<?php echo $ligneBase->name;?>"> 
     <input type="hidden" name="price" value="<?php echo $ligneBase->price;?>"> 
     <input type="hidden" name="id" value="<?php echo $ligneBase->id;?>"> 
     <input class="add_cart" type="submit" value="Add to cart"> 
     <div class="add-to-links"> 
     </form> 
</div> 
0

mon entraînement dans votre code

mon contrôleur

public function workout() 
    { 



     if($this->input->post()) 
     { 
      //echo "<pre>"; print_r($this->input->post()); 

      $insert_data = array( 
    'id' => $this->input->post('id'), 
    'name' => $this->input->post('name'), 
    'price' => $this->input->post('price'), 
    'qty' => $this->input->post('qty')); 

      $this->cart->insert($insert_data); 

      echo "<pre>"; print_r($this->cart->contents()); 


      exit(); 
     } 

     $this->load->view('workout'); 
    } 

mon avis

<form method="POST" action="<?php echo base_url().'welcome/workout'; ?>"> 
        <input type="number" name="qty" id="1002"> 
        <input type="hidden" name="name" value="Mobile"> 
        <input type="hidden" name="price" value="300"> 
        <input type="hidden" name="id" value="1002"> 
         <input class="add_cart" type="submit" value="Add to cart"> 
         <div class="add-to-links"> 
        </form> 

et ma sortie est

Array 
(
    [fba9d88164f3e2d9109ee770223212a0] => Array 
     (
      [id] => 1002 
      [name] => Mobile 
      [price] => 300 
      [qty] => 24 
      [rowid] => fba9d88164f3e2d9109ee770223212a0 
      [subtotal] => 7200 
     ) 

) 

fonctionne très bien

enter image description here

et votre erreur est i n afficher foreach

<table class="table"> 
       <tbody> 
       <div id="text"> 
        <?php $cart_check = $this->cart->contents(); 

        // If cart is empty, this will show below message. 
        if(empty($cart_check)) { 
        echo '<h4 align="center">No Product in cart, To add products to your shopping cart click on "Add to Cart" Button</h4>'; 
        } ?> 
       </div> 

        <?php 
        $cart = $this->cart->contents(); 
        foreach($cart as $indice => $ligneBase){ 
        ?> 
        <tr> 
        <td class="text-center"><a href="product.html"><img class="img-thumbnail" title="Xitefun Causal Wear Fancy Shoes" alt="Xitefun Causal Wear Fancy Shoes" src="image/product/sony_vaio_1-50x50.jpg"></a></td> 
        <td class="text-left"><a href="product.html"><?php echo $ligneBase->id;?></a></td> 
        <td class="text-right">x 1</td> 
        <td class="text-right"><?php echo $ligneBase->name;?> </td> 
        <td class="text-center"><button class="btn btn-danger btn-xs remove" title="Remove" onClick="" type="button"><i class="fa fa-times"></i></button></td> 
        </tr> 

       <?php 
        } 
       ?> 


       </tbody> 
       </table> 

changement à

<table class="table"> 
        <tbody> 
        <div id="text"> 
         <?php $cart_check = $this->cart->contents(); 

         // If cart is empty, this will show below message. 
         if(empty($cart_check)) { 
         echo '<h4 align="center">No Product in cart, To add products to your shopping cart click on "Add to Cart" Button</h4>'; 
         } ?> 
        </div> 

         <?php 
         $cart = $this->cart->contents(); 
         foreach($cart as $indice => $ligneBase){ 
         ?> 
         <tr> 
         <td class="text-center"><a href="product.html"><img class="img-thumbnail" title="Xitefun Causal Wear Fancy Shoes" alt="Xitefun Causal Wear Fancy Shoes" src="image/product/sony_vaio_1-50x50.jpg"></a></td> 
         <td class="text-left"><a href="product.html"><?php echo $ligneBase['id'];?></a></td> 
         <td class="text-right">x 1</td> 
         <td class="text-right"><?php echo $ligneBase['name'];?> </td> 
         <td class="text-center"><button class="btn btn-danger btn-xs remove" title="Remove" onClick="" type="button"><i class="fa fa-times"></i></button></td> 
         </tr> 

        <?php 
         } 
        ?> 


        </tbody> 
        </table>