Schlüssel aus einem Array entfernen

Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

king-ich

Mitglied
Hallo.
Folgender Code Füllt das Array:
PHP:
$artikel = $_POST['artikel'];
$name = $_POST['name'];
$preis = $_POST['preis'];
$anzahl = $_POST['anzahl'];

// Session-Warenkorb in Variable schreiben
$warenkorb = $_SESSION["warenkorb"];

// Neuen Artikel in eigenen Array schreiben
$neuer_artikel = array ('Name' => $name,
                        'Preis' => $preis,
                        'Anzahl' => $anzahl);

// neuen Artikel an Warenkorb-Array anhängen, der Warenkorb enthält pro Artikel einen Array
$warenkorb[$artikel] = $neuer_artikel;

// geänderten Warenkorb wieder in Session speichern
$_SESSION["warenkorb"] = $warenkorb;

$warenkorb = $_SESSION["warenkorb"];

Und mit diesem Code:

PHP:
<div id="warenkorb">

        <table>
            <tr style="height:30px">
                <th>Name</th>
                <th>Stückreis</th>
                <th>Menge</th>
                <th>Aktion</th>
            </tr>
            <?php foreach($warenkorb as $id => $artikel){ ?>
            <tr style="height:11px"></tr>
            <tr>
                <td><?php echo $artikel['Name']; ?></td>
                <td><?php echo $artikel['Preis']; ?></td>
                <td><?php echo $artikel['Anzahl']; ?></td>
                <td><a href="?delete=<?php echo $id; ?>">entfernen</a></td>
            </tr><?php } ?>
        </table>
    </div>
Will Ich das Array ausgeben und ggf. einzelne Schlüssel entfernen.
Wenn ich auf 'entfernen klicke, verschwindet ein Element, und ein bereits gelöschter 'Artikel' taucht wieder in der Tabelle auf. Als wenn Kobolde Ihren Spaß dabei haben...


Bin für jede Hilfe Dankbar. :oops:

Hier ist die Quelle aus der ich mein Nutzen ziehe: Session + Array = Warenkorb? von Chris, 28.07.2002 01:26 - SELF-Forum - SELFHTML Forum
 
Zuletzt bearbeitet:
PHP:
if(isset($_GET['delete'])){
   // und jetzt nur das Element aus dem Array löschen:
   $del_id= $_GET['delete'];
   unset($warenkorb[$del_id]);
}
 
Du musst vor dem unset den Array aus der Session lesen und danach wieder in die Session schreiben.
 
Kannst Du mir dabei helfen?

PHP:
session_start();
if(isset($_SESSION['warenkorb'])){
$warenkorb = $_SESSION['warenkorb'];
}
if(isset($_GET['delete'])){
   // und jetzt nur das Element aus dem Array löschen:
   $del_id= $_GET['delete'];
   unset($warenkorb[$del_id]);
}
 
Ich glaube ich hab's :
PHP:
session_start();
if(isset($_SESSION['warenkorb'])){
$warenkorb = $_SESSION['warenkorb'];
 
}
if(isset($_GET['delete'])){
   // und jetzt nur das Element aus dem Array löschen:
   $del_id= $_GET['delete'];
   unset($warenkorb[$del_id]);
$_SESSION['warenkorb'] = $warenkorb;
}
 
Jetzt solltest du noch einige Problemfälle abfangen
PHP:
session_start();
if(isset($_SESSION['warenkorb'])){
    $warenkorb = $_SESSION['warenkorb'];
}else{
    //Falls kein Warenkorb vorhanden ist einen anlegen
    $warenkorb = array();
}
if(isset($_GET['delete'])){
       // und jetzt nur das Element aus dem Array löschen:
       $del_id= $_GET['delete'];

       //Nur löschen, wenn die id im Warenkorb gefunden wurde
       if(array_key_exists($del_id, $warenkorb)) unset($warenkorb[$del_id]);
    $_SESSION['warenkorb'] = $warenkorb;
}
 
Jetzt habe ich nur noch ein (kleines) anderes Problem:

[array(3) { [5]=> array(3) { ["Name"]=> string(32) "Coca Cola 0.33l Dose inkl. Pfand" ["Preis"]=> string(1) "1" ["Anzahl"]=> string(1) "1" } [6]=> array(3) { ["Name"]=> string(31) "MezzoMix 0.33l Dose inkl. Pfand" ["Preis"]=> string(1) "1" ["Anzahl"]=> string(1) "1" } [7]=> array(3) { ["Name"]=> string(28) "Pepsi 0.33l Dose inkl. Pfand" ["Preis"]=> string(1) "1" ["Anzahl"]=> string(1) "1" } } ][/ICODE]

Wie ändere ich die Anzahl von z.B. 'MezzoMix' ?

Danke im Voraus :)

(Ich weiß, dass das mit str_replace geht. Werde aber aus dem Manual nicht schlau, weil da str_replace nur auf ein Array Inhalt angewendet wird...) :confused:
 
Jetzt habe ich nur noch ein (kleines) anderes Problem:

[array(3) { [5]=> array(3) { ["Name"]=> string(32) "Coca Cola 0.33l Dose inkl. Pfand" ["Preis"]=> string(1) "1" ["Anzahl"]=> string(1) "1" } [6]=> array(3) { ["Name"]=> string(31) "MezzoMix 0.33l Dose inkl. Pfand" ["Preis"]=> string(1) "1" ["Anzahl"]=> string(1) "1" } [7]=> array(3) { ["Name"]=> string(28) "Pepsi 0.33l Dose inkl. Pfand" ["Preis"]=> string(1) "1" ["Anzahl"]=> string(1) "1" } } ][/ICODE]

Wie ändere ich die Anzahl von z.B. 'MezzoMix' ?

Danke im Voraus :)

(Ich weiß, dass das mit str_replace geht. Werde aber aus dem Manual nicht schlau, weil da str_replace nur auf ein Array Inhalt angewendet wird...) :confused:

Welche Zahl?!
Meinst Du die 0.33?! Falls ja musst Du den String durchsuchen und dann entsprechend ersetzen :)
 
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…
Zurück