Ankündigung

Einklappen
Keine Ankündigung bisher.

01.01.1970 wird angezeigt

Einklappen

Neue Werbung 2019

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

  • 01.01.1970 wird angezeigt

    Hallo zusammen,

    ich denke ich habe eine relativ leicht zu beantwortende Frage:

    In der Datenbank ist das Datumsfeld leer. Wurde noch nie beschrieben.

    In der Tabelle wird mir aber 01.01.1970 angezeigt.

    Ich lasse mir das in einem Formular so anzeigen:
    HTML-Code:
    <tr>
      <td>SF1: </td>
      <td> <input type="date" name="SF1" value="<?= date('d.m.Y', strtotime($row["SF1"]));?>"/>  </td>
    
     </tr>

    EDIT:

    FRAGE: Was mache ich falsch, das hier der 1.1.70 ausgegeben wird.

    Ich habe zwischenzeitlich etwas tiefer gegoogelt. Liegt wohl am strtotime das bei keinem Inhalt die 0 ausgibt, was der 1.1.70 ist. ABER was nehme ich da am sinnvollsten?

    In der SqLite DB ist das Format TIMESTAMP hinterlegt.

  • #2
    da steht keine Frage.

    Kommentar


    • #3
      Matze1708

      Ich hätte eine Frage: Hast du schonmal geschaut was date() macht? Welche Parameter verlangt werden? Und was glaubst du was passiert wenn du ("In der Datenbank ist das Datumsfeld leer") einen leeren Wert übergibst.

      Schau genau, denk nach, dann löst sich das von selbst.

      Kommentar


      • #4
        Aber jetzt

        Kommentar


        • #5
          Ich habe zwischenzeitlich etwas tiefer gegoogelt. Liegt wohl am strtotime das bei keinem Inhalt die 0 ausgibt, was der 1.1.70 ist. ABER was nehme ich da am sinnvollsten?
          Alsooo. Du willst den Timestamp 0 (aus deiner DB) im deutschen Format ausgeben, das kann so natürlich nicht funktionieren. Was soll date() aus 0 für eines machen.

          Welches Datum willst du denn im HTML anzeigen? Das heutige? Dann lass den TS einfach weg.

          Code:
          string date ( string $format [, int $timestamp = time() ] )

          Kommentar


          • #6
            Hallo,

            nein ich möchte das Datum aus der Datenbank anzeigen lassen. Oder halt nix, wenn das Feld leer ist.

            Kommentar


            • #7
              Und woran scheiterst du dabei genau? An der Prüfung? if() wird dir helfen.

              Kommentar


              • #8
                PHP-Code:
                <input type="date" name="SF1"
                    value="<?= empty($row['SF1']) ? '' htmlspecialchars(date('d.m.Y'strtotime($row['SF1'])), ENT_COMPAT'UTF-8'?>"
                />
                Du solltest dir übrigens statt "SF1" einen sinnvollen Spaltennamen überlegen und keine kryptische Abkürzung. Und nummerierte Spalten deuten aufen ein fehlerhaftes Datenbankdesign hin.

                Und immer den Kontextwechsel nach HTML (htmlspecialchars()) beachten!

                Kommentar


                • #9
                  Ok. Das kann ich dann als machen? if($row['SF1]==0 ........

                  Kommentar


                  • #10
                    SF1 heißt nix anderes wie SOnderFrei 1 das geht bis 5

                    Kommentar


                    • #11
                      Jetzt muss ich doch noch mal an die Profis eine Frage stellen.

                      Die Anzeige passt jetzt so. Danke.

                      ABER wenn ich nun ein Datum aktualisiere mit folgendem Skript. Dann drückt er mir in jede Spalte wieder das 01.01.1970. SO steht es auch in der Datenbank drin.

                      PHP-Code:
                      <?php
                      $ID 
                      $_POST['ID'];

                      $UMLMorgen htmlspecialchars($_POST["UMLMorgen"]);
                      $UMLAbend htmlspecialchars($_POST["UMLAbend"]);
                      $Bund htmlspecialchars($_POST["BUNDESLAND"]);
                      $Info htmlspecialchars($_POST["Info"]);

                      $SF1 htmlspecialchars(date('Y-m-d'strtotime($_POST["SF1"])));
                      $SF2 htmlspecialchars(date('Y-m-d'strtotime($_POST["SF2"])));
                      $SF3 htmlspecialchars(date('Y-m-d'strtotime($_POST["SF3"])));
                      $SF4 htmlspecialchars(date('Y-m-d'strtotime($_POST["SF4"])));
                      $SF5 htmlspecialchars(date('Y-m-d'strtotime($_POST["SF5"])));




                      try
                        {
                          
                      //open the database
                          
                      $db = new PDO('sqlite:mysqliteCFW.db');





                      $sql "UPDATE
                        tbl_Telefone
                        SET
                        UMLMorgen='"
                      .$UMLMorgen."',
                        UMLAbend='"
                      .$UMLAbend."',
                        BUNDESLAND='"
                      .$Bund."',
                        Info='"
                      .$Info."',
                        SF1='"
                      .$SF1."',
                        SF2='"
                      .$SF2."',
                        SF3='"
                      .$SF3."',
                        SF4='"
                      .$SF4."',
                        SF5='"
                      .$SF5."'
                        Where ID = '"
                      .$ID."' ";




                         
                      $db->exec($sql);



                          
                      // close the database connection
                          
                      $db NULL;
                        }
                        catch(
                      PDOException $e)
                        {
                          print 
                      'Exception : '.$e->getMessage();
                        }

                        
                      header('Location: http://' $_SERVER['HTTP_HOST'] . '/cfw/index.php');
                          exit;
                      ?>
                      Muss ich dann jeden Post noch mal abfangen ob leer?

                      Kommentar


                      • #12
                        PHP-Code:
                        $UMLMorgen htmlspecialchars($_POST["UMLMorgen"]);
                        $UMLAbend htmlspecialchars($_POST["UMLAbend"]);
                        $Bund htmlspecialchars($_POST["BUNDESLAND"]);
                        $Info htmlspecialchars($_POST["Info"]);

                        $SF1 htmlspecialchars(date('Y-m-d'strtotime($_POST["SF1"])));
                        $SF2 htmlspecialchars(date('Y-m-d'strtotime($_POST["SF2"])));
                        $SF3 htmlspecialchars(date('Y-m-d'strtotime($_POST["SF3"])));
                        $SF4 htmlspecialchars(date('Y-m-d'strtotime($_POST["SF4"])));
                        $SF5 htmlspecialchars(date('Y-m-d'strtotime($_POST["SF5"]))); 
                        htmlspecialchars() an der Stelle ist Blödsinn. Mach das weg. Das ist nur für die Ausgabe zu HTML hin und nicht für SQL / Verarbeitung der Request Daten.

                        PHP-Code:
                         $db->exec($sql); 
                        Nutze Prepared Stamtents (den Link mit einem Beispiel hab ich dir schon öfters gezeigt).

                        SO steht es auch in der Datenbank drin.
                        Dann schau was du wirlklich an die DB schickst in der SQL-Query und schau auch was du wirklich zurückbekommst. Das ist nicht schwer, das muss man halt einfach mal auch nur machen. var_dump() hilft dir.

                        Siehe auch: https://php-de.github.io/jumpto/faq/#debugging und https://php-de.github.io/jumpto/sql/

                        Kommentar


                        • #13
                          Zitat von Matze1708 Beitrag anzeigen
                          SF1 heißt nix anderes wie SOnderFrei 1 das geht bis 5
                          Und was heißt das? Spalten solltest du übrigens in Englisch benennen. Und in MySQL solltest du den Mischmasch aus Groß- und Kleinbuchstaben vermeiden. Schreib am besten alles klein.

                          Kommentar


                          • #14
                            Zitat von Matze1708 Beitrag anzeigen
                            Muss ich dann jeden Post noch mal abfangen ob leer?
                            Warum soll den 2 Posts später plötzlich was anderes passieren als wie davor? Fütterst du date() mit ungültigen Daten kommt 01-01-1970 raus...

                            Kommentar


                            • #15
                              Ich habe das jetzt mit prepare umgebaut. Habe ich das so richtig gemacht? Ich mag ja verstehen und lernen

                              PHP-Code:
                              <?php
                              $ID 
                              $_POST['ID'];

                              $UMLMorgen $_POST["UMLMorgen"];
                              $UMLAbend $_POST["UMLAbend"];
                              $Bund $_POST["BUNDESLAND"];
                              $Info $_POST["Info"];

                              $SF1 date('Y-m-d'strtotime($_POST["SF1"]));
                              $SF2 date('Y-m-d'strtotime($_POST["SF2"]));
                              $SF3 date('Y-m-d'strtotime($_POST["SF3"]));
                              $SF4 date('Y-m-d'strtotime($_POST["SF4"]));
                              $SF5 date('Y-m-d'strtotime($_POST["SF5"]));




                              try
                                {
                                  
                              //open the database
                                  
                              $db = new PDO('sqlite:mysqliteCFW.db');




                              $sql "UPDATE tbl_Telefone "
                                
                              "SET "
                                
                              "UMLMorgen= :UMLMorgen, "
                                
                              "UMLAbend= :UMLAbend, "
                                
                              "BUNDESLAND= :Bund, "
                                
                              "Info= :Info, "
                                
                              "SF1= :SF1, "
                                
                              "SF2= :SF2, "
                                
                              "SF3= :SF3, "
                                
                              "SF4= :SF4, "
                                
                              "SF5= :SF5"
                                
                              "Where ID = :ID ";




                               
                              $stmt $this->pdo->prepare($sql);

                                      
                              // passing values to the parameters
                                      
                              $stmt->bindValue(':ID'$ID);
                                      
                              $stmt->bindValue(':UMLMorgen'$UMLMorgen);
                                
                              $stmt->bindValue(':UMLAbend'$UMLAbend);
                                
                              $stmt->bindValue(':Bund'$Bund);
                                
                              $stmt->bindValue(':Info'$Info);
                                
                              $stmt->bindValue(':SF1'$SF1);
                                
                              $stmt->bindValue(':SF2'$SF2);
                                
                              $stmt->bindValue(':SF3'$SF3);
                                
                              $stmt->bindValue(':SF4'$SF4);
                                
                              $stmt->bindValue(':SF5'$SF5);


                                      
                              // execute the update statement
                                      
                              return $stmt->execute();  



                                  
                              // close the database connection
                                  
                              $db NULL;
                                }
                                catch(
                              PDOException $e)
                                {
                                  print 
                              'Exception : '.$e->getMessage();
                                }

                                
                              header('Location: http://' $_SERVER['HTTP_HOST'] . '/cfw/index.php');
                                  exit;
                              ?>

                              Kommentar

                              Lädt...
                              X