Sortieren nach datum (PHP)

burni87

Semiprofi
Thread Starter
Mitglied seit
03.07.2005
Beiträge
3.551
Hi

ich plane auf meiner Homepage ein kleines info fenster mit der ausgabe der nächsten geburtstage
ich habe eine MySQL Tabelle in denen die geburtsdaten gespeichert werden, allerdings bin ich mir in einigen sachen noch unsicher:

Wie soll mein tabellenlayout aussehn, eine spalte füs datum (dd-mm-yyyy) oder eine spalte für tag und eine für monat und eine fürs jahr ?

Wie ermittle ich die nächsten geburtstage ?
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Moin,

Ich würde dir folgendes raten:

Eine Tabelle mit 3 Spalten:
id (index + auto_increment) vom typ int
name vom typ varchar( oder text (eigentlich egal)
bday (im format yyyy-mm-dd ) vom typ date

Die Ausgabe des Datums kannste dann beim Query umwandeln:
PHP:
$abfrage = mysql_query("SELECT 
							DATE_FORMAT(birthday,'%d.%m.%Y') AS birthday_format,
							name
						
						FROM tabelle
						")

Dann kannste ja die Geburtsdaten mit dem aktuellen Datum vergleichen etc ...
 
ich würde noch ein "order by date" einfügen, dann hat er nämlich genau das was er will.
 
BoSS schrieb:
ich würde noch ein "order by date" einfügen, dann hat er nämlich genau das was er will.

aber dann wirds alles nach datum sortiert, sprich 1.januar kommt als erstes, da aber heute der 26.märz ist sollte der zuerst kommen ... sprich ich will immer die nächsten ganz oben haben ...
 
stimmt dann würde ich so machen:

PHP:
$abfrage = mysql_query("SELECT 
                            DATE_FORMAT(birthday,'%d.%m.%Y') AS birthday_format,
                            name                  
                        FROM tabelle where birthday_format > now() order by date
 
danke, werds die nächsten tage mal testen
 
PHP:
$abfrage = mysql_query("SELECT 
                            DATE_FORMAT(birthday,'%d.%m.%Y') AS birthday_format,
                            name                  
                        FROM tabelle order by date;);

du kannst zwischen das date und ; auch noch ein ASC oder DESC setzten damit bestimmst du wierum sortiert werden soll.

ASC für vorwärts und DESC für rückwärts

EDIT: die datumsspalte mach mal lieber vom typ datetime damit die tabelle auch richtig sortiert wird, also nach sekunden und minuten und nicht nur nach tag

MfG
Alex
 
Zuletzt bearbeitet:
Nascar schrieb:
PHP:
$abfrage = mysql_query("SELECT 
                            DATE_FORMAT(birthday,'%d.%m.%Y') AS birthday_format,
                            name                  
                        FROM tabelle order by date;);

du kannst zwischen das date und ; auch noch ein ASC oder DESC setzten damit bestimmst du wierum sortiert werden soll.

ASC für vorwärts und DESC für rückwärts

EDIT: die datumsspalte mach mal lieber vom typ datetime damit die tabelle auch richtig sortiert wird, also nach sekunden und minuten und nicht nur nach tag

MfG
Alex

Zeit sollte bei geburtstagsdaten egal sein :coolblue:
aber trotzdem danke ;)
 
wäre es nicht einfacher die mit time() erzeugten daten in eine datenbank zu speichern um dann folgendermasen abzufragen:

SELECT * FROM tabelle WHERE time > '$aktuellerwert' ORDER BY time

was meint ihr dazu ?
 
also mir ist es eigentlich egal ;) allerdings find ich beides eigentlich gleicheinfach aba dennoch bevorzuge ich die mysql variante. jetzt kann man sich noch drüber streiten ob das mysql oder das php zeitgedöns schneller ist
 
hm ok - will nicht sagen ads es besser ist aber diese variante erscheint mir einfacher ;)

obs schneller ist oder nicht stört mich kaum, weil diese 0,01 sekunde können die benutzer auch noch drauf warten
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh