datum RICHTIG eintragen und auslesen

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

  • datum RICHTIG eintragen und auslesen

    tach jungs !

    hätte mal ne grundsätzliche frage dazu wie man am besten ein datum in die datenbank einträgt.

    ich weiß, ich kenne die such-funktion hier im forum, aber da steht zu diesem thema soviel zeug drin, was ich alles gar nicht gebrauchen kann, meine eigentliche frage kann ich mir selbst darin nicht beatworten.

    ich trage zur zeit in die db das datum im folgenden format ein:

    $datum=$jahr."-".$monat."-".$tag;

    entspricht z.B.

    $datum="1999-11-03";

    in meiner db habe ich ein feld vom typ "date", dort trage ich dann $datum ein.

    Jetzt wollte ich fragen ob so alles richtig ist oder ob ich mir wenn ich das datum so eintrage irgendwelche möglichkeiten verbaue, z.B. das Datum zu sortieren oder ähnliches...

    Ausserdem wollte ich auch noch fragen, wenn ich das Datum auslesen will in folgendem Format:

    Montag, 3. November 1999

    bekomm ich das auch hin, also den 2. Teil, aber nicht den Wochentag (Ist mir vorerst wurscht ob auf englisch oder deutsch).

    momentan würde ich das so auslesen:

    PHP-Code:
     $name_monat["01"]    =   "Januar";
     
    $name_monat["02"]    =   "Februar";
     
    $name_monat["03"]    =   "März";
     
    $name_monat["04"]    =   "April";
     
    $name_monat["05"]    =   "Mai";
     
    $name_monat["06"]    =   "Juni";
     
    $name_monat["07"]    =   "Juli";
     
    $name_monat["08"]    =   "August";
     
    $name_monat["09"]    =   "September";
     
    $name_monat["10"]  =   "Oktober";
     
    $name_monat["11"]  =   "November";
     
    $name_monat["12"]  =   "Dezember";


    $query="SELECT datum from michi WHERE id=3";
    $result mysql_query($query) or die ("Error in query: $query. " mysql_error());
    $row=mysql_fetch_object($result);

    $jahr=substr($row->datum,0,4);
    $num_monat=substr($row->datum,5,2);
    $num_tag=substr($row->datum,8);

    $monat  =  $name_monat[$num_monat];

    print  
    "$num_tag$monat $jahr"
    Ist diese substr Methode anfällig ?

    Ich weiß, jede menge fragen, aber diese Datum-Funktionen sind mir noch nicht wirklich geheuer...

    Vielen Dank für jede Antwort, muc

  • #2
    schau dir mal die DATE_FORMAT funktion an

    Kommentar


    • #3
      hätte mal ne grundsätzliche frage dazu wie man am besten ein datum in die datenbank einträgt.
      *VERSCHIEB* nach sql.


      das feld in der db sollte DATETIME oder TIMESTAMP sein. ersteres ist mein favorit..

      nutze auch DATE_FORMAT() für die ausgaben. dein substr() ist quatsch.
      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


      Kommentar


      • #4
        Original geschrieben von Abraxax
        *VERSCHIEB* nach sql.


        das feld in der db sollte DATETIME oder TIMESTAMP sein. ersteres ist mein favorit..

        nutze auch DATE_FORMAT() für die ausgaben. dein substr() ist quatsch.
        DATE geht aber auch ... zumindest wenn er keine Zeitangabe braucht ...

        DATE_FORMAT() formatiert allerdings ein englisches Datum ...

        Wie bereits mehrfach erwähnt verwende ich gerne UNIX_TIMESTAMP() zur abfrage ... und formatiere dann in php unter Verwendung von setLocale() auch wenn dann hier wieder jemand rumheult das setLocale() nicht bei jedem Provider richtig funktioniert ... ich bin eben mein eigener Provider ... bei mir funktioniert es richtig ... !
        carpe noctem

        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

        Kommentar


        • #5
          Original geschrieben von goth
          DATE geht aber auch ... zumindest wenn er keine Zeitangabe braucht ...
          das ist wahr. ich bin jetzt nur von date+time ausgegangen.

          Original geschrieben von goth
          DATE_FORMAT() formatiert allerdings ein englisches Datum ...
          falsch. du kann einen string angeben, wie das datum formatiert werden soll. dabei spielt die sprache keine rolle.
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #6
            Original geschrieben von Abraxax
            das ist wahr. ich bin jetzt nur von date+time ausgegangen.

            falsch. du kann einen string angeben, wie das datum formatiert werden soll. dabei spielt die sprache keine rolle.
            Ja genau ... und wenn ich dann ein %M angebe bekomme ich einen Monatsnamen : January..December ... und der ist deutsch ... ?!

            ... nein sicher ... das regelst Du dann mit 'nem str_replace() ... aber warum ... wenn es 'ne fertige Funktion dafür gibt ...
            carpe noctem

            [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
            [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

            Kommentar


            • #7
              Original geschrieben von goth
              Ja genau ... und wenn ich dann ein %M angebe bekomme ich einen Monatsnamen : January..December ... und der ist deutsch ... ?!
              ach das meinst du... ich mache i.d.r. nur TT.MM.JJJJ und habe dadurch nicht an den 'namen' des monats gedacht.

              und nein, ich würde das nicht mit str_replace machen. %W für wochentag war doch richtig oder? jedenfalls dann eben über ein vordefiniertes array. dann kann ich auch unabhängig von set_locale() arbeiten.
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #8
                Original geschrieben von Abraxax
                und nein, ich würde das nicht mit str_replace machen. %W für wochentag war doch richtig oder? jedenfalls dann eben über ein vordefiniertes array. dann kann ich auch unabhängig von set_locale() arbeiten.
                carpe noctem

                [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                Kommentar


                • #9
                  er legt sich ein array an: array( 0=> "montag","dienstag" etc.

                  dann kann man ohne set_locale und dem englischen datum den deutschen wochentag ausgeben ...

                  man kann sich aber auch ne frikadelle ans knie nageln
                  h.a.n.d.
                  Schmalle

                  http://impressed.by
                  http://blog.schmalenberger.it



                  Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                  ... nur ohne :-)

                  Kommentar


                  • #10
                    wenn ich mit DATE_FORMAT() die nummer des wochentages ermitteln kann, kann ich diese als index für ein array nutzen, in dem die wochentage enthalten sind, wie ich sie brauche.
                    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                    Kommentar


                    • #11
                      Original geschrieben von schmalle
                      man kann sich aber auch ne frikadelle ans knie nageln
                      zeig mir mal ein foto von deinem knie...
                      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                      Kommentar


                      • #12
                        Original geschrieben von Abraxax
                        zeig mir mal ein foto von deinem knie...
                        OffTopic:
                        ich sagte man kann nicht "ich hab"
                        h.a.n.d.
                        Schmalle

                        http://impressed.by
                        http://blog.schmalenberger.it



                        Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                        ... nur ohne :-)

                        Kommentar


                        • #13
                          Original geschrieben von Abraxax
                          wenn ich mit DATE_FORMAT() die nummer des wochentages ermitteln kann, kann ich diese als index für ein array nutzen, in dem die wochentage enthalten sind, wie ich sie brauche.
                          Dann würde ich mich noch mal in Ruhe hinsetzen und überlegen ... vielleicht gibt's ja noch 'nen Weg der umständlicher ist ... !

                          Letztlich bedeutet das wenn Du "Dienstag, 25. November 2003" ausgeben willst du trotzdem entweder mit Textersatz arbeiten mußt ... oder indem Du das Datum numerisch formatierst ... explodierst ... und es dann (übersetzt) wieder zusammenbaust ... super Idee das ... !

                          Und wenn Dein Script 10 Sekunden Pause machen soll machst du das so:
                          PHP-Code:
                          for ( $i=0$i<10$i++ ) { sleep(1); } 
                          anstatt ein einfaches
                          PHP-Code:
                          sleep(10); 
                          zu verwenden ... .... ?
                          Zuletzt geändert von goth; 25.11.2003, 13:07.
                          carpe noctem

                          [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                          [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                          Kommentar


                          • #14
                            na logo. for-schleifen können doch alles, was man so brauchst ...
                            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                            Kommentar


                            • #15
                              so, danke für die vielen antworten !

                              habs jetzt mal so gelöst:

                              datum als date typ in der db und folgende abfrage

                              PHP-Code:
                              $query="SELECT DATE_FORMAT(datum,'%d.%m.%Y') AS datumdeutsch
                              FROM datumtabelle ORDER BY datum DESC"

                              Aber wie kann ich mir denn jetzt den Wochentag auf Deutsch anzeigen lassen ?? Ich habe schonmal ein paar Lösungen mit Arrays gesehen, aber wenn ich hier alles richtig verstanden habe kann man das nur machen wenn man das Datum mit PHP formatiert hat und mit einem TIMESTAMP arbeitet, nicht aber wenn man das Datum von MySQL formatiert aus der DB liest.

                              Lieg ich richtig oder hab ich was falsch verstanden ?

                              Kommentar

                              Lädt...
                              X