Anzeige

Eventkalendar

Eventkalendar | PSD-Tutorials.de

Erstellt von Smax, 16.08.2008.

  1. Smax

    Smax Aktives Mitglied

    Dabei seit:
    25.07.2006
    Beiträge:
    525
    Geschlecht:
    männlich
    Eventkalendar
    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):
    1.  
    2. $timestamp = time();
    3.        
    4.         $abfrage = "SELECT * FROM events WHERE date > $timestamp";
    5.         $ergebnis = mysql_query($abfrage);
    6.        
    7.         while($row = mysql_fetch_object($ergebnis))
    8.             {
    9.             echo "$row->id <br>";
    10.             echo "$row->date <br>";
    11.             echo "$row->title <br>";
    12.             echo "$row->description <br>";
    13.             echo "$row->price <br><br><br>";
    14.             }
    15.  
    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
     
    #1      
  2. sokie

    sokie Mod | Web

    Dabei seit:
    23.03.2008
    Beiträge:
    5.338
    Geschlecht:
    männlich
    Ort:
    Bünde NRW
    Software:
    <br>COREL <br> Texteditor
    Eventkalendar
    Zuletzt bearbeitet: 16.08.2008
    #2      
  3. Smax

    Smax Aktives Mitglied

    Dabei seit:
    25.07.2006
    Beiträge:
    525
    Geschlecht:
    männlich
    Eventkalendar
    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?
     
    #3      
  4. purzel

    purzel Guest

    Eventkalendar
    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.
     
    #4      
  5. Smax

    Smax Aktives Mitglied

    Dabei seit:
    25.07.2006
    Beiträge:
    525
    Geschlecht:
    männlich
    Eventkalendar
    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?
     
    #5      
  6. purzel

    purzel Guest

    Eventkalendar
    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:
    1. $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:
    1. 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).
     
    #6      
  7. Smax

    Smax Aktives Mitglied

    Dabei seit:
    25.07.2006
    Beiträge:
    525
    Geschlecht:
    männlich
    Eventkalendar
    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?
     
    #7      
  8. sokie

    sokie Mod | Web

    Dabei seit:
    23.03.2008
    Beiträge:
    5.338
    Geschlecht:
    männlich
    Ort:
    Bünde NRW
    Software:
    <br>COREL <br> Texteditor
    Eventkalendar
    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):
    1.  
    2. $tage = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
    3.  
    ü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):
    1. 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):
    1.  
    2. echo $tage[date("w",$timestamp)].", ".date("d.m.Y",$timestamp);
    3.  
    -ps wobei sich hier $timestamp auf den in $row->date gespeicherten wert bezieht
     
    Zuletzt bearbeitet: 17.08.2008
    #8      
  9. Smax

    Smax Aktives Mitglied

    Dabei seit:
    25.07.2006
    Beiträge:
    525
    Geschlecht:
    männlich
    Eventkalendar
    AW: Eventkalendar

    Hallo,

    also jetzt komm ich durcheinander:
    Momentan sieht mein Code so aus:
    Code (Text):
    1.  
    2.         $timestamp = time();
    3.         $tage = array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");
    4.        
    5.        
    6.        
    7.        
    8.     //  $abfrage = "SELECT * FROM events WHERE date > $timestamp";
    9.     //  $abfrage = "SELECT * FROM events WHERE date >= CAST(NOW() as DATE)";
    10.         $ergebnis = mysql_query($abfrage);
    11.        
    12.         while($row = mysql_fetch_object($ergebnis))
    13.             {
    14.             echo "$row->id <br>";
    15.             echo "$row->date <br>";
    16.             echo "$row->title <br>";
    17.             echo "$row->description <br>";
    18.             echo "$row->price <br><br><br>";
    19.             }
    20.                
    21.         mysql_free_result($ergebnis);
    22.         ?>
    23.  
    Dem feld date in der db hab ich das format timestamp zugewiesen is das korrekt?
    Ich glaube lediglich die Abfrage stimmt nicht...?
     
    #9      
  10. purzel

    purzel Guest

    Eventkalendar
    AW: Eventkalendar

    Äh ups das war ein kleiner Fehler. Das sollte sollte die Spalte sein. also bei dir "date". :rolleyes:

    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:
    1.  
    2. $timestamp = time();
    3. $tage = array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");
    4.        
    5. $abfrage = "SELECT * FROM events WHERE date > $timestamp";
    6. $ergebnis = mysql_query($abfrage);
    7.        
    8. while($row = mysql_fetch_object($ergebnis))
    9. {
    10.     echo "$row->id <br>";
    11.     echo $tage[date("w",$row->date)].", ".date("d.m.Y",$row->date)."<br>";
    12.     echo "$row->title <br>";
    13.     echo "$row->description <br>";
    14.     echo "$row->price <br><br><br>";
    15. }
    16.                
    17. mysql_free_result($ergebnis);
    18.  
     
    Zuletzt von einem Moderator bearbeitet: 17.08.2008
    #10      
  11. Smax

    Smax Aktives Mitglied

    Dabei seit:
    25.07.2006
    Beiträge:
    525
    Geschlecht:
    männlich
    Eventkalendar
    AW: Eventkalendar

    So jetzt denk ich klappt es:

    Code (Text):
    1.  
    2.         $timestamp = time();
    3.         $tage = array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");
    4.        
    5.         $abfrage = "SELECT * FROM events WHERE date >= $timestamp";
    6.         $ergebnis = mysql_query($abfrage);
    7.        
    8.         while($row = mysql_fetch_object($ergebnis))
    9.         {
    10.             echo "$row->id <br>";
    11.             echo $tage[date("w",$timestamp)].", ".date("d.m.Y",$row->date)."<br>";
    12.             echo "$row->title <br>";
    13.             echo "$row->description <br>";
    14.             echo "$row->price <br><br><br>";
    15.         }
    16.  
    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!
     
    #11      
  12. purzel

    purzel Guest

    Eventkalendar
    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:
    1. $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? :rolleyes:
     
    #12      
  13. Smax

    Smax Aktives Mitglied

    Dabei seit:
    25.07.2006
    Beiträge:
    525
    Geschlecht:
    männlich
    Eventkalendar
    AW: Eventkalendar

    @purzel:

    aber ich hab doch in der Abfrage date >= $timestamp geht das denn nicht?
     
    Zuletzt bearbeitet: 17.08.2008
    #13      
  14. purzel

    purzel Guest

    Eventkalendar
    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:
    1. $timestamp = mktime(0,0,0,date("m"),date("d"),date("Y"));
     
    Zuletzt von einem Moderator bearbeitet: 17.08.2008
    #14      
  15. sokie

    sokie Mod | Web

    Dabei seit:
    23.03.2008
    Beiträge:
    5.338
    Geschlecht:
    männlich
    Ort:
    Bünde NRW
    Software:
    <br>COREL <br> Texteditor
    Eventkalendar
    AW: Eventkalendar

    Code (Text):
    1.  
    2. echo $tage[date("w",[U]$row->date)[/U]].", ".date("d.m.Y",$row->date)."<br>";
    3.  
    so müsste diese ausgabe aussehen
     
    #15      
  16. Smax

    Smax Aktives Mitglied

    Dabei seit:
    25.07.2006
    Beiträge:
    525
    Geschlecht:
    männlich
    Eventkalendar
    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
     
    #16      
  17. purzel

    purzel Guest

    Eventkalendar
    AW: Eventkalendar

    Beides richtig. :) (von mir und sokie)
     
    #17      
  18. Smax

    Smax Aktives Mitglied

    Dabei seit:
    25.07.2006
    Beiträge:
    525
    Geschlecht:
    männlich
    Eventkalendar
    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
     
    #18      
  19. sokie

    sokie Mod | Web

    Dabei seit:
    23.03.2008
    Beiträge:
    5.338
    Geschlecht:
    männlich
    Ort:
    Bünde NRW
    Software:
    <br>COREL <br> Texteditor
    Eventkalendar
    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.

     
    #19      
  20. sokie

    sokie Mod | Web

    Dabei seit:
    23.03.2008
    Beiträge:
    5.338
    Geschlecht:
    männlich
    Ort:
    Bünde NRW
    Software:
    <br>COREL <br> Texteditor
    Eventkalendar
    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.

     
    #20      
x
×
×
teststefan