Hirte: Programmplaner

Hallo zusammen,
stehe ein wenig auf dem Schlauch.
Ich möchte für ein selbstgeschriebenes CMS gerne einen "Programmplaner" basteln.

Die Termine können eintägig sein, aber auch über mehrere Tage gehen.
Und ich hätte gerne eine Ausgabe nach Monaten sortiert.
Bsp:
Januar
1. Surfen
15. Mehr surfen
Februar
3. Keine Lust mehr auf surfen
....

Vom Ansatz her, würde ich jetzt in der Datenbank zwie Date Felder machen, wenn eintägig das zweite auf Null setzen (ist das möglich bei Date?)

Wie kann man denn die Abfrage gestalten das ich das ganze nach Monat(Jeder Monat, in dem ein termin ist, soll dann eine Überschrift bekommen) sortiere, bzw. zwischen der Ausgabe den Monat ausgebe?

Hoffe Ihr versteht im Ansatz was ich meine.

Bin für jeden Tipp dankbar.
Gruß
hirte

PS: Achja, programmiert ist das ganze in PHP

  1. Den hintergrund für 2 Felder versteh ich nicht mach 2 DATE fields. Eins ist dein start datum das andere dein end datum. und wenn du nur 1 Tag willst ... machste start und end datum aufn selben tag .... ?!

    SELECT * FROM t1 WHERE t1.date_start > $start AND t1.date_end < $end ORDER BY t1.date_start;

    so würde ich das bauen

    --------------

    IT & PR - Fenebris.com
    janfeddersen _at_ dunkelnetz _dot_ de
    Kredite, Umschuldung, Finanzen

  2. Hallo

    Ich möchte für ein selbstgeschriebenes CMS gerne einen "Programmplaner" basteln.

    Vom Ansatz her, würde ich jetzt in der Datenbank zwie Date Felder machen, wenn eintägig das zweite auf Null setzen (ist das möglich bei Date?)

    Wenn du auch noch Uhrzeiten haben willst, solltest du DATETIME benutzen. Die Ausgabe kannst du dann gleich bei der DB-Abfrage regeln (MySQL:Datums- und Zeitfunktionen (DATE_FORMAT)). Wenn du ein solches Feld (das gilt auch für Felder des Typs DATE) nicht befüllst, ist dort der Wert "0000-00-00 00:00:00" gesetzt. Liest du für das Ende des Termins diesen Wert, kannst du davon ausgehen, dass der Termin eintägig ist.

    Wie kann man denn die Abfrage gestalten das ich das ganze nach Monat(Jeder Monat, in dem ein termin ist, soll dann eine Überschrift bekommen) sortiere, bzw. zwischen der Ausgabe den Monat ausgebe?

    Innerhalb einer Abfrage kannst du diese Unterscheidung nur indirekt machen. Du fügst deiner Abfrage ein weiteres Feld hinzu, in dem der Monat, evtl. inklusive dem Jahr vermerkt ist. Bei der Ausgabe der Ergebnisse prüfst du dann gegen dieses feld, um zu entscheiden, ob eine neue monatsüberschrift ausgegeben wird (Inhalt hat sich gegenüber dem letzten Schleifendurchlauf verändert) oder nicht (gleicher Inhalt wie beim letzten Schleifendurchlauf).

    Abfrage (schematisch)

    $sqlQuery = "[code lang=sql]SELECT  
    DATE_FORMAT(datum_beginn,"%d.%m") AS startdatum,  
    DATE_FORMAT(datum_beginn,"%m.%Y") AS monat,  
    DATE_FORMAT(datum_ende,"%d.%m") AS enddatum,  
    titel,  
    beschreibung  
    FROM  
    tabellenname  
    ORDER BY datum
    ~~~";[/code]  
      
    Ausgabe der Ergebnisse  
    ~~~php
    $abfrageergebnis = mysql_query($sqlQuery);  
      
    if ($abfrageergebnis===false) {  
       // irgendwas ist schief gegangen, Fehlermeldung!  
    } else {  
       // leere Überschrift erzeugen  
       $ueberschrift = "";  
       while ($row=mysql_fetch_assoc($abfrageergebnis)) {  
          // Überschrift setzen, falls sie sich verändert hat  
          if ($row["monat]!=$ueberschrift) {  
             $ueberschrift = $row["monat];  
             echo "<h2>".htmlspecialchars($ueberschrift)."</h2>";  
          }  
          // konkreten Termin ausgeben  
          echo "<h3>".htmlspecialchars($row["titel"])."</h3>";  
          echo "<p>".htmlspecialchars($row["beschreibung"])."</p>";  
          echo "<p>Beginn: ".htmlspecialchars($row["startdatum"]);  
          if ($row["enddatum"]!="00.00") {  
             echo "<br>Ende: ".htmlspecialchars($row["enddatum"]);  
          }  
          echo "</p>";  
       }  
    }
    

    PS: Achja, programmiert ist das ganze in PHP

    Das spielt hier nur eine nachrangige Rolle, hier geht es primär um Datenbankabfragen.

    Tschö, Auge

    --
    Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
    Terry Pratchett, "Wachen! Wachen!"
    Veranstaltungsdatenbank Vdb 0.3
    1. Hallo,
      vielen Dank für Eure Antworten. Werde mich gleich mal dran machen. Bei weiteren Fragen werdet Ihr sicher von mir hören :-).

      Gruß
      Hirte