Probleme mit IF Abfrage

MXYZPTLK

Grünschnabel
Hallo zusammen,
ich habe ein Problem bei dessen Lösung ich eure Hilfe brauche.

Ich habe 3 Werte deren Existenz ich einzeln und/oder in Kombination abfragen möchte.

Ich habe folgende Abfrage erstellt:

PHP:
if (($_SESSION['z_zustand']))
{ $z_where="AND fld_zst = '".$_SESSION['z_zustand']."'"; $_SESSION['z_zustand']=$_SESSION['z_zustand'];}

if (($_SESSION['z_zustand'])&&($_SESSION['z_farbe']))
{ $z_where="AND fld_zst = '".$_SESSION['z_zustand']."' AND fld_farbe = '".$_SESSION['z_farbe']."'"; $_SESSION['z_zustand']=$_SESSION['z_zustand']; $_SESSION['z_farbe']=$_SESSION['z_farbe'];}

if (($_SESSION['z_zustand'])&&($_SESSION['z_farbe'])&&($_SESSION['z_material']))
{ $z_where="AND fld_zst = '".$_SESSION['z_zustand']."' AND fld_farbe = '".$_SESSION['z_farbe']."' AND fld_material = '".$_SESSION['z_material']."'"; $_SESSION['z_zustand']=$_SESSION['z_zustand']; $_SESSION['z_farbe']=$_SESSION['z_farbe']; $_SESSION['z_material']=$_SESSION['z_material'];}

die auch soweit funktioniert. Sobald ich die Abfrage dann um diesen Parameter erweitere:

PHP:
if (($_SESSION['z_zustand'])&&($_SESSION['z_material']))
{ $z_where="AND fld_zst = '".$_SESSION['z_zustand']."' AND fld_material = '".$_SESSION['z_material']."'"; $_SESSION['z_zustand']=$_SESSION['z_zustand']; $_SESSION['z_material']=$_SESSION['z_material'];}

funktionieren die vorherigen Abfragen nicht mehr, bzw. ich kann nicht mehr alle drei Parameter zusammen auf Existenz prüfen.

Was mache ich falsch bzw. was muß geändert werden.
Bin für jeden Tipp dankbar.

Gruß,
Nik
 
Sieht etwas komisch aus. Was für Werte sind den in den Session-Variablen gespeichert? Um auf Existens zu prüfen würde ich es wie folgt machen.
PHP:
if (isset($_SESSION['z_zustand']))
{ $z_where="AND fld_zst = '".$_SESSION['z_zustand']."'"; $_SESSION['z_zustand']=$_SESSION['z_zustand'];}

http://www.php.net/isset
 
@SnEaKy:

Also... wenn ich ISSET richtig verstehe wird nur überprüft ob eine Variable vorhanden ist und nicht deren Inhalt. Wenn ich ISSET einsetzt funktioniert mein Script auch nicht, da, wenn ich in meiner Combo-Box einen leeren Eintrag auswähle, und das muß sein, weil ich auch nach einzelnen Merkmalen suchen will, wird z.B. "AND fld_zst=' '" ausgegeben und das löst mein Problem nicht.

Ich habe nun nach langem rumprobieren die Reihenfolge umgestellt und jetzt t es. Die Suche mit allen UND/ODER Varianten klappt.

PHP:
if ($_POST['zustand']){$_SESSION['z_zustand']=$_POST['zustand'];}
elseif ($_POST['sform']=='sform'){$_SESSION['z_zustand']='';}

if ($_POST['farbe']){$_SESSION['z_farbe']=$_POST['farbe'];}
elseif ($_POST['sform']=='sform'){$_SESSION['z_farbe']='';}

if ($_POST['material']){$_SESSION['z_material']=$_POST['material'];}
elseif ($_POST['sform']=='sform'){$_SESSION['z_material']='';}

if ($_POST['marke']){$_SESSION['z_marke']=$_POST['marke'];}
elseif ($_POST['sform']=='sform'){$_SESSION['z_marke']='';}



if (($_SESSION['z_material']))
{ $z_where="AND fld_material = '".$_SESSION['z_material']."'"; $_SESSION['z_material']=$_SESSION['z_material'];}

if (($_SESSION['z_farbe']))
{ $z_where="AND fld_farbe = '".$_SESSION['z_farbe']."'"; $_SESSION['z_farbe']=$_SESSION['z_farbe'];}

if (($_SESSION['z_zustand']))
{ $z_where="AND fld_zst = '".$_SESSION['z_zustand']."'"; $_SESSION['z_zustand']=$_SESSION['z_zustand'];}

if (($_SESSION['z_zustand'])&&($_SESSION['z_farbe']))
{ $z_where="AND fld_zst = '".$_SESSION['z_zustand']."' AND fld_farbe = '".$_SESSION['z_farbe']."'"; $_SESSION['z_zustand']=$_SESSION['z_zustand']; $_SESSION['z_farbe']=$_SESSION['z_farbe'];}

if (($_SESSION['z_zustand'])&&($_SESSION['z_material']))
{ $z_where="AND fld_zst = '".$_SESSION['z_zustand']."' AND fld_material = '".$_SESSION['z_material']."'"; $_SESSION['z_zustand']=$_SESSION['z_zustand']; $_SESSION['z_material']=$_SESSION['z_material'];}

if (($_SESSION['z_farbe'])&&($_SESSION['z_material']))
{ $z_where="AND fld_farbe = '".$_SESSION['z_farbe']."' AND fld_material = '".$_SESSION['z_material']."'"; $_SESSION['z_farbe']=$_SESSION['z_farbe']; $_SESSION['z_material']=$_SESSION['z_material'];}

if (($_SESSION['z_zustand'])&&($_SESSION['z_farbe'])&&($_SESSION['z_material']))
{ $z_where="AND fld_zst = '".$_SESSION['z_zustand']."' AND fld_farbe = '".$_SESSION['z_farbe']."' AND fld_material = '".$_SESSION['z_material']."'"; $_SESSION['z_zustand']=$_SESSION['z_zustand']; $_SESSION['z_farbe']=$_SESSION['z_farbe']; $_SESSION['z_material']=$_SESSION['z_material'];}
 
So ganz richtig kann das auch nicht sein. Von der Logik her müssten deine abgefragten Variablen in der IF-Bedingung ja nur Werte mit true oder false enthalten.

Ganz komisch...
 
Zurück