Asterix: Mehrere If-Abfragen kombinieren?

Hallo Community!

Ich habe ein Problem, bei dem ich seit Monaten nicht weiterkomme :-(

Auf einer Auswahlseite habe ich 5 Checkboxen.
Wenn man die angeklickt kommen entweder 2 radiobuttons, input Felder, oder Checkboxen.

Man schickt dieses Formular per Methode POST ab. Die Variablen habe ich soweit übernommen, nur mein Problem sind die If-Abfragen...

Ziel des Formular ist es eine Log-Datei nicht nur auszulesen sondern auch zu sortieren. Die Sortierung soll nach den eingegebenen Parametern erfolgen.

Im Moment habe ich folgende mögliche Abfragen:

  1. if($Tag == $Tag1)

  2. if($Tag >= $Tag1 && $Tag <= $Tag2)

  3. if($Monat == $Monat1)

  4. if($teil3[1] >= $Monat1 && $teil3[1] <= $Monat2)

  5. if($Jahr == $Jahr1)

  6. if($Jahr >= $Jahr1 && $Jahr <= $Jahr2)

  7. if($Uhrzeit == "10:00")

  8. if($Uhrzeit >= "09:00" && $Uhrzeit <= "10:00")

  9. if($Stunde == $Stunde1)

  10. if($Stunde >= $Stunde1 && $Stunde <= $Stunde2)

  11. if($Minute == $Minute1)

  12. if($Minute >= $Minute1 && $Minute <= $Minute2)

Aber WIE kombiniert man if-Abfragen nach isset-Abfragen??? Die isset-Abfragen habe ich eingebaut, um z.B. festzustellen, ob ein statisches oder ein "von-bis" Datum gefragt ist.

Zum besseren Verständnis (hoffe ich) habe ich hier noch 2 Beispiele:

Wenn die Checkboxen Nr. 1+2 angeklickt wurden - danach die Radiobuttons jeweils Nr. 1 angeklickt und alle options ausgewählt wurden - sollten die if-Abfragen 1, 3, 5, sowie 7 (die Abfragen 9 und 11 würden aufs selbe Ergebnis kommen) gemeinsam ausgeführt werden.
Oder wenn Checkbox Nr. 1 und Radiobutton Nr. 1 angeklickt sind und nur Tag + Monat ausgefüllt sind, dann sollten die Abfragen 1 und 3 ausgeführt werden.

Mir ist klar, dass ich wie immer den komplizierten Weg gegangen bin und man mein Problem sicher auch wesentlich einfacher lösen kann, jedoch schaffe ich es nicht anders.

MfG Sascha

  1. Aber WIE kombiniert man if-Abfragen nach isset-Abfragen???

    Genau, wie Du es bislang schon gemacht hast: if (isset(...) && [bedingung])

    Gruß, LX

    --
    RFC 1925, Satz 2: Egal, wie fest man schiebt, ganz gleich, wie hoch die Priorität ist, man kann die Lichtgeschwindigkeit nicht erhöhen.
  2. Aber WIE kombiniert man if-Abfragen nach isset-Abfragen??? Die isset-Abfragen habe ich eingebaut, um z.B. festzustellen, ob ein statisches oder ein "von-bis" Datum gefragt ist.

    if und isset() sind zwei verschiedene Dinge.

    if erzeugt eine bedinge Verzweigung und erwartet als Argument einen Ausdruck dessen Wahrheitsgehalt ausgewertet wird.

    Die einfachste Verzweigung - bzw der einfachste ausdrück sieht so aus:

    if (true) {  
      echo 'foo';  
    }
    

    Wo das true nun herkommt ist dem if völlig egal.

    z.B. aus einer Variable:

      
    $var = true;  
    if ($var) {  
      echo 'foo';  
    }
    

    Oder aber aus dem Rückgabewert einer Funktion - wie es isset() ist.

      
    $var = 'whatever';  
    if (isset($var)) {  
      echo 'foo';  
    }
    

    Natürlich kann man Teilausdrücke auch beliebig mit Operatoren kombinieren.

      
    if (($var = 'foo' && isset(bar)) || $baz) {  
      echo 'foo';  
    }
    
    1. Natürlich kann man Teilausdrücke auch beliebig mit Operatoren kombinieren.

      if (($var = 'foo' && isset(bar)) || $baz) {
        echo 'foo';
      }

        
      Genau das mit dem Kombinieren versuche ich! Nur leider schaffe ich es nicht...  
      Nehmen wir als Beispiel ein statisches Datum:  
      wenn man den 01. Januar 2010 auf der Suchseite eingibt und sortieren lässt funktioniert alles mit dieser Abfrage  
        
      `if($Tag == $Tag1 && $Monat == $Monat1 && $Jahr == $Jahr1)`{:.language-php}  
        
      sehr gut. Sobald man aber entweder keinen Tag, kein Monat oder kein Jahr auswählt funktioniert die Sortierung nicht mehr...  
        
      
      
      1. if($Tag == $Tag1 && $Monat == $Monat1 && $Jahr == $Jahr1)

        sehr gut. Sobald man aber entweder keinen Tag, kein Monat oder kein Jahr auswählt funktioniert die Sortierung nicht mehr...

        Dann hast du ein logisches Problem möglicherweise interessier dich anstatt einem logischen "und" (&&) auch einfach nur ein "oder" (||) - natürlich kann auch einen Kombination sinnvoll sein, wie in meinem Beispiel mit Klammern gezeigt.

        z.B. wenn (tag = wert ODER tag = nicht gesetzt) UND (monat = wert ODER monat = nicht gsetzt) ...

        Einen Einstieg dazu findest du den PHP-Dokumentationsseiten. Das Denken selbst wirst du dir vorab aber nicht ersparen können.

        1. DANKE!
          mit der richtigen UND / ODER - Setzung hats jetzt einzeln fürs Datum und die Uhrzeit funktioniert.
          Ich werde in den nächsten Tagen versuchen, die restlichen if-Abfragen so aufzubauen und dann zu verknüpfen...

          Danke nochmals, ich melde mich, obs funktioniert hat!

          MfG Sascha