oscha Geschrieben 3. Juni 2004 Teilen Geschrieben 3. Juni 2004 Hallo! würde gerne eine Anzeige auf meiner Website einbauen, die den nächsten Geburtstag eines Users anzeigt... "Next Birthday: XXXXXX (7.8.)" Wie bekomme ich das mit einem SQL-Abfrage gescheit hin?? Danke im vorraus... oscha :hawk *edit* in meiner mysql-datenbank sind die datumsangaben als datum gespeichert, NICHT als timestamp Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
korea1 Geschrieben 3. Juni 2004 Teilen Geschrieben 3. Juni 2004 hi, hab ich das richtig verstanden: in deiner db gibt es meinetwegen eine tabelle user ( name, geburtstag ). und jetzt willst du anzeigen, wann der user wieder geburtstag hat. kannst du da net sagen: SELECT geburtstag FROM user wie ist das denn in der tabelle abgespeichert? nur als 10.05 oder 10.05.1980? wenn das datum in diesem format abgespeichert ist: xx.xx.xxxx dann würd ich mit regular expressions einfach monat und tag rausfiltern und dann eben noch das aktuelle jahr dahinter setzen. was verwendest du php oder perl?? korea1 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
oscha Geschrieben 3. Juni 2004 Autor Teilen Geschrieben 3. Juni 2004 ich benutze PHP und die geburtstage sind als XXXX.XX.XX gespeichert in der datenbank gespeichert es soll jedoch nur der name angezeigt werden, der als nächster geburtstag hat Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
muth Geschrieben 3. Juni 2004 Teilen Geschrieben 3. Juni 2004 Hi, du gehst einfach hin und sortierst deine Tabelle nach dem Feld "Datum" und dann lässt du dir das erste Feld anzeigen. Dies dürfte dann der nächste Geburtstag sein...oder? Hab mal so nen kleines Forum programmiert - für: Neuster Eintrag ganz oben anzeigen...! Sebastian Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SNOWMAN Geschrieben 3. Juni 2004 Teilen Geschrieben 3. Juni 2004 hmm.... mal überlegen ich weis nich obs klappt, aber ich würds wohl in etwa so versuchen: Achso, ich hab grad vergessen wie die genaue Syntax von to_date ist SELECT to_date("datum","dd.mm"), datum - sysdate FROM user --Geburtstag in DD.MM Format und die anzahl der tag bis dahin WHERE row_id=1 --Alle Gebs. für den Zeitraum 1 Jahr and row_id = 1 --Es wird nur die erste Zeile ausgegeben, ggf. ist es "and row = 1" bin mir nich ganz sicher order by datum - sysdate inc --Es wird so sotiert das der kleinste wert, also der nächste Geb. ganz oben steht (es wird ja nur die erste zeile ausgegeben) Das nur der Name angeigt wird machst einfach n paar "hidden" felder rein Um es nochmal grob zu beschreiben; "datum - sysdate" krallt sich die anzahl der tage bis zum jeweiligen Geburtstag, row_id lässt nur die erste anzahl anzeigen, der order by lässt den nächsten geb (durch datum - sysdate) in die erste zeile wandern wenns dir unklar ist kann ichs nochmal anders erklären Mein Erklärstiel ist etwas ... eigenartige ^^ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 3. Juni 2004 Teilen Geschrieben 3. Juni 2004 Hi, du gehst einfach hin und sortierst deine Tabelle nach dem Feld "Datum" und dann lässt du dir das erste Feld anzeigen. Dies dürfte dann der nächste Geburtstag sein...oder? Hab mal so nen kleines Forum programmiert - für: Neuster Eintrag ganz oben anzeigen...! Sebastian ich glaube nicht das das so funktioniert, ausser du machst in deinem select die einschränkung, dass du alle sätze ab heute suchst und nicht seit 1.1. Bsp: SELECT name from usertable where geburtstag >= aktuelles_Datum limit 1 ist dein geburtstags feld im datumformat? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
muth Geschrieben 3. Juni 2004 Teilen Geschrieben 3. Juni 2004 Also ich hab das mal so gemacht. Wenn ich später zuhause bin, kann ich den Code mal online stellen. Aber ich glaub das war irgendwie so: "SELECT name FROM geburtsag ORDER BY DESC datum" oder so ähnlich...! Sebastian Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SNOWMAN Geschrieben 3. Juni 2004 Teilen Geschrieben 3. Juni 2004 ... *edit* in meiner mysql-datenbank sind die datumsangaben als datum gespeichert, NICHT als timestamp Der Text, den Sie eingegeben haben, ist zu kurz. Bitte erweitern Sie den Text auf die minimale Länge von 10 Zeichen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
oscha Geschrieben 3. Juni 2004 Autor Teilen Geschrieben 3. Juni 2004 SELECT nickname,DATE_FORMAT(birthday,'%d.%m.%Y') from members ORDER BY birthday ASC LIMIT 1 Ich habe es mit folgendem probiert, jedoch wird bei dieser simplen abfrage nur ein geburtstag an jenem tag angezeigt. das problem ist folgendes: wenn nun 2 oder mehr user an einem tag geburtstag haben, dann wird nur einer angezeigt *edit* die abfrage ist doch nichts, da mir wahllos die ersten beiden geburtstage in der DB ausgegeben werden Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
muth Geschrieben 3. Juni 2004 Teilen Geschrieben 3. Juni 2004 wenn ich zuhause bin, such ich dir den codeschnipsel mal raus. bin selbst in php noch anfänger. und: wenn zwei leute an einem tag geburtstag haben, dann kannste ja das mit ner if-abfrage überprüfen. wenn, der erste und der zweite datensatz (datum) gleich ist, dann musste du die ersten zwei geburtstagskinder ausgebene...! ich hoffe du verstehst was ich meine...! sebastian Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
muth Geschrieben 3. Juni 2004 Teilen Geschrieben 3. Juni 2004 Hi, also hier ist der Codeschnipsel mit dem es funktioniert hat: $anfrage = mysql_query( "SELECT themenid,titel,autor,datum,antworten FROM `forum_themen` ORDER BY datum DESC LIMIT $seitenanzahlminus, $seitenanzahl" ) Datum (bzw. mit Uhrzeit) wird bei mir so gespeichert: 19.04.2004 22:17 Ich hoffe, ich konnte dir helfen. Gruß Sebastian Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
oscha Geschrieben 4. Juni 2004 Autor Teilen Geschrieben 4. Juni 2004 hallo muth, danke für deinen tipp, aber diese abfrage bringt nicht den nächsten geburtstag, sondern zeigt die ersten bzw. letzten (abhängig von der sortierung) geburtstag an - also wer als erster bzw. letzter geboren ist. jemand ne andere idee? Gruß oscha Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
muth Geschrieben 4. Juni 2004 Teilen Geschrieben 4. Juni 2004 Hi, wenn du dann in deinem Datensatz das Jahr weglässt, dann müsste es ja funktionieren. Das Jahr kannste ja in einem anderen Feld speichern, oder? Sebastian Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 4. Juni 2004 Teilen Geschrieben 4. Juni 2004 so bekommste die nächsten 10: $Sql = "SELECT name from usertable where geburtstag >= ". date( "Y.m.d") ." limit 10"; [/PHP] So bekommste alle die heute geburtstag haben [PHP] $Sql = "SELECT name from usertable where geburtstag = ". date( "Y.m.d"); Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.