If-Anweisung liefert verkehrte Ausgabe

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • If-Anweisung liefert verkehrte Ausgabe

    Hallo Zusammen,

    in meinem Script wird immer nur der erste Teil der If Anweisung
    ausgegeben, sollte aber aber bei Datum älter als 90 Tagen
    den else-Teil ausgeben.

    Bin wenig erfahren mit PHP

    Mein QT

    ----------------------------------------------
    PHP-Code:
    $date date_create($datensatz[datum]);
    date_sub($datedate_interval_create_from_date_string('90 days'));
    $abfragedatum date_format($date'Y-m-d');                                                                
    if (
    $datensatz[datum] >= $abfragedatum)                                                                
    {
    echo
    "<td>$datensatz[datum]</td></br>"//Dieser Teil wird immer ausgegeben                                                            
    }else 
    {                                                                        
    echo 
    "<td><form> </form></td>";                                                                         

    -----------------------------------------------------

    Danke für Eure Hilfe
    Peter Heldmann

  • #2
    Was hat deine Kontrollausgabe der beiden Werte ergeben?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Hallo wahsaga,

      Danke für deine Hilfe

      $datensatz[datum] = gibt das Datum aus der DB zurück
      $abfragedatum = gibt den Wert $datensatz[datum] - 90 Tage zurück

      ich bin mir nicht sicher ob hier alles passt:

      if ($datensatz[datum] >= $abfragedatum) // gibt nur $datensatz[datum] aus
      if ($datensatz[datum] < $abfragedatum) // gibt nur <form> aus

      Gruß Peter

      Kommentar


      • #4
        Zeig mal konkrete Werte bitte.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          if ($datensatz[datum] >= $abfragedatum) // gibt 2015-05-11 aus
          if ($datensatz[datum] < $abfragedatum) // gibt 2015-02-11 aus

          Kommentar


          • #6
            Also $abfragedatum gibt imm 3 Monate kleiner aus

            Kommentar


            • #7
              Zweiter Versuch. Den ersten hat das Security-Token-Monster gefressen.

              Zitat von Peter_AM Beitrag anzeigen
              in meinem Script wird immer nur der erste Teil der If Anweisung
              ausgegeben, sollte aber aber bei Datum älter als 90 Tagen
              den else-Teil ausgeben.
              Punkt Eins: DateTime-Objekte lassen sich direkt vergleichen. Vergleiche mit formatierten Datumsstrings sind nicht nötig und verursachen nur Probleme. Folgendes reicht also:

              PHP-Code:
              $date date_create($datensatz['datum']);
              $abfragedatum = clone $date;
              date_sub($abfragedatumdate_interval_create_from_date_string('90 days'));
              if (
              $date >= $abfragedatum) {
              }
              else {

              Punkt zwei: Wie dir an dem vereinfachten Code jetzt vielleicht auffällt, ist deine Vergleichsbasis falsch gewählt: $date ist immer 90 Tage aktueller als $abfragedatum. Deswegen kommt immer der If-Zweig zum Zug.

              Vergleichst du stattdessen mit einem aktuellen Zeitpunkt, wie beispielsweise "Jetzt" ("now"), klappts auch mit der Else:

              PHP-Code:
              $date date_create($datensatz['datum']);
              $abfragedatum date_create('now');
              $abfragedatum date_sub($abfragedatumdate_interval_create_from_date_string('90 days'));
              if (
              $date >= $abfragedatum) {
              }
              else {

              P.S.: Deine Variablen-Benennung ist grausam. Lege dich auf eine Sprache fest (Englisch oder Deutsch). Wähle aussagekräftige Namen. Dann wird dein Code lesbarer und man findet solche (eigentlich recht einfachen) Logikfehler auch schneller.
              Zuletzt geändert von fireweasel; 13.05.2015, 14:02.
              Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

              Kommentar


              • #8
                Riesen Dank

                Hallo fireweasel,

                danke Dir.
                Hab`s nun verstanden und so umgesetzt.
                Es funzt einwandfrei.

                Super erklärt mit Beispiel

                Manchmal denkt man einfach zu kompliziert.....

                Hast was gut bei mir...

                Danke Peter

                Kommentar

                Lädt...
                X