PHP Schleife für die Auswertung von Cookies

Floletni

Commander
Registriert
Sep. 2007
Beiträge
2.358
Ich bin grad dabei einen Webshop zu programmieren. Nein er wird nie auf die Öffentlichkeit losgelassen. ;)

Den Warenkorb des Webshops lasse ich in Cookies speichern. Bei dem Druck auf den Warenkorb wird die Produkt_id in ein Cookie gespeichert. Jetzt wollte ich eine Schleife haben die mir doppelte Produkte ausfiltert. Ansonsten habe ich im Warenkorb, wenn man ein Produkt mehrmals anklickt, das selbe Produkt mehrmals.

Leider funktioniert sie nicht so richtig. Der erster Cookie der gesetzt wird, wird richtig erkannt und wird nicht doppelt gespeichert. Das Problem liegt darin, dass er in der ersten Schleife in die zweite Schleife geht und dann den Cookie setzt. Ich ahbe aber keine Ahnung wie ich es anderes schreiben könnte.

Code:
$id=$_POST["produkt_id"];
    $i=0;
    
    if (isset($_COOKIE["produkt0"]))
    {
	while($i<100)
	{
	    $cname="produkt".$i;
	    @$cookie = $_COOKIE[$cname];
	    $i++;
	    if ($cookie==$id)
	    {
		break;
	    }else{
		$j=0;
		while($j<100)
		{
		$j++;
		$cname="produkt".$j;
		    if (isset($_COOKIE[$cname]))
		    {
		    }else{
			setcookie($cname,$id,time()+1800);
			break;
		    }
		} 
	    }
	}
    }else{
        $cname="produkt0";
        setcookie($cname,$id,time()+1800);
    }
 
Beim klick auf "In Warenkorb" folgendes bauen:

PHP:
$productID = "woher du auch immer deine ID hernimmst";
$productName = "product" . productID;

if(isset($_COOKIE[$productName]) {
    // Produkt ist bereits im Warenkorb
} else {
   // Cookie setzen
   setcookie($productName,"was auch immer hier stehen soll. Die Anzahl wäre gut zb.",time()+1800);
}

so sollten doppellte Einträge erst garnicht zu stande kommen und du kannst dir die Sucherei auf Doppelte Einträge sparren.

musst aber oben in der datei session_start() machen ;)

*korrigiert mich wenn ich mich irren sollte*

Grüß,

iDave
 
Zuletzt bearbeitet:
Es ist irgendwie ewig her, dass ich mal mit php gearbeitet hab ^^

Reicht es nicht, wenn du dir Zeile 5 mal genauer anschaust. Hier prüfst du genau das ab, was du willst. Nur eben statisch und nicht dynamisch.

Du hast die ProduktID und im Cookie steht in Array-Spalte ID doch die ID.

Abgesehen davon könnte jemand möglicherweise auch zwei mal den gleichen Artikel kaufen. ;)

€dit:
Zu spät und
Die Session hat er mit Sicherheit schon vorher gestartet.
 
@Chaos.Gentle
Er fragt erstmal nur den ersten Wert statisch ab. Danach kommt eine dynamische Abfrage. Und wenn der jemand 2 Produkte haben will kann er das im Warenkorb einstellen. Dort wird die Anzahl selbst eingeben.

@iDave
Deine Cookie haben ein anderes Format als meine und würden ziemlich viel über den Haufen werfen. Dafür hat mir dein Vorschlag einen Geistesblitz gebracht. Ich habe einfach eine Hilfsvariable genommen: Sobald irgendwo die Schleife einen Treffer hat und der Cookie mit der id übereinstimmt setzt er die Variable $wert. Dann gucke ich ob $wert ungleich 1 und nur dann kommt ein neuer Cookie dazu.

Code:
$id=$_POST["produkt_id"];
    $i=0;
    
    if (isset($_COOKIE["produkt0"]))
    {
	while($i<100)
	{
	    $cname="produkt".$i;
	    @$cookie = $_COOKIE[$cname];
	    $i++;
	    if ($cookie==$id)
	    {
		$wert=1;
		break;
	    }else{
                $wert=0;
	    }
	}
	if ($wert!=1)
	{
		$j=0;
		while($j<100)
		{
		$j++;
		$cname="produkt".$j;
		    if (isset($_COOKIE[$cname]))
		    {
		    }else{
			setcookie($cname,$id,time()+1800);
			break;
		    }
		}
	}
    }else{
        $cname="produkt0";
        setcookie($cname,$id,time()+1800);
    }
 
Zuletzt bearbeitet:
Ach, ich war irgendwie neben der Spur... -.-

Dachte an das gleiche wie iDave.
 
Zurück
Oben