MySQL - Doppelter Eintrag - warum?

the snake II

Erfahrenes Mitglied
Hallo zusammen,

ich bastle gerade an einem Onlineshop.
Momentan arbeite ich an einem Script, mit dem man Artikel in den "Warenkorb" einfügen kann.

Man ist auf der Seite des Produkts, auf der ein Formular ist, mit einem 'hidden'-input namens "artikel" dessen Wert durch die GET Variable "art" auf der Produktseite übergeben wurde.

Das Formular (in PHP wegen des '$_GET')
PHP:
echo '<form action="index.php" method="post">
 <input type="text" name="menge" value="1" size="17">
 <input type="hidden" name="artikel" value="'.$_GET["art"].'"><br>
 <input type="submit" value="in den Warenkorb">
</form>';
Jetzt wird auf der selben Datei (index.php) der MySQL Eintrag gemacht:
PHP:
if(isset($_POST["artikel"]) AND isset($_POST["menge"])){
	$art = $_POST["artikel"];
	$men = $_POST["menge"];
	$expire = time()+60*60*24*30*3;
	
	if($status == "in"){
		if(isset($_COOKIE["korb"])){
			$artid = $_COOKIE["korb"];
			setcookie('korb',$artid."~".$art.$artid."+".$men,$expire);
			$meldung = '<p>Erster Eintrag; Der Artikel wurde hinzugefügt;<a href="index.php?location=warenkorb">&nbsp;weiter&rarr;&nbsp;</a></p>';
		} else {
			setcookie('korb',$art."+".$men,$expire);
			$meldung = '<p>Der Artikel wurde hinzugefügt;<a href="index.php?location=warenkorb">&nbsp;weiter&rarr;&nbsp;</a></p>';
	
		}
	} else {
		$meldung = '<p><font color="red">Nicht eingeloggt</font></p>';
	}
	echo $meldung;
}
Also das erste 'if' ist, um festzustellen ob man eingeloggt ist. Das zweite, um zu sehen, ob schon 'ein Warenkorb existiert', wenn nicht, wird kein '~' vor den Eintarg gesetzt, das die einzelnen 'Pakete' unterteilt.
Soweit so gut. Ist das Cookie "korb" nicht gesetzt, wird alles Prima eingetragen. Sendet man ein zweites mal, und zwar auch über das Formular, kommt etwas sehr verwirrendes raus:
War der erste Eintrag z.B. 1+17 und die zweite Eingabe 5+19 so ist der zweite Eintrag:
"15+17+19".
Wobei die 15 sich aus den beiden Artikeln (1 und 5) zusammensetzt.
Ist die dritte Eingabe 1+15 sieht der dritte Eintrag so aus:
"15+17~15+17+19+15".
Das verstehe ich allerdings garnicht.

Wie kann ich verhindern, dass die zusaätzlichen Einträge so "verunstaltet" eingetragen werden?

Ich hoffe ihr habt das jetzt verstanden, denn ich habe versucht soviel Information auf wenig Text zu fassen. Vielen Dank fürs durchlesen :-)
 
Hi

ich sehe allerdings keinen mySQL-Eintrag in Deinem Script. Dein Eintrag bezeiht sich auf das Auflisten der Daten via Cookie.

Ich persönlich würde mir einen Warenkorb in einer mySQL-Tabelle anlegen. Schon wg. möglicher abgesteller Cookies.

Das Abfragen, Speichern und Ändern der Einträge ist meiner Meinung nach in einer Tabelle wesentlich einfacher.
 
Zurück