Events ankündigen

nordi

Erfahrenes Mitglied
Hi Leute,

Ich wollte auf meiner Homepage ein kleines Script veröffentlichen, welches Events (Geburtstage etc) innerhalb der nächste Woche anzeigt.
Habe bis jetzt noch nicht damit angefangen..wollte aber wissen, ob ihr schon irgendwelche Tipps geben könnt.

Will das ganz einfach machen:

MYSQL Tabelle:

1. ID
2. DATE (Wann jemand Geburtstag hat/ Party feiert etc)
3. EVENT (Party, Bday etc)
4. UHRZEIT (Wenn man das nicht schon in Punkt 2 vereinen kann)

So, das speicher ich dann einfacha in die Tabelle ein und will das dann abfragen:

Wie mach ich das, dass der nur die nächsten 7 Tage sprich eine Woche abklappert und dort Ergebnisse ausschmeisst, wenn welche vorhanden sein sollten?


SELECT date,event, uhrzeit FROM bday WHERE date=CURDATE()

Hier dem CURDATE() muss doch noch ne Rechnung hin, oder? Wie würdet ihr das aktuelle Datum bestimmen? mit time() bzw date()`?

Mfg

marius
 
Wenn Du das Feld vom Typ DATETIME machst, kannst Du Datum und Uhrzeit in einem Feld speichern.
Die Abfrage für die nächsten 7 Tage läßt sich mit DATE_SUB lösen, wie auch so ziemlich alles andere bezüglich Datum und Uhrzeit mit den Datums- und Zeit-Funktionen zu lösen ist.
Code:
SELECT 
  ID,
  Datum,
  Event
FROM Tabelle
WHERE DATE_SUB(Datum, INTERVAL 7 DAY) < NOW()
  AND Datum > NOW()
Gruß hpvw
 
Ok danke!

Habs jetzt so gemacht:

PHP:
$query = mysql_query("SELECT id, event, date, time FROM sdbday WHERE DATE_SUB(date, INTERVAL 7 DAY) < NOW() AND Date > NOW()");

Was meinst du mit "DATETIME" zusammen?

Frage noch: Wie gestalte ich die echo Ausgabe?
 
Ja ne, über die Gestaltung bin ich mir schon klar! Will nur wissen, wie ich das mit der echo funktion abfrage?

PHP:
          <?php
		  
		   include("config.inc.php");
		  
		  $verbindung = @mysql_connect("$dbhost","$dbuser","$dbpass");

 if (!$verbindung) 	{
 		echo "Keine Verbindung möglich!\n";
 		exit;
 					}


$abfrage = "SELECT * FROM sdbday WHERE DATE_SUB(datum, INTERVAL 7 DAY) < NOW() AND DATE > NOW()";
$ergebnis = mysql_db_query($dbtable,$abfrage,$verbindung);
while (list($id,$event,$name,$datum,$zeit) = mysql_fetch_row($ergebnis)) 
			{
echo "$event";
			}	  
?>
 
Zuletzt bearbeitet:
Also ich würde es so machen:

PHP:
$Verbindung = mysql_connect("xxx","xxx","pw");
$query=("use xxx");
$SQLString = "SELECT id, geb, name, time, DATE_FORMAT(datum, '%d.%m.') AS datumFormatiert FROM DB.tabelle datum >= NOW() ORDER BY datum";
$Ergebnis = mysql_query($SQLString, $Verbindung);
if ($Ergebnis) {
$Datensatz = mysql_fetch_array ($Ergebnis);
while ($Datensatz) {
echo '<table>';
echo '<tr><td>'.$Datensatz['datumFormatiert'].'</td><td>'.$Datensatz['time'].'</td><td>'.$Datensatz['name'].'</td></<td>'.$Datensatz['geb'].'</td></tr>'; 
echo '</table>';
$Datensatz = mysql_fetch_array($Ergebnis);
}
} else {
echo "Fehler in der Abfrage";
}
?>

Als Ausgabe erhältst Du dann immer ein echo, wenn ein aktueller Geburtstag ansteht... Ansonsten nichts... und der letzten 7 Tage hast Du ja schon...
 
Ok, das dacht ich mir schon: Aber es kommt immer: "Fehler in der Abfrage"

Hier mein Code:

PHP:
          <?php
	include("config.inc.php");
			
$Verbindung = mysql_connect("$dbhost","$dbuser","$dbpass"); 
$query=("$dbtable"); 
$SQLString = "SELECT id, event, name, zeit, DATE_FORMAT(datum, '%d.%m.') AS datumFormatiert FROM sdbday datum >= NOW() ORDER BY datum"; 
$Ergebnis = mysql_query($SQLString, $Verbindung); 
if ($Ergebnis) { 
$Datensatz = mysql_fetch_array ($Ergebnis); 
while ($Datensatz) { 
echo '<table>'; 
echo '<tr><td>'.$Datensatz['datumFormatiert'].'</td><td>'.$Datensatz['zeit'].'</td><td>'.$Datensatz['name'].'</td></<td>'.$Datensatz['event'].'</td></tr>'; 
echo '</table>'; 
$Datensatz = mysql_fetch_array($Ergebnis); 
} 
} else { 
echo "Fehler in der Abfrage"; 
} 
?>

Meine SQL.Tabelle sieht wie folgt aus:

id (int10)
event (varchar50)
name (varchar50)
zeit (time) STANDARD 00:00:00
date (date) STANDARD 0000-00-00

Ist da was an den Typen der Tabellenfelder nicht in Ordnung? Wenn ich das richtig sehe, wird im dem Script garnicht dieses 7 Tage Porblem in Angriff genommen. Also einfach INTERVAL, 7 DAY in die SELECT Funktion schreiben, oder?
 
Zurück