Warenkorb einzelnen Artikel löschen aber wie ?

Meister333

Grünschnabel
Hallo :)

Ich habe ein Problem beim Programmieren eines Warenkorbes. Nämlich weiss ich nicht, wie ich es hinbringen kann, einen einzelnen Artikel zu löschen. Momentan löscht es mir einfach alle Artikel aus dem Warenkorb:/

Die Artikel (per Input Feld zum Testen) binde ich per array in eine Session ein, welche ich dann auf der zweiten Seite in eine for schleife ausführe, so dass es mir immer die neuen Artikel unten nacheinander anzeigt.

Dazu wird jedem Artikel eine Id zu geordnet welche dann auf der zweiten Seite anzeige aber nur zur Test zwecken, später dann nicht mehr. Ich dachte, so könnte ich es schaffen, immer den gewünschten Artikel zu löschen, in dem ich die Id so einbinde, dass es immer nur die Reihe mit der abgerufenen ID löscht aber ich weiss leider nicht wie ich das realisieren kann :(

Es wäre echt schön wenn mir jemand weiterhelfen kann, weil ich weiss echt nicht wie ich das realisieren kann.

Und das ist nur ein Test-Projekt, welche ich dann, wenn ich alle gewünschten Funktionen habe auch schön darstelle und alles korrekt ausführe ;)


Seite 1 ( Eingabe Seite per Input Felder)

PHP:
session_start();


   if (! isset($_SESSION['artikel1']))    
     $_SESSION['artikel1'] = array();      

   if (isset($_POST['artikel1']))
      $_SESSION['artikel1'][] = $_POST['artikel1'];

if (! isset($_SESSION['artikel2']))    
     $_SESSION['artikel2'] = array();      

   if (isset($_POST['artikel2']))
      $_SESSION['artikel2'][] = $_POST['artikel2'];

if (! isset($_SESSION['anzahl']))    
     $_SESSION['anzahl'] = array();      

   if (isset($_POST['anzahl']))
      $_SESSION['anzahl'][] = $_POST['anzahl'];



   if (! isset($_SESSION['artikel3']))    
     $_SESSION['artikel3'] = array();      

   if (isset($_POST['artikel3'])){
       $test= uniqid();
      $_SESSION['artikel3'][] = $test;}

HTML Teil Seite 1

HTML:
<!DOCTYPE html>

  <head>
    <meta charset="utf-8">
    <title>Test</title>
  </head>
<body>
  <form action='' method='post'>
    
   <p>Eingabefeld<input name="artikel1" type="text" value=""></p>
    
      <br>
    
   <p><input name="artikel2" type="hidden" value="24.22"></p>
    
     <p><input name="artikel3" type="hidden" value="Test2"></p>
    
  <p>Anzahl<input name="anzahl" type="text" value=""></p>
    
    
    <button type="submit" name="Shop">Button</button>
  </form>
  
<?php
 
?>
</body>




Und Hier die Seite 2 (Test-Warenkorb)


PHP:
 session_start();




HTML:
<body>

 
    <div id="Inhalt">
  
  
  
    <table>
      
      
      
        <tr>
      
        <td class="td0"></td><td class="td1">Artikel</td><td class="td2">Anzahl</td><td class="td4">ID</td> <td class="td3">Preis Total</td>
      
      
        </tr>
      
          
<?php 
                
      
      for($x=0; $x<count($_SESSION['artikel1']); $x++){
      
        for($l=0; $l<count($_SESSION['anzahl'][$x]); $l++){
          
            for($m=0; $m<count($_SESSION['artikel3'][$x][$l]); $m++){
          
              
         if(isset($_SESSION['artikel1'][$x][$l][$m])&& $_SESSION["anzahl"][$x][$l][$m]  > 0  )                        
         {
            
               $IPA = $_SESSION['artikel3'][$x];
            
            echo "<form action='test1.php' method='post' enctype='multipart/form-data'>";
            echo "<tr>";
            echo "<td class='td0'><input type='submit' name='löschenn'  value='x' ></td>";
            echo "<td class='td1'> " . $_SESSION['artikel1'][$x] . "</td>";                  
            echo "<td class='td2'>" . $_SESSION['anzahl'][$x] . "</td>";
            echo "<td class='td4'>" . $_SESSION['artikel3'][$x] . "</td>";      
            echo "</tr>";
            echo "</form>";
          
            
                 if(isset ($_POST['löschenn'])){
              
                     unset($_SESSION['anzahl'][$x]);  
                
             }else {
                 echo "es got ne";}
            
        
         }
            }
      
        }
    
      }
      
  
              
?>
      
      
        <td class="td0"></td>
        <td class="td1" ></td>
          
            <td class="td2"></td>
          
            <td class="td4"></td>
          
            <td class="td3"><?php echo $_SESSION['preis'];   ?></td>
      

        </table>
  

    </div>
  

    </body>
 
Zuletzt bearbeitet:
Hi Meister,

wenn ich Deinen Code richtig interpretiere, ist es völlig klar, dass der komplette Warenkorb gelöscht wird.

Erklärung:
Im PHP-Teil hast Du eine Schleife, welche zu jedem Artikel ein Form-Element erstellt. Dieses Form-Element wird auch generiert, wenn auf deinen "Löschen"-Btn klickst. Wenn Du nun also auf den Btn klickst, wird bei jedem Durchgang der Schleife auch auf isset($_POST['löschenn']) geprüft - diese Bedienung ist bei jedem Durchgang "true".

Lösung:
Pack die Artikel ID in das value deines Löschen Btn.
Anschließend entfernst Du Zeile 45-53.
Füg vor Deiner Schleife folgenden Code ein:

PHP:
if(isset($_POST['löschenn'])){
    $id = $_POST['löschenn'];
    unset($_SESSION['anzahl'][$id]);
}else{
   echo "nope";
}

Viele Grüße
goto;
 
Zurück