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

Beitrag lesen

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