Auf meiner Homepage will ich die Geburtstage per MySQL ausgeben, die ich dann noch in der Datenbank speichern werde. Nun, also Skript für Verbindung ist fertig, Tabellen sind auch schon fertig, nun hänge ich aber, denn ich möchte nicht alle 31 Geburtstage gelistet haben, sondern nur die der nächsten 4 (oder 7) Tage. So wollte ich das ausgeben:
PHP-Code:
include "mysql.php"; // Verbindung
$abfrage = mysql_query("SELECT * FROM `gebtage`");
while($row = mysql_fetch_assoc($abfrage)) {
echo "<b>$row[name] $row[date]";
}
"name" ist hald der Name und "date" der geburtstag. Wobei "date" den Typ INT hat in MySQL und "name" den Typ "TEXT".
Könnte mir hierbei jemand helfen?
Hat keiner einen Rat?
Habe außerdem gemerkt, dass das mit date und INT nicht hinhaut. Muss also anderer Type sein, den man verwenden muss.
:question:
Der einfachste Weg wäre Tag, Monat und Jahr in eigenen Spalten zu speichern, so dass du einfach nach Monat sortiert abfragen kannst.
Nur, wie mache ich das mit sortieren? Und in welchem "Type" soll ich die einzelnen Tabellen einstellen?
Mal davon ausgehend, dass es jetzt 3 Felder (tag, montag, jahr) gibt:
PHP-Code:
$abfrage = mysql_query("SELECT * FROM `gebtage` ODER BY monat ASC");
Für die Felder tag montag und jahr kannst du dann auch INT verwenden, weil ja reine Zahlenwerte gespeichert werden.
Es kommt folgende Fehlermeldung:
Zitat:Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /usr/export/www/vhosts/funnetwork/hosting/gamerstrix/klasse/index.php on line 110
bei diesem Code:
PHP-Code:
/* Diese Daten teilt dir dein Provider mit: */
$MYSQL_HOST = "localhost";
$MYSQL_USER = "";
$MYSQL_PW = "";
$MYSQL_DB = "";
$conn = mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PW); /* verbindet zu MySQL an sich */
mysql_select_db($MYSQL_DB, $conn); /* verbindet zu der gewählten Datenbank auf dem Server */
$abfrage = mysql_query("SELECT * FROM `gebtage` ODER BY monat ASC");
while($row = mysql_fetch_assoc($abfrage)) {
echo "<b>$row[name] $row[tag] $row[monat] $row[jahr]";
}
?>
Funktionert, danke an euch.
Doch nun noch eine Frage, es wird jetzt zb das angezeigt:
Zitat:Dennis 13.07.1991
Doch nun möchte ich das angezeigt wird wie alt er wird.
"Name Datum
(wird *alter*)"
Abgesehen das der post drüber auch noch gut wäre, möchte ich noch nicht alle 31 Geburtstage gelistet haben. Und zwar alle von dem aktuellen Monat. Wie stelle ich das an?
PHP-Code:
$abfrage = mysql_query("SELECT * FROM `gebtage` WHERE monat = '".date("m")."' ORDER BY monat ASC");
Das Alter musst du ausrechnen lassen, also z.B. das Geburtstatum über mktime() in einen Timestamp umwandeln und die Differenz zum Timestamp der aktuellen Zeit errechnen.
Ich weiß was du meinst, bloß im PHP-Manual ist das ziemlich komisch erklärt
, da steht auch nicht wie genau ich dann zum Ergebnis komme.
Wie komme ich nun genau zum Timestamp?
mktime(0, 0, 0, 13, 07, 1991);
Und dann?
Ich soll:
"aktuelle Zeit-Timestamp" - "gebtag-Timestamp" = $Timestamp
Und wie wandle ich ihn in die endgültige Zahl um?
Das ist doch dann schon alles massentauglich?
PS: WHERE hat funktioniert.