Hallo, ich habe ein Problem und zwar will ich einen Eventkalendar basteln der ein Datum einen Titel eine Beschreibung und Preis des Events ausgeben soll. Dazu habe ich in in MySQL schon eine tabelle events mit 5 Spalten angelegt. 1.Spalte ID mit Typ int, 2.Spalte date mit typ int, 3.Spalte title mit Typ varchar, 4.Spalte description mit Typ text und 5.Spalte price mit Typ varchar. Die Ausgabe soll dann nur erfolgen wenn das Event nicht schon abgelaufen ist. Hab dann das Datum z.b. 1.1.2009 in timestamp umgeformt. Meine php-Abfrage lautet so: Code (Text): $timestamp = time(); $abfrage = "SELECT * FROM events WHERE date > $timestamp"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_object($ergebnis)) { echo "$row->id <br>"; echo "$row->date <br>"; echo "$row->title <br>"; echo "$row->description <br>"; echo "$row->price <br><br><br>"; } Soweit funktioniert es schon mal dass nur die events augegeben werden die nicht abgelaufen sind aber wie bekomme ich das Datum umformatiert also z.b. Dienstag, 01.01.2009 ??? Wer kann helfen? Kenn mich in php leider noch nicht gut aus...also hab erst damit angefangen Danke
AW: Eventkalendar Hallo, ok die Funktion habe ich gefunden aber wie mach ich das weil ich gebe die einzelnen Datumswerte ja über die while-Schleife aus... mein Problem ist dass ich nciht verstehe wo ich das einbauen muss um also von dem integer bzw. timestamp z.b. das Format Dienstag, 12.05.2009 zu bekommen? Muss ich die Werte da erst nochmal zwischenspeichern?
AW: Eventkalendar Die Frage ist erstmal in welchen Format hast du das in deiner DB gespeichert? Unix-Timestamp? du kannst im SQL-Querie angeben das er dir das in deinem gewünschten Format ausgibst du wandelst es mittels der date()-Funktion um.
AW: Eventkalendar Hm ja das ist die Frage das feld date in der db welches format soll ich dem geben und muss ich dann jedes datum dass ich eintragen will erst convertieren?
AW: Eventkalendar Also ich speicher ein Datum im Unix-Timestamp in der Datenbank. ( -> time() ) Du kannst dann das Datum aus der Datenbank via SQL-Abfrage direkt in dein gewünschtes Format ausgeben lassen oder danach via date()-Funktion umkonvertieren. SQL-Abfrage aus deinem Beispiel mit Datum: PHP: $abfrage = "SELECT *,DATE_FORMAT(news_zeit,'%l, %d.%m.%Y') as zeit FROM events WHERE date > ".$timestamp." "; (Dabei ist dann die Ausgabe $row->zeit dein gewünschtes Format und $row->date Unix-Timestamp) date()-Funktion PHP: echo date("l, d.m.Y",$row->date); Entsprechende date()-Funktion kannst dir dir auf den genannten Link selbst noch näher anschauen. Sowie DATE_FORMAT in der SQL-Abfrage hier (Hinweis: für MySQL 5.1).
AW: Eventkalendar Hallo, di abfrage verstehe ich nicht ganz, was ist news_zeit und as zeit? Bzw. was heißt das mit den punkten am ende?
AW: Eventkalendar Hallo smax, zunächst brauchst du die Namen der Wochentage in Deutsch, die kann die funktion nicht selbst generieren. die legst du zunächst in ein array: Code (Text): $tage = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"); über die date() funktion kann man mit dem parameter "w" den Tag der woche als zahl ausgeben (Sonntag ist 0, montag 1, usw. diesen Wert nimmt man für die Ausgabe als index für das Array $tage. Code (Text): echo $tage[date("w",$timestamp)] gibt den Wochentag derin timstampübergebenen Zeit aus. die datumsausgabe im format DD.MM.YYYY erzeugt die funktion date mit den entsprechenden Parametern : Code (Text): echo $tage[date("w",$timestamp)].", ".date("d.m.Y",$timestamp); -ps wobei sich hier $timestamp auf den in $row->date gespeicherten wert bezieht
AW: Eventkalendar Hallo, also jetzt komm ich durcheinander: Momentan sieht mein Code so aus: Code (Text): $timestamp = time(); $tage = array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"); // $abfrage = "SELECT * FROM events WHERE date > $timestamp"; // $abfrage = "SELECT * FROM events WHERE date >= CAST(NOW() as DATE)"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_object($ergebnis)) { echo "$row->id <br>"; echo "$row->date <br>"; echo "$row->title <br>"; echo "$row->description <br>"; echo "$row->price <br><br><br>"; } mysql_free_result($ergebnis); ?> Dem feld date in der db hab ich das format timestamp zugewiesen is das korrekt? Ich glaube lediglich die Abfrage stimmt nicht...?
AW: Eventkalendar Äh ups das war ein kleiner Fehler. Das sollte sollte die Spalte sein. also bei dir "date". Nachtrag: Timestamp ist Format: 0000-00-00 00:00:00 mach es als init(11). Dann hole es normal aus der Datenbank wie du zuerst schriebst. und wandelst dein Unix-Timestamp um wie der Kollege schrieb, das dein "Wochentag" in Deutsch ist. Also: PHP: $timestamp = time(); $tage = array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"); $abfrage = "SELECT * FROM events WHERE date > $timestamp"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_object($ergebnis)) { echo "$row->id <br>"; echo $tage[date("w",$row->date)].", ".date("d.m.Y",$row->date)."<br>"; echo "$row->title <br>"; echo "$row->description <br>"; echo "$row->price <br><br><br>"; } mysql_free_result($ergebnis);
AW: Eventkalendar So jetzt denk ich klappt es: Code (Text): $timestamp = time(); $tage = array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"); $abfrage = "SELECT * FROM events WHERE date >= $timestamp"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_object($ergebnis)) { echo "$row->id <br>"; echo $tage[date("w",$timestamp)].", ".date("d.m.Y",$row->date)."<br>"; echo "$row->title <br>"; echo "$row->description <br>"; echo "$row->price <br><br><br>"; } Eine Frage noch, hab in der db ein Event mit heutigen Datum eingetragen nur das wird nicht ausgegeben...Warum? Danke purzel für deine Hilfe!
AW: Eventkalendar $timestamp in deiner SQL-Abfrage = JETZT. Deine Abfrage lautet ja Hole alle Daten aus der Tabelle events die grösser sind als $timestamp. Also wenn du events in deiner Datenbank abspeicherst sollten die alle in der Zukunft ja liegen. Wie du das machst, hilft dir mktime(). Beispiel du hast ein Event am 19.08.2008 um 20:00 Uhr: PHP: $deinevent = mktime(20, 0, 0, 8, 19, 2008); $deinevent = der Unix-Timestamp von deinem Event. Näheres auf der genannten Seite. Alles Ok soweit und gecheckt mit dem Datum/Zeit-Funktionen mit PHP?
AW: Eventkalendar du hast ein Event in der Datenbank 17.8.2008 12:00 Uhr die ist aber schon längst vorbei daher wird die nicht mehr dann erscheinen >= heißt ja grösser oder ist gleich. Wenn du aber bei deiner Abfrage alle Ergebnisse haben willst vom heutigen Tag gesamten Tag dann muss $timestamp anders sein, sprich auf 17.08.2008 00:00 Uhr. Das kannst du mittels mktime() realisieren: PHP: $timestamp = mktime(0,0,0,date("m"),date("d"),date("Y"));
AW: Eventkalendar Code (Text): echo $tage[date("w",[U]$row->date)[/U]].", ".date("d.m.Y",$row->date)."<br>"; so müsste diese ausgabe aussehen
AW: Eventkalendar @purzel: Ja ok das hab ich jetzt verstanden, Danke echt super jetzt klappt es nämlich Mit der mktime-funktion hab ich also gesagt der Ausgangszeitpunkt ist z.b. heute 17.08.2008 00:00 oder? und daher sind alle Events dieses Tage auch noch gelistet? @sokie: Du hattest recht musste geändert werden damit die Wochentage richtig angezeigt wurden... oder das meinstest du ja? Bin immer wieder begeistert von dem support hier! Danke
AW: Eventkalendar Noch eine Frage und zwar wenn ich jetzt eine Seite mache bei der der User ein Event eintrgaen kann in welcher Form muss er dann das Datum eintragen? Bzw. wie würdet ihr das machen? Ah und noch eine: momentan geb ich ja alles per Echo aus kann ich denn die Daten auch anders z.b. in einer Tabelle oder so ausgeben lassen und wie kann ich dann diese formatieren also z.b. die schriftart, größe und hintergrundfarbe? danke
AW: Eventkalendar danke die User des Kalenders werden ihre Dten per Formular eingeben müssen. Den Event-Zeitpunkt wird man wohl am einfachsten aufgliedern tag - monat - Jahr Stunde und Minute das heisst 5 Eingabefelder für die Zeit, in php zusammensetzen, timestamp erzugen und in die DB schreiben.
AW: Eventkalendar tag - monat - Jahr Stunde und Minute das heisst 5 Eingabefelder für die Zeit, in php zusammensetzen, timestamp erzugen und in die DB schreiben.