Für Kalendererstellung nur 1 Datenbank anstatt 364 Datenbänke

digiTAL

Erfahrenes Mitglied
Alooa,

ich bin gerade dabei per HTML/PHP eine Geburtstagskalender zu erstellen. Dann müsste ich für jeden Tag eine Datenbank erstellen, sprich insgesamt 364/365 Datenbanken über PHPMYADMIN. Bei dem untenstehenden Script müsste ich soviel Datenbänke machen und das ist dann im Endeffekt echt viel arbeit. :(
Kann man nur eine Datenbank erstellen wo alles reinkommt aber zum Schluss wenn ich z.B. auf den 01.06.2006 klicke dann nur die Geburtstage vom 01.06. erscheinen!?

Das wäre dann die Abfrage wenn ich dann für jeden Tag eine Datenbank hätte (vordefeniert 01januar):
PHP:
<?php
$ErgebnisseProSeite = 20;
$DatabasePointer = mysql_connect("localhost", "username", "password");
mysql_select_db("birthday", $DatabasePointer);
if(!isset($_REQUEST['AktuelleSeite'])) {
	$AktuelleSeite = 0;
}
else {
	$AktuelleSeite = $_REQUEST['AktuelleSeite'];
}
$ResultPointer = mysql_query("SELECT * FROM januar01 $AktuelleSeite, $ErgebnisseProSeite", $DatabasePointer);
$Anzahl = mysql_num_rows(mysql_query("SELECT * FROM januar01 ORDER BY DESC", $DatabasePointer));
echo"<table width=\"480\" cellpadding=\"0\" cellspacing=\"0\">\n";
for($i = 0; $i < mysql_num_rows($ResultPointer); $i++)
{
	$birthday = mysql_fetch_object($ResultPointer);
	echo"<tr>\n",
		"<td width=\"160\" align=\"center\" height=\"150\">",
		"<img src=\"$januar01->Bilder\" height=\"140\" width=\"150\"></td>\n",
		"<td width=\"320\" height=\"150\">",
		"<div class=\"data\">\n",
		"<img src=\"../img/trenn_linie_280.png\" width=\"280\" height=\"3\"><br>\n",
		"&nbsp;<b>Name :</b>",
		"<span style=\"padding-left:62px\; color=\"$januar01->Farbe\">$januar01->Name",
		"</span><br>\n",
		"<img src=\"../img/trenn_linie_280.png\" width=\"280\" height=\"3\"><br>\n",
		"&nbsp;<b>Alter :</b>",
		"<span style=\"padding-left:68px\"; color=\"$januar01->Farbe\">",
		"<script type=\"text/javascript\">alter($januar01->Geburtstag2);</script>",
		"</span><br>\n",
		"<img src=\"../img/trenn_linie_280.png\" width=\"280\" height=\"3\"><br>\n",
		"&nbsp;<b>Geburtstag :</b>",
		"<span style=\"padding-left:27px\"; color=\"$januar01->Farbe\">$januar01->Geburtstag1",			
		"</span><br>\n",
		"<img src=\"../img/trenn_linie_280.png\" width=\"280\" height=\"3\"><br>\n",
		"&nbsp;<b>Sternzeichen :</b>",
		"<span style=\"padding-left:14px\"; color=\"#888888\">$januar01->Sternzeichen",	
		"</span><br>",
		"<img src=\"../img/trenn_linie_280.png\" width=\"280\" height=\"3\"><br>\n",
		"&nbsp;<b>Gruppe :</b>",
		"<span style=\"padding-left:52px\"; color=\"#888888\">$januar01->Gruppen",		
		"</span><br>",
		"<img src=\"../../img/trenn_linie_280.png\" width=\"280\" height=\"3\">\n",
		"&nbsp;<b>Erstellt am :</b><span style=\"padding-left:29px\">",
		substr($januar01->Datum, 8, 2),
		".",
		substr($januar01->Datum, 5, 2),
		".",
		substr($januar01->Datum, 0, 4),
		" ",
		substr($januar01->Datum, 10),			
		"</span><br>",
		"<img src=\"../../img/trenn_linie_280.png\" width=\"280\" height=\"3\">\n",		
		"<br></div></td>\n",
		"</tr>\n",
		"<tr>\n",
		"<td width=\"160\" height=\"28\"></td>\n",
		"<td width=\"320\" height=\"28\" class=\"edit_user\">",
		"&nbsp;<img src=\"../img/edit_user.png\" width=\"10\" height=\"10\" align=\"absmiddle\">",
		"&nbsp;Eintrag bearbeiten &nbsp;&nbsp;&nbsp;\n",
		"<img src=\"../img/delete_user.png\" width=\"10\" height=\"10\" align=\"absmiddle\">",
		"&nbsp;Eintrag löschen</td>\n",
		"</tr>\n";		
}

echo "</table>";
if($Anzahl > $ErgebnisseProSeite) {
	$Seiten = intval($Anzahl/$ErgebnisseProSeite);
	if($Anzahl%$ErgebnisseProSeite) {
		$Seiten++;
	}
	echo "Seite";   
}
for($i = 1; $i <= $Seiten; $i++) {
	echo"<a href=\"01jan.php?AktuelleSeite=",
	($i-1)*$ErgebnisseProSeite, "\">$i</a> ";
}
?>

MYSQL Tabelle:
Code:
CREATE TABLE Birthday (
Datum datetime,
Name varchar(50),
Geburtstag1 varchar(20),
Geburtstag2 varchar(20),
Sternzeichen varchar(20),
Gruppen varchar(30),
Bilder  varchar(200),
Farbe varchar(20)
);

Wie kann man das umändern das man nur eine Datenbank brauch und zu den entsprechenden Tagen den entsprechenden Geburtstag anzeigt ?

Danke im voraus!
mfg digiTALE
 
hi,
ich versteh das Problem jetzt nicht so wirklich. Du brauchst doch nur eine Tabelle in der die Geburtstage stehen. Wenn du dann noch "normalisierst" hast du vielleicht zusätzlich noch 2 oder 3 Schlüsseltabellen in denen die Sternzeichen oder ähnliches stehen.
Die Abfrage lautet dann eben frei übersetzt: "Nimm alle Sätze wo das Datum gleich dem gewählten ist" zB.
Wenn ich da jetzt was falsch verstanden habe erklär es mir bitte nochmal ;).

Gruß
 
Zuletzt bearbeitet:
Als erstes wäre es gut, zwischen Datenbank und Tabelle richtig zu unterscheiden.

Der richtige Datentyp für einen Geburtstag ist IMHO date und nicht datetime. In den seltensten Fällen wirst Du schliesslich die Geburtszeit kennen.

Um dann die von Nospherates beschriebene Abfrage durchzuführen, kannst Du mit den
Datums- und Zeit-Funktionen DAYOFMONTH(), MONTH() und CURDATE() arbeiten.

Das Alter lässt sich mit den entsprechenden Datums- und Zeit-Funktionen auch direkt in der Abfrage bestimmen, wenn Du im Datums-Feld auch das korrekte Geburtsjahr einträgst.

Gruß hpvw
 
Zurück