unset array Problem

fabse111

Grünschnabel
Hey ich hoffe es kann mir jemand helfen. Ich habe alles was hier gepostet wurde um einen Array Eintrag zu löschen probiert.
Ich habe jetzt einen Code welcher den Eintrag löscht, jedoch bleibt die Eintragnummer bestehen. Was heißt ich habe eine Art Warenkorb, wo die einzelnen Artikel in einem Array gespeichert werden und in der Anfragliste wieder ausgelesen.
Jetzt gibt es die Möglichkeit auf einen Papierkorb zu drücken dieser soll den Eintrag löschen ich übergebe die Array id und er löscht es. Es bleibt aber Der Eintrag bestehen er löscht nur den Inhalt heraus und nicht den ganzen Eintrag. Wenn ich jetzt 5 Artikel habe und den dritten löschen will dann stehen dort weiterhin 5 Artikel nur im dritten fehlt der Inhalt. Es soll aber natürlich komplett verschwinden das nur noch vier Artikel angezeigt werden.
Hier der Code vom löschen:

PHP:
<?php 

session_start();

if ($_GET["loschen"] != ja){




$_SESSION['artikel'][] = $_GET["artikel"];
$_SESSION['artikelnummer'][] = $_GET["artikelnummer"];

header("Location: produktanfrage.php");
}


if ($_GET["loschen"] == "ja"){


unset($_SESSION['artikel']);
unset($_SESSION['artikelnummer']);


header("Location: produktanfrage.php");
}

if  ($_GET["erase"] == "ja") {

$weg = $_GET["id"];


unset($_SESSION['artikel'][$weg]);
$SESSION['artikel'] = array_values($SESSION['artikel']);

unset($_SESSION['artikelnummer'][$weg]);
$SESSION['artikelnummer'] = array_values($SESSION['artikelnummer']);


header("Location: produktanfrage.php");
}




if  ($_GET["senden"] == "ja") {


unset($_SESSION['artikel']);
unset($_SESSION['artikelnummer']);


header("Location: anfrage_send.php");
}


?>
 
Hi,

sieht irgendwie alles etwas verwirrend aus. Ich glaube allerdings das du vielleicht ganz unten auch noch die Artikelnummer unseten solltest.

Ein Vorschlag von mir wäre aber auch das du dein Array so aufbaust:
PHP:
$_SESSION['warenkorb'][$artikelid] = Array('artikeldaten');

Dann brauchst du nur noch ein:

PHP:
unset($_SESSION['warenkorb'][$artikelid]);

machen und alles was diesen Artikel betrifft ist weg.

Gruß
King of Darkness
 
Deinen Aufbau versteh ich nicht so ganz
Ich sag mal ist es nicht eigentlich egal wie man es aufbaut.
Er unsettet ja Artikel und Artikelnummer.
Nur irgendwie rückt er nicht auf mit den anderen Einträgen.
Und eigentlich fehlt da kein unset einer artikelnummer unten.

Wegen unüberschaulich. Also einmal ganz oben trägt er die Artikel in das Array.
bei der zweiten if abfrage löscht er das ganze array. beim dritten sollte er einen einzelnen EIntrag löschen und beim letzten löscht er das ganze array wenn das formular geschickt wurde..
 
So also ich habe mir jetzt mal das Array mit print_r ausgeben lassen.
Und kann jetzt sagen was passiert. Wenn ich den einzelnen Array eintrag lösche klappt das auch. Also wenn ich drei Einträge und den zweiten lösche dann ist der weg, er legt aber wieso auch immer einen leeren vierten an. Woran kann das liegen.
 
So habe jetzt auch mal meinen Fehler gefunden.
Also erst mal hat er einen neuen Eintrag angelegt weil die If Abfrage um das anlegen schlecht war und ich somit einen neuen leeren angelegt habe wenn ich einen gelöscht habe.
Das zweite Problem nach dem das gelöst war ist das wenn ich bei drei Artikeln den zweiten gelöscht habe, er nicht nachgerutscht ist und deswegen alle Artikel danach um eine Spalte verschoben waren.
Sprich die Lösung für das löschen eines Warenkorbartikels welcher über die SESSION Variable läuft ist array_splice($array,$id,1)
So funktioniert das
 
Zurück