Robert B.: if/OR

Beitrag lesen

Hallo Bernd,

In einem if kann ich doch ein OR nutzen?

if ($ab_datum != "" OR $ab_datum != "0000-00-00")

in der DB steht 0000-00-00 warum wird mir die Ausgabe dennoch angezeigt?

In Ergänzung zu Linuchs' Antwort sei noch darauf hingewiesen, dass in den meisten Programmiersprachen von links nach rechts ausgewertet wird, das heißt:

  • Bei einer Verknüpfung mit oder ist die Bedingung erfüllt, wenn der erste Teilterm wahr ist.
    In deinem Fall prüfst zu zuerst, ob $ab_datum nicht leer ist – ist das erfüllt, ist die gesamte Bedingung wahr und der zweite Ausdruck muss nicht mehr ausgewertet werden. Nur, wenn $ab_datum leer ist, wird der zweite Ausdruck überprüft.
  • Bei einer Verknüpfung mit und bricht der Vergleich dann ab, wenn der erste Teilterm falsch ist, weil der gesamte Ausdruck dann schon nicht mehr wahr werden kann.

In deinem Fall ist vielleicht auch noch die Boolesche Algebra mit ihren Rechenregeln interessant – manchmal wird etwas klarer, wenn man das Gegenteil formuliert und dann komplett negiert, weil man auf das Nichterfüllen einer Bedingung prüfen möchte. Für deinen Code oben gilt bspw.

    ($ab_datum != ""  OR $ab_datum != "0000-00-00")
== !($ab_datum == "" AND $ab_datum == "0000-00-00")

So wird direkt offensichtlich, dass der Gesamtausdruck nicht zum gewünschten Erfolg führt.

Viele Grüße
Robert

0 46

if/OR

Bernd
  • php
  1. 0
    Bernd
    1. 0
      Linuchs
    2. 0
      dedlfix
      1. 0
        Robert B.
        • menschelei
        • programmiertechnik
        1. 0
          Tabellenkalk
      2. 0
        Der Martin
        1. 0
          Matthias Apsel
          • menschelei
      3. 0
        Gunnar Bittersmann
        1. 0
          dedlfix
    3. 0
      Linuchs
  2. 0
    Linuchs
    1. 0
      Bernd
  3. 1
    Robert B.
    • php
    • programmiertechnik
    1. 1
      dedlfix
      1. 0
        Gunnar Bittersmann
    2. 0

      Deppen-Apostroph

      Linuchs
      • menschelei
      1. 0
        Der Martin
        1. 0
          Gunnar Bittersmann
          • menschelei
          • typografie
          1. 0
            Rolf B
        2. 0
          Auge
          1. 0
            Der Martin
          2. 0
            Gunnar Bittersmann
            • menschelei
            • sprache
            1. 0
              Tabellenkalk
            2. 0
              Linuchs
      2. 0
        Robert B.
        • menschelei
        • sprache
  4. 0
    Rolf B
    1. 0
      Matthias Apsel
      1. 0
        Rolf B
        1. 0
          Tabellenkalk
          1. 0
            Rolf B
            1. 0
              Tabellenkalk
              1. 0
                Matthias Apsel
                1. 0
                  Rolf B
    2. 0
      Bernd
      1. 0
        Bernd
      2. 0
        Der Martin
        1. 0
          Bernd
          1. 0
            Rolf B
          2. 0
            Bernd
            1. 0
              Rolf B
              1. 0
                Bernd
                1. 0
                  Rolf B
            2. 0
              Tabellenkalk
              1. -1
                Bernd
                1. 0
                  Gunnar Bittersmann
                  • meinung
                  • zu diesem forum