Enrico: Denkfehler bei if-Abfrage mit mehreren Möglichkeiten?

Guten Abend,

ich habe ein Problem mit der Abfrage, ob ein Artikelname bereits als Element unter $_SESSION["Warenkorb"][$x] exisitert, um ein doppeltes Anlegen zu vermeiden.

Hierbei prüfe ich folgende Fälle:

  1. "F"(arbe) besteht* und "G"(röße) besteht nicht** und $_SESSION["Warenkorb"][$x]["F"] besteht und $_SESSION["Warenkorb"][$x]["F"] ist gleich "F"
       Beim abzulegenden Artikel konnte ich eine Farbe, aber keine Größe auswählen

  2. "G" besteht und "F" besteht nicht und $_SESSION["Warenkorb"][$x]["G"] besteht und $_SESSION["Warenkorb"][$x]["G"] ist gleich "G"
       Beim abzulegenden Artikel konnte ich eine Größe, aber keine Farbe auswählen

  3. "F"(arbe) besteht* und "G"(röße) besteht nicht** und $_SESSION["Warenkorb"][$x]["F"] besteht und $_SESSION["Warenkorb"][$x]["F"] ist gleich "F"
       und
       "G" besteht und "F" besteht nicht und $_SESSION["Warenkorb"][$x]["G"] besteht und $_SESSION["Warenkorb"][$x]["G"] ist gleich "G"

Beim abzulegenden Artikel konnte ich sowohl eine Farbe, als auch eine Größe auswählen

*  Die Variable ist nicht "false"
** Die Variable ist "false"

Hier der zugehörige php-Code:

if (isset ($_GET["F"]))  
{  
   $F = $_GET["F"];  
  
   array_push ($Temp, $F);  
}  
else  
   $F = false;  
  
if (isset ($_GET["G"]))  
{  
   $G = $_GET["G"];  
  
   array_push ($Temp, $G);  
}  
else  
   $G = false;  
  
if ($_SESSION["Warenkorb"][$x]["A"] == $_GET["W"]) <---  
{  
   if (($F && !$G && isset ($_SESSION["Warenkorb"][$x]["F"]) && $_SESSION["Warenkorb"][$x]["F"] == $F) ||  
       ($G && !$F && isset ($_SESSION["Warenkorb"][$x]["G"]) && $_SESSION["Warenkorb"][$x]["G"] == $G) ||  
       ($G && $F  && isset ($_SESSION["Warenkorb"][$x]["G"]) && $_SESSION["Warenkorb"][$x]["G"] == $G  &&  
                     isset ($_SESSION["Warenkorb"][$x]["F"]) && $_SESSION["Warenkorb"][$x]["F"] == $F))  
   {  
      $Gefunden = true;  
  
      break;  
   }  
}

Der aufgeführte Code funktioniert und auch die mit "<---" markierte Abfrage greift, wenn ich einen gleichnamigen Artikel erneut ablegen will, aber nicht die darauffolgende, auf vier Zeilen aufgeteilte Abfrage.

Welchen Logikfehler habe ich hier gemacht?

Danke und Gruß,
Enrico

  1. Tach!

    Welchen Logikfehler habe ich hier gemacht?

    Wie hast du versucht das herauszufinden? Du kannst doch von jedem Teilausdruck (erstmal mit den geklammerten beginnen) mit var_dump() das Ergebnis anzeigen lassen. Dann tausch die Teilausdrücke durch ihr Ergebnis (zumindest auf Papier oder in Gedanken) und schau mal, was dann rauskommt.

    dedlfix.

    1. Hallo dedlfix,

      danke für Deine Antwort.

      Wie hast du versucht das herauszufinden?

      Ich habe, dank Deines Hinweises, jetzt mittlerweile eine Vermutung, werde dies aber erst später testen können, denn ich muss jetzt dringend schlafen.

      Ich melde mich dann später wieder.

      Gruß,
      Enrico

  2. Hallo dedlfix,

    dass meine Abfrage nicht wie beabsichtigt funktioniert hat, lag alleine an einem fehlenden $_GET.

    Ich habe somit zu einer bestehenden Menge eine nicht existente Menge addiert und das kann nicht klappen.

    Gruß,
    Enrico

    1. Hi,

      dass meine Abfrage nicht wie beabsichtigt funktioniert hat, lag alleine an einem fehlenden $_GET.

      Ich habe somit zu einer bestehenden Menge eine nicht existente Menge addiert und das kann nicht klappen.

      Ja hast du denn dein error_reporting immer noch nicht auf einen für’s Entwicklen geeigneten Wert eingestellt …?

      MfG ChrisB

      --
      RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?