Wie speicher ich ein Geburtsdatum in Mysql?Datentyp=Date ist

Alles, was PHP betrifft, kann hier besprochen werden.

Wie speicher ich ein Geburtsdatum in Mysql?Datentyp=Date ist

Postby tommyboy » 19. September 2004 13:59

Hallo Community,

habe noch ein kleines Problem!
Ich habe eine Eingabefeld wo ich ein Geburtsdatum eingeben möchte z.B 23.05.1966 in meiner MySql Datenbank habe ich ein Feld vom Typ Date angelegt. Nun werden die Daten nur in die Datenbank übernommern wenn ich die englische Notation verwende also wie folgt schreibe 1966-05-23 was ich aber meinen Homepagebesuchern nicht zumuten möchte.
Wie kann ich dieses Problem lösen? Gibt es da einen Konvertierungsscript oder so?

Danke Tommyboy
tommyboy
 
Posts: 71
Joined: 18. July 2004 10:44
Location: Stuttgart-Tübingen

Postby Knight1 » 19. September 2004 15:03

Hi tommyboy,
als erstes musst Du natürlich die einzelnen Werte voneinander trennen.

Das geht mit dem Befehl:
Code: Select all
$geburtstag_array = explode(".",$geburtstag);


Ich setze einfach mal vorraus dass Du das Geburtstagsdatum über die Variable $geburtstag übergibst. Wenn nicht dann einfach anpassen.

Danach musst Du die Werte natürlich wieder richtig zusammensetzen damit die DB den String auch als Date annimmt.

Das geschieht dann mit dem Befehl:

Code: Select all
$geburtstag_neu = "".$geburtstag_array['2']."-".$geburtstag_array['1']."-".$geburtstag_array['0']."";


Ich hoffe ich konnte dir helfen.


Kai aka Knight1
Image
User avatar
Knight1
 
Posts: 310
Joined: 18. October 2003 10:03
Location: Trier
Operating System: Windows 7 Ultimate x64

Postby tommyboy » 19. September 2004 16:08

Danke das funktionierte natürlich gleich! :D

Wenn ich nun die Daten aus der Datenbank auslese, ersetze ich einfach den Punkt durch "-" , dann habe ich es so wie ich es wollte oder? Falls es nochmal Probleme gibt werde ich es hier Posten.

Danke Tommyboy
tommyboy
 
Posts: 71
Joined: 18. July 2004 10:44
Location: Stuttgart-Tübingen

Postby Knight1 » 19. September 2004 17:17

tommyboy wrote:Wenn ich nun die Daten aus der Datenbank auslese, ersetze ich einfach den Punkt durch "-" , dann habe ich es so wie ich es wollte oder?


Wenn Du die Datensätze ausliest bekommst du das date-Feld folgendermaßen geliefert: YYYY-MM-DD
Y = Year = Jahr
M = Month = Monat
D = Day = Tag

Um das jetzt in der Anzeige richtig hinzubekommen brauchst Du nur nochmal den explode-Befehl zu nutzen. Und zwar folgendermaßen:

Code: Select all
$geburtstag_aus_db = explode ("-",$Variablenname);


Das Ergebnis dieses Explodes erhälst als Array mit dem Namen $geburtstag_aus_db
Als Array-Bezeichner hast du numerische angaben. Die Höhe der Zahlen hängt von der Anzahl Elemente ab die Du durch diese Trennung erhalten hast und es wird bei 0 angefangen zu zählen.
In Deinem Fall hast Du insgesammt drei Elemente. Bei diesen Elementen handelt es sich um folgende:
Jahr: $geburtstag_aus_db['0']
Monat: $geburtstag_aus_db['1']
Tag: $geburtstag_aus_db['2']

Die Variablen $geburtstag_aus_db und $Variablenname musst Du natürlich Deinem Script anzupassen.

Ich hoffe dass ich wieder helfen konnte.


Kai aka Knight1
Image
User avatar
Knight1
 
Posts: 310
Joined: 18. October 2003 10:03
Location: Trier
Operating System: Windows 7 Ultimate x64

Postby Wiedmann » 19. September 2004 17:27

Wenn Du die Datensätze ausliest bekommst du das date-Feld folgendermaßen geliefert: YYYY-MM-DD

MySQL kennt die Funktion DATE_FORMAT()...

(PHP hätte da auch eine passende Funktion dafür)
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Knight1 » 19. September 2004 18:31

Wiedmann wrote:
Wenn Du die Datensätze ausliest bekommst du das date-Feld folgendermaßen geliefert: YYYY-MM-DD

MySQL kennt die Funktion DATE_FORMAT()...

(PHP hätte da auch eine passende Funktion dafür)


Auch wenn mein Ansatz ein Umweg sein sollte ist er doch der sicherere meiner Meinung nach.
Ich würde mich nicht immer auf die eingebauten Funktionen in PHP bzw. MySQL verlassen.


Kai aka Knight1
Image
User avatar
Knight1
 
Posts: 310
Joined: 18. October 2003 10:03
Location: Trier
Operating System: Windows 7 Ultimate x64

Postby tommyboy » 19. September 2004 18:59

Hmm okay Widmann,

Ich habe es nun schon nach Knight1´s Lösung gelöst, mich würde aber trotzdem interessieren wie ich den Befehl DATE_FORMAT() einsetzen muss? Ich schicke den Befehl doch über PHP mit einer Query an die MySql Datenbank und wie genau muß die Query dann aussehen? Bzw. der Code ? :oops:

Mfg Tommyboy
tommyboy
 
Posts: 71
Joined: 18. July 2004 10:44
Location: Stuttgart-Tübingen

Postby Wiedmann » 19. September 2004 19:33

Code: Select all
SELECT DATE_FORMAT(`Spalte`, '%d.%m.%Y') FROM `Tabelle`
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany


Return to PHP

Who is online

Users browsing this forum: No registered users and 3 guests