ERLEDIGT
NEIN
NEIN
ANTWORTEN
13
13
ZUGRIFFE
2850
2850
EMPFEHLEN
-
Hallo!
ich habe ein Online-Adressbuch geschrieben. Es werden dort Adressen und andere pers. Angaben in einer Datenbank gespeichert; ua auch die Geburtsdaten.
Ich möchte nun die Geburtstage, die sagen wir 10-20 Tage vom aktuellen Datum weg liegen, anzeigen. Da die Daten im "normalen" Format (also zB 01.01.1970) in der Datenbank stehen, müssen sie evtl erst noch umgerechnet werden.
Ich leider keine Ahnung wie das Ganze realisieren soll, daher wäre ich für einen Denkanstoß sehr dankbar.
-
09.11.03 14:31 #2
- Registriert seit
- Feb 2002
- Beiträge
- 144
Also vom Prinzip her ist das relativ simpel denke ich.
Du nimmst den aktuellen Timesamp und den Timestamp von in 10-20 Tagen (time()+60*60*24*10) und guckst eben ob der Timestamp vom Geburtstag dazwischen liegt, wenn ja zeigst du das Datum an oder nicht.
Funktionen die dir dabei helfen könnten sind
www.php.net/time
www.php.net/mktime
Es wäre evtl. aber besser wenn der Geburtstag in einem Timestamp in der Datenbank steht und man nur die ausliest die im passenden Zeitraum liegen,
-
Hallo!
ich glaube ich brauche noch mehr schützenhilfe, weil ich irgendwie einen denkfehler mache. ich habe das jetzt so gemacht:
Ich hole das Datum aus der DB und wandle es in eine timestamp um.
Dann hole ich mit time() die aktuelle Timestap und nehme sie mit 60*60*24*10 mal.
Und hier hört es bereits auf. So sind nach Differenzbildung beispielsweise bis zum 1.12. 10 Tage. das kann ja irgendwie nicht sein.
-
09.11.03 19:51 #4
- Registriert seit
- Dec 2001
- Ort
- Hannover
- Beiträge
- 4.234
Die aktuelle Timestamp wird ja auch nicht mit 60*60*24*10 malgenommen, sondern timstamp PLUS 60*60*24*10 (also timestamp + 864000).
Wenn Du das multiplizierst landest du verdammt weit in der zukunft
bzw. an der Grenze des Betriebssystems (bei unix nicht, aber bei Windows z. B).
Copy for free - Yet another page for free software with soures:- BitUnlocker (Automatic unlock multiple Bitlocker secured drives - if you use the same password)
- W7 ScrollZoom (Use Windows 7 zoom tool through your mouse wheel)
- AppStarter (Somewhat like PortableApps launcher)
- QuakeConsole (Show/Hide windows console with your tilde key)
- BetterFileRenamer (Simple file renamer that adds date and version)
-
Meinte ich ja
Ich addiere das natürlich. Trotzdem kommt Unsinn heraus. Könnte mir nochmal jemand sagen, was _konkret_ ich wie rechnen muss? Muss ich auch das Jahr mit einbeziehen?
Vielen Dank!
-
09.11.03 19:59 #6
- Registriert seit
- Feb 2002
- Beiträge
- 144
Also mein vorheriger Vorschlag war ein bischen undurchdacht, denn der Timestamp von Geburtstag liegt logischer weise vor dem heutigen Datum und würde somit überhaupt nicht angezeigt werden.
Das dürfte so in etwa funktionieren.PHP-Code:$geburtstag // in dieser Variable ist der Geburtstag gespeichert (z.b. 01.01.1970)
$tage = 10; // in $tage wird der Zeitraum von jetzt an festgelegt
$jetzt = time();
$spaeter = $jetzt+60*60*24*$tage
$geb = explode(".",$geburtstag); // Das Datum des Geburtstages wird aufgeteilt
$geb_timestamp = mktime(0,0,0,$geb[1],$geb[0],date("Y")); // Der Timestamp des Geburtstages in diesem Jahr wird erstellt
if (($jetzt < $geb_timestamp) && ($spaeter > $geb_timestamp)) echo $geburtstag."<br />";
-
alles klar. vielen Dank - das !
-
ICh habe da mal eine frage da ich es so nicht hin bekommen kann man das nicht mit hilfe von z.b.:
oder so? Weil ich es sonst nicht hinbgekommePHP-Code:WHERE bday < date_add(current_date, interval +14 day)
-
26.12.04 15:22 #9
Ich hab vor ca. 2 Wochen auch an dem Problem gesessen. In meiner Datenbank ist das Geburtsdatum als DATE, also in der Form YYYY-MM-DD gespeichert. Aufgabenstellung war an meiner Seite: Erstelle 1 SQL-Anweisung, die die Id, Nickname, das neue Alter desjenigen, das Geburtsdatum selbst und das Datum, an dem derjenige als nächstes Geburtstag hat innerhalb eines frei zu definierenden Zeitraums filtert.
Folgende Anweisung funktioniert bei mir um z.B. alle Leute zu filtern, die inkl. heute und der nächsten 2 Monate Geburtstag haben:
Tschuldigung .... die Abfrage is nunmal so langPHP-Code:SELECT
Id,
Nickname,
IF ((YEAR(CURRENT_DATE) - YEAR(Geburtsdatum)) > 0,
(YEAR(CURRENT_DATE) - YEAR(Geburtsdatum)) - (MID(CURRENT_DATE, 6, 5) < MID(Geburtsdatum, 6, 5)),
IF ((YEAR(CURRENT_DATE) - YEAR(Geburtsdatum)) < 0,
(YEAR(CURRENT_DATE) - YEAR(Geburtsdatum)) + (MID(Geburtsdatum, 6, 5) < MID(CURRENT_DATE, 6, 5)),
(YEAR(CURRENT_DATE) - YEAR(Geburtsdatum))
)
) +1 AS `alter`,
Geburtsdatum,
DATE_FORMAT(DATE_ADD(Geburtsdatum, INTERVAL
IF ((YEAR(CURRENT_DATE) - YEAR(Geburtsdatum)) > 0,
(YEAR(CURRENT_DATE) - YEAR(Geburtsdatum)) - (MID(CURRENT_DATE, 6, 5) < MID(Geburtsdatum, 6, 5)),
IF ((YEAR(CURRENT_DATE) - YEAR(Geburtsdatum)) < 0,
(YEAR(CURRENT_DATE) - YEAR(Geburtsdatum)) + (MID(Geburtsdatum, 6, 5) < MID(CURRENT_DATE, 6, 5)),
(YEAR(CURRENT_DATE) - YEAR(Geburtsdatum))
)
) +1YEAR), '%Y-%m-%d') AS zeit
FROM tabelle
WHERE
(CONCAT(YEAR(NOW()), '-', DATE_FORMAT(Geburtsdatum, '%m-%d')) >= DATE_FORMAT(CURRENT_DATE, '%Y-%m-%d'))
AND
(CONCAT(YEAR(NOW()), '-', DATE_FORMAT(Geburtsdatum, '%m-%d')) <= DATE_FORMAT(DATE_ADD(CURRENT_DATE, INTERVAL 2 MONTH), '%Y-%m-%d'))
)
OR
((CONCAT(YEAR(NOW()) +1, '-', DATE_FORMAT(Geburtsdatum, '%m-%d')) >= DATE_FORMAT(CURRENT_DATE, '%Y-%m-%d'))
AND
(CONCAT(YEAR(NOW()) +1, '-', DATE_FORMAT(Geburtsdatum, '%m-%d')) <= DATE_FORMAT(DATE_ADD(CURRENT_DATE, INTERVAL 2 MONTH), '%Y-%m-%d'))
)
ORDER BY zeit ASC
-
Nun ja genau das Problem habe ich ja das es als DATE gespeichert ist werde deins also mal ausprobieren
-
Das geht ja wirklich :-o
DANKE
-
Habs getestet: klappt!
Zitat von SepteraCore

Aber was macht PHP eigendlich, wenn ich das ganze nicht mit der Funktion DATE, sondern mit der Funktion TIME mache?
Ich meine, was habe ich für einen Timestamp für den 01.01.1950? Der müsste ja im negativen Bereich liegen, oder? Klappt das so ohne weiteres?
-
Nein, das wird nicht klappen. Die MySQL-Abfrage von Karl Förster ist das, was du brauchst.
mfgBitte dran denken!
Wenn eure Frage geklärt ist, markiert nach eurer Antwort den Thread als erledigt und bewertet die Antworten
-
29.12.04 01:05 #14
Wollte nur schnell drauf hinweisen, dass in meiner Lösung noch Fehler drin sind. Jetzt im Praxistest hat sich herausgestellt, dass der heutige Geburtstag zwar angezeigt wird aber mit dem falschen Jahr (nämlich +1). Eine Lösung hab ich bereits fertig, aber ich glaub die wird langsam zu umfangreich um sie hier zu posten. Mich würde interessieren ob es effektivere und leichtere Lösungen gibt.
Ähnliche Themen
-
Geburtstage Anzeigen
Von nchristoph im Forum PHPAntworten: 8Letzter Beitrag: 16.08.08, 05:04 -
[Access - SQL] Geburtstage
Von Krausesh im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 15.12.05, 21:36 -
Die nächsten Geburtstage auslesen
Von casr im Forum Relationale DatenbanksystemeAntworten: 7Letzter Beitrag: 27.09.05, 13:28 -
Nächste Geburtstage ausgeben
Von dom123 im Forum PHPAntworten: 3Letzter Beitrag: 04.08.05, 01:30 -
Abfrage in Access Geburtstage
Von graf_brainstorm im Forum Office-AnwendungenAntworten: 1Letzter Beitrag: 26.08.04, 22:30





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren