2017-02-24 2 views
0

Ich arbeite an einer E-Commerce-Übung - Hinzufügen von Elementen zu einem Warenkorb, dann Entfernen von ihnen. Die Artikel/Einkaufswagen sind eine Artikel-ID und ein Mengenwert, die in der Sitzung gespeichert und in den Controller-Funktionen manipuliert wurden - nichts, das aus einer Datenbank mit Ausnahme der Produkt-ID gezogen wurde. Hinzufügen zu einem Warenkorb oder Aktualisieren funktioniert, aber Entfernen ist nicht möglich.Aus dem Warenkorb entfernen Code funktioniert nicht

Von was ich sagen kann, dann Funktion zum Hinzufügen oder Entfernen sind einfach - man sollte einen Wert erhöhen, der andere verringern. Code ist unten. Irgendwelche Ideen?

Entfernen aus Korb:

public function remove_from_basket($item_id) 
    { 
     // remove an item from a cart 
     $quantity = $this->session->userdata($item_id); 
     $quantity -= $this->session->post('qty'); 
     $this->session->set_userdata($item_id, $quantity); 
     redirect('/eCommerceItems/eCommerce_basket'); 
    }  

Called from 
    <?php 
     $total=0; 
     foreach ($items as $item) 
     { 
      $temp = $item['price'] * $this->session->userdata($item['id']); 
      $total += $temp; 
      if ($this->session->userdata($item['id']) > 0) 
      { 
       echo "<div class='item'> 
        <div class='description'> 
        <p>Name: {$item['name']}</p> 
        <p>Price: {$item['price']}</p> 
        <p>Quantity: {$this->session->userdata($item['id'])}</p> 
        <form action '/eCommerceItems/remove_from_basket/{$item['id']}' method='post'> 
         <select name='qty'>"; 
         for($i=1;$i <= $this->session->userdata($item['id']);$i++) 
         { 
          echo "<option>{$i}</option>"; 
         } 
         echo "</select> 
         <input type='submit' value='Remove'> 
         </form> 
        </div> 
        </div>"; 
      } 
     } 

In den Warenkorb

public function add_to_basket($item_id) 
{ 
    //Add an item to a cart 
    $quantity = $this->session->userdata($item_id); 
    $quantity += $this->input->post('qty'); 
    $this->session->set_userdata($item_id, $quantity); 
    redirect('/eCommerceItems'); 
} 

Genannt aus:

<?php 
       foreach($items as $item) 
       { 
        echo "<div class='item'> 
         <div class='description'> 
          <p>Name: {$item['name']}</p> 
          <p>Description: {$item['description']}</p> 
          <p>Price: \${$item['price']}</p> 
          <p>Quantity Available: {$item['quantity']}</p> 
          <p>Item ID is: {$item['id']}</p> 
          <form action='/eCommerceItems/add_to_basket/{$item['id']}' method='post'> 
           <select name='qty'> 
            <option>1</option> 
            <option>2</option> 
            <option>3</option> 
            <option>4</option> 
            <option>5</option> 
           </select> 
           <input type='submit' value='Add to basket'> 
          </form> 
         </div> 
        </div>"; 
       } 
      ?> 
+0

Vielen Dank für alle Anregungen - Dies scheint ein Problem mit der erzeugten HTML-Schaltfläche in Opera haben nicht aktiviert richtig, kein Problem mit dem PHP-Code. Ich habe keine Grundursache (möglicherweise Leerzeichen oder Formatierung), aber das HTML-Segment von Grund auf neu zu schreiben, reparierte die Knopfaktion. – perniciouscaffeine

Antwort

0

In Ihrem Code Sie haben:

$quantity -= $this->session->post('qty'); 

sollte sein:

$quantity -= $this->input->post('qty'); 
+0

Guter Fang. Ich habe aktualisiert, aber mit den gleichen Ergebnissen. – perniciouscaffeine

0

Geben dieses gehen ... auch berücksichtigen müssen, um unter 0 gehen ich übernehmen würde?

public function remove_from_basket($item_id) 
    { 
     // remove an item from a cart 
     $increment = $this->input->post('qty'); 
     $quantity = $this->session->userdata($item_id); 

     $newQuantity = $quantity - $increment; 

     if ($newQuantity > 1) { 
      $this->session->set_userdata($item_id, $Quantity); 
     } else { 
      $this->session->unset_userdata($item_id); 
     } 

    }  

Wenn Sie immer noch Probleme haben schlage ich print_r($variable); die; jeden Schritt (oder CI-Logging-Funktion verwenden) und sehen, ob Ihre Werte sind das, was Sie denken, sie sind?

manchmal leichter sein gerade, es zu schreiben all basischen, um es die Arbeit an ...

Verwandte Themen