Geburtstagsrecher mit MYSQL

nordi

Erfahrenes Mitglied
Hi, ich hab mal ne Frage. Sollte eigentlich nicht schwer zu lösen sein, glaub ich :)
Also, ich zeige auf meiner Seite momentan Geburtstag an, die alle in einer PHP-Seite abgespeichert werden. Das Script vergleicht dann das heutige Datum mit der Liste ab und gibt falls vorhanden, den Namen aus. Die Liste wird aber immer länger & länger und ich glaube, man kann das einfacher mit MYSQL lösen.

Also ich hab eine Tabelle erstellt mit folgenden Spalten: id(int), name(text), datum(date).
Die Spalte datum mit dem Value date ist mein Problem - und zwar: Sagen wir mal der Kahl hat am 12.12.1984 Geburtstag und das steht dann auch so in der Spalte datum drinnen - zeigt mir ja das Script, welches das aktuelle Datum mit den Geburtstagen abgleicht kein Teffer an, weil ja das aktuelle Datum 12.12.2007 ist.. Wie würdet ihr das machen?
 
Du musst nur die Monatszahl und den Tag des Monats mit einander vergleichen, etwa:
Code:
SELECT
        …
  FROM
        …
  WHERE
        MONTH(`datum`) = 12
    AND DAY(`datum`) = 12
Ach ja: stelle deine nächste MySQL-bezogene Frage bitte direkt im Datenbank-Forum und nicht im PHP-Forum (auch wenn du die Rückgabe der Abfrage mit PHP verarbeitest).
 
Ich hab das so probiert, wie du es angedeutet hast, aber anscheinend hab ich Fehler im Script! Könnte das am ">= now()" liegen?

PHP:
<?php

// Verbindung zur Datenbank aufnehmen
mysql_connect("$dbhost","$dbuser","$dbpass");

// Datenbank auswählen
mysql_select_db("$dbtable");

// Daten aus der Datenbanktabelle auslesen
$result = mysql_query("SELECT * FROM $bday WHERE MONTH('datum') >= now() AND DAY('datum') >= now() ORDER BY datum ASC LIMIT 1");

// ausgabe der Tabelle
echo "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" class=\"infosub\">";
$i=0;
while($row = mysql_fetch_array($result))
{
     echo "<tr>";
	 echo "<td width=\"100%\" class=\"infosub\">Alles gute zum Geburtstag, ".$row['name']."!</span></td>";
     echo "";
	 echo "</tr>";
	 echo "";
	 echo "";
$i++;
}
echo "</table>";
?>

Zum Thema Topic: Ok, sorry - werde ich das nächste mal machen!
 
http://dev.mysql.com hat gesagt.:
mysql> SELECT NOW();
-> '1997-12-15 23:50:26'

Sieht nicht so aus, als ob es ein passender Vergleichswert für dein Query wäre.

Versuchs mal so:

SQL:
SELECT MONTH(NOW())

SQL:
SELECT DAYOFMONTH(NOW())
 
hi, sorry erstmal für die späte Antwort. Also hab das ausprobiert, wie du das gemeint hast, glaub ich - aber es kappt nicht - zeigt einfach nichts an.. also hab die result-abfrage so gemacht:

PHP:
$result = mysql_query("SELECT * FROM $bday WHERE MONTH(NOW()) AND SELECT DAYOFMONTH(NOW())");

Is das richtig so?
 
Hallo Nordi,

Wenn Deine Tabelle 'Tabelle' heißt ;-) und Dein Feld mit dem Geburtstag 'birthday', dann sieht es etwa so aus (Gumbo hatte es bereits beschrieben):
SQL:
SELECT * 
  FROM 'Tabelle' 
 WHERE MONTH( 'birthday' ) = MONTH( NOW() ) AND DAY( 'birthday' ) = DAY( NOW() )
Gruß, Sparks
 
hi Sparks, danke erstmal für die schnelle Antwort. Also die Tabelle heißt sbbday und die Spalte, wo die Geburtstage eingetragen sind, heißt "datum". Aber es klappt nicht, ich glaub, da ist immer noch ein Fehler drinnen.. Kann das an den ' ' liegen?

PHP:
$result = mysql_query("SELECT * FROM $bday WHERE MONTH( 'datum' ) = MONTH( NOW() ) AND DAY( 'datum' ) = DAY( NOW() ) ");

Als Datensatz ist folgender drinnen: 1 Test 2007-07-30
Struktur: id name datum
 
Zurück