Geburtstag -> Alter
Geburtstag -> Alter
Ich will in der Datenbank ein geburtsdatum einlesen (Text) und das Alter ausrechnen lassen (in PHP). Nur date('d.m.Y'); [so wie ich normalerweise Heute aufrufe] gibt ja strings aus. Also wie kann ich in PHP das Alter ausrechnen lassen, wenn ich einen STRING gegeben habe (in dem Fall: aus der DB auslese?)
.globl truth
truth:
mov r0, #42
mov pc, lr
truth:
mov r0, #42
mov pc, lr
- Dirty Oerti
- Beiträge: 2229
- Registriert: Di Jul 08, 2008 5:05 pm
- Wohnort: Thurndorf / Würzburg
Re: Geburtstag -> Alter
Du hast einen String?
Naja, der wird ja nach einem gewissen Format gehalten sein.
Extrahiere aus diesem Format Jahreszahl, Monatszahl und Tageszahl.
Dann berechnest du zuerst den Unterschied zwischen der aktuellen Jahreszahl und der Geburtsjahreszahl und subtrahierst davon 1.
Dann vergleichst du Monatszahlen. Ist der aktuelle Monat höher als der Geburtsmonat, dann wieder eins dazu zum vorherigen Wert.
Ist er niedriger bist du fertig. Wenn beide Werte gleich sind (wir sind in dem Monat, an dem die Person geboren wurde) dann gehst du dazu über die Tageszahlen zu vergleichen.
Dabei läufts genauso wie bei den Monaten.
Wenn beide Tageszahlen gleich sind musst du natürlich auch 1 wieder zum Unterschied der Jahreszahlen addieren
Wegen Strings extrahieren:
Am schönsten wäre es natürlich den String in einer ähnlichen Form zu haben wie z.B.
TT.MM.JJJJ
TT/MM/JJJJ
TT MONAT JJJJ
TT. MONAT JJJJ
Dann kannst du den String an den entsprechenden Stellen splitten. (Im ersten Beispiel am Zeichen '.' )
Die entsprechende Funktion samt Dokumentation findest du hier:
explode http://php.net/manual/en/function.explode.php
Bitte nicht split verwenden, das wird in PHP6 entfernt.
Naja, der wird ja nach einem gewissen Format gehalten sein.
Extrahiere aus diesem Format Jahreszahl, Monatszahl und Tageszahl.
Dann berechnest du zuerst den Unterschied zwischen der aktuellen Jahreszahl und der Geburtsjahreszahl und subtrahierst davon 1.
Dann vergleichst du Monatszahlen. Ist der aktuelle Monat höher als der Geburtsmonat, dann wieder eins dazu zum vorherigen Wert.
Ist er niedriger bist du fertig. Wenn beide Werte gleich sind (wir sind in dem Monat, an dem die Person geboren wurde) dann gehst du dazu über die Tageszahlen zu vergleichen.
Dabei läufts genauso wie bei den Monaten.
Wenn beide Tageszahlen gleich sind musst du natürlich auch 1 wieder zum Unterschied der Jahreszahlen addieren

Wegen Strings extrahieren:
Am schönsten wäre es natürlich den String in einer ähnlichen Form zu haben wie z.B.
TT.MM.JJJJ
TT/MM/JJJJ
TT MONAT JJJJ
TT. MONAT JJJJ
Dann kannst du den String an den entsprechenden Stellen splitten. (Im ersten Beispiel am Zeichen '.' )
Die entsprechende Funktion samt Dokumentation findest du hier:
explode http://php.net/manual/en/function.explode.php
Bitte nicht split verwenden, das wird in PHP6 entfernt.
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne!
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
Ich helfe gerne!

----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
Re: Geburtstag -> Alter
explode.... ja aber das erstellt doch .... auch nur STRINGS. also wie soll ich dann bitte subtrahieren? Das kann ich nicht mit STRINGS sondern brauche dafür Zahlen (int, float, double, single,....)
.globl truth
truth:
mov r0, #42
mov pc, lr
truth:
mov r0, #42
mov pc, lr
- cloidnerux
- Moderator
- Beiträge: 3125
- Registriert: Fr Sep 26, 2008 4:37 pm
- Wohnort: Ram (Gibts wirklich)
Re: Geburtstag -> Alter
PHP kennt converter um Strings in zahlen zu verwandlen und umgekehrt, und wenn du dazu nihcts bei google findest implementierst du dir halt einen selbst, ist eine schöne Übung.explode.... ja aber das erstellt doch .... auch nur STRINGS. also wie soll ich dann bitte subtrahieren? Das kann ich nicht mit STRINGS sondern brauche dafür Zahlen (int, float, double, single,....)
Gerade mal gegoogelt:
PHP String to int:
1-Treffer, auch ein Forum, selbe Frage, Antwort:
http://www.php-resource.de/forum/showthread/t-24123.html hat geschrieben:intval
intval -- Konvertiert einen Wert nach integer
Beschreibung:
int intval ( mixed var [, int base])
Diese Funktion konvertiert den Parameter var zu einem integer, wobei base als Basis benutzt wird (Default ist base=10).
var kann ein Ausdruck oder eine einfache Variable sein, nicht jedoch ein Array oder Objekt.
Siehe auch doubleval(), strval(), settype() und Typ-Veränderungen.
Redundanz macht wiederholen unnötig.
quod erat expectandum
quod erat expectandum
Re: Geburtstag -> Alter
naja... ich hätte auch einfach mal ins Manual schauen können... da stände auch was drinne über strtime... (heißt das glaub ich) das mit der UNIX zeit...
danke an dich, euch, alle,
danke an dich, euch, alle,
.globl truth
truth:
mov r0, #42
mov pc, lr
truth:
mov r0, #42
mov pc, lr