Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP Datumsvergleich aus SQL Abfrage

Einklappen

Neue Werbung 2019

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

  • PHP Datumsvergleich aus SQL Abfrage

    Hallo,
    ich habe eine SQL Datumsabfrage, welche ich mit einem statischen Datum vergleichen möchte.
    Aus der Abfrage soll der 13.März 2019 einen Hinweis erhalten. Mein Problem ist, dass immer die if echo Ausgabe kommt, auch wenn das statische Datum auf einen anderen Tag gesetzt wird.
    Bitte um eine Hilfestellung. Vielen Dank!

    HTML-Code:
    <?php
    date_default_timezone_set('UTC');
    $date1 = "$this->date";        
    $date2 = "13. März 2019";
    $dateTimestamp1 = strtotime($date1);
    $dateTimestamp2 = strtotime($date2);
    
    if ($dateTimestamp1 == $dateTimestamp2)
     echo "$this->date = $date2";
    else
     echo "$this->date != $date2";
    ?>

  • #2
    Ganz banal: $dateTimestamp1 == $dateTimestamp2 ergibt FALSE. Warum das so ist? Guck dir die beiden Werte mal mit var_dump() an, kann dir ja so hier auch keiner sagen was da drin steht um das zu überprüfen. Aber wenn das erste Datum aus der Datenbank kommt, dann kannst du die Abfrage ja auch direkt da machen, so alà: SELECT datum1 = datum 2; da kommt dann auch TRUE/FALSE raus.
    [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

    Kommentar


    • #3
      strtotime kennt 13 März nicht, da must du schon einen anderen Format angeben oder zumindestens Englisch schreiben. Mit invaliden Datumsformat kriegst du false, und false == false also kommst du in das if
      apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

      Kommentar


      • #4
        Danke für Eure Rückmeldung. Habe var_dump($date1, $date2); hinzugefügt:
        HTML-Code:
        <?php
        date_default_timezone_set('UTC');
        $date1 = "$this->date";        
        $date2 = "14. März 2019";
        $dateTimestamp1 = strtotime($date1);
        $dateTimestamp2 = strtotime($date2);
        var_dump($date1, $date2);
        if ($dateTimestamp1 == $dateTimestamp2)
         echo "$this->date = $date2";
        else
         echo "$this->date != $date2";
        ?>
        Ausgabe lautet:
        string(14) "13. März 2019" string(14) "14. März 2019"
        13. März 2019 = 14. März 2019

        Der Vergleich paßt einfach nicht.

        Kommentar


        • #5
          Irgendwie ist das wirr das du oben produziert. Warum hast du das Datum so in der DB oder welches Format ist das?

          Und bitte entferne bei $this->date die Anführungzeichen, das tut beim Hinschauen weh. https://php-de.github.io/jumpto/code...s-doubleqoutes
          Mach mal ein var_dump() auf das was du wirklich vergleichst.

          PHP-Code:
          date_default_timezone_set('UTC');

          $date1 "2019-03-14"// ich habe hier kein $this->date
          $date2 "2019-03-14";

          $dateTimestamp1 strtotime($date1);
          $dateTimestamp2 strtotime($date2);

          var_dump($dateTimestamp1$dateTimestamp2);
          var_dump$dateTimestamp1 == $dateTimestamp2 );
          /*
          int(1552521600)
          int(1552521600)
          bool(true)
          */ 
          The string "()()" is not palindrom but the String "())(" is.

          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar


          • #6
            Zitat von Cbeck Beitrag anzeigen
            Danke für Eure Rückmeldung. Habe var_dump($date1, $date2); hinzugefügt:
            HTML-Code:
            <?php
            date_default_timezone_set('UTC');
            $date1 = "$this->date";
            $date2 = "14. März 2019";
            $dateTimestamp1 = strtotime($date1);
            $dateTimestamp2 = strtotime($date2);
            var_dump($date1, $date2);
            if ($dateTimestamp1 == $dateTimestamp2)
            echo "$this->date = $date2";
            else
            echo "$this->date != $date2";
            ?>
            Ausgabe lautet:
            string(14) "13. März 2019" string(14) "14. März 2019"
            13. März 2019 = 14. März 2019

            Der Vergleich paßt einfach nicht.
            var_dump(strtotime($date1)); //hier kommt false raus
            beim zweiten auch, false == false
            du darfst halt kein "März" rein schreiben sondern March
            apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

            Kommentar


            • #7
              Cbeck was willst du eigentlich genau machen? Eine Liste und wenn das "laufende" Datum ein spezielles ist, dann hervorherben?

              Schau mal so als Ansatz für dich.. Willst du sowas machen?

              PHP-Code:
              $theDate '2019-09-15'// soll hervorgehoben werden

              $dt = new DateTime('', new DateTimeZone('Europe/Vienna'));  // heute

              for ($i 1$i <= 10$i++) {     // zB Liste für die nächsten 10 Tage von heute weg

                  
              $iso $dt->format('Y-m-d');
                  echo 
              $iso;
                  if (
              $iso == $theDate) {
                      echo 
              " ** HERVORGEHOBEN**";
                  }
                  echo 
              "\n";
                  
              $dt->modify('+ 1 day');
              }

              /*
              2019-09-12
              2019-09-13
              2019-09-14
              2019-09-15 ** HERVORGEHOBEN**
              2019-09-16
              2019-09-17
              2019-09-18
              2019-09-19
              2019-09-20
              2019-09-21
              */ 
              The string "()()" is not palindrom but the String "())(" is.

              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
              PHP.de Wissenssammlung | Kein Support per PN

              Kommentar


              • #8
                Danke Euch allen. Wieder was dazu gelernt.
                Ich habe den ganzen Part $dateTimestamp1 = strtotime($date1); rausgeschmissen und den Vergleich abgeändert.
                Keep simple und stupid. Jetzt läufts. Man tastet sich halt langsam heran!

                Wofür das Ganze: Ich habe verschiedene Eventeinträge, bei denen der Terminstart und Dauer in der SQL abgespeichert und im Frontend angezeigt werden.
                Wenn ein Event auf ein gesetztes Datum fällt, dann soll nicht das Eventdatum angezeigt werden, sondern ein Hinweis.

                HTML-Code:
                <?php
                $date1 = $this->date;        
                $date2 = "13. März 2019";
                
                if ($date1 == $date2)
                 echo "$this->date = $date2";
                else
                 echo "$this->date != $date2";
                ?>

                Kommentar


                • #9
                  "13. März 2019"
                  Dh du hast das Datum wirklich so in der DB? Bzw. wie oben schon gefragt, welches Format hat das Feld in der DB wo das Datum steht?
                  The string "()()" is not palindrom but the String "())(" is.

                  Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                  PHP.de Wissenssammlung | Kein Support per PN

                  Kommentar


                  • #10
                    Das Datum wird nummerische über einen Datums-Picker ausgewählt, wird aber scheinbar so ausgegeben. Bin jetzt für den Zeitpunkt glücklich!

                    Kommentar


                    • #11
                      Zitat von Cbeck Beitrag anzeigen
                      Das Datum wird nummerische über einen Datums-Picker ausgewählt, wird aber scheinbar so ausgegeben. Bin jetzt für den Zeitpunkt glücklich!
                      Also das Problem in die Zukunft verschoben. Hauptsache man ist in der Gegenwart glücklich.

                      Kommentar


                      • #12
                        Zitat von Cbeck Beitrag anzeigen
                        Das Datum wird nummerische über einen Datums-Picker ausgewählt, wird aber scheinbar so ausgegeben. Bin jetzt für den Zeitpunkt glücklich!
                        Dann solltest du dem Datums-Picker wohl sagen in welchem Format er das Datum liefern soll - oder einfach ein <input> mit type="date" verwenden.

                        Kommentar


                        • #13
                          Zitat von Cbeck Beitrag anzeigen
                          über einen Datums-Picker ausgewählt
                          Über welchen? Würde mich wundern wenn man da das Datumsformat nicht konfig. kann.

                          The string "()()" is not palindrom but the String "())(" is.

                          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                          PHP.de Wissenssammlung | Kein Support per PN

                          Kommentar

                          Lädt...
                          X