Script für Termine

JaePe

Grünschnabel
Hallo,

ich baue gerade ein Script mit dem man einen "Terminkalender" erstellen kann.

Bisher kann man in eine Datenbank nur Termine eintragen. Klappt wunderbar...

Ausgabe klappt prinzipiell auch wunderbar...

Nur kommt es im Format YYYY-MM-DD ...

(Ja nun springen die Alarmglocken an. Denn mit google und sonstigen Suchmaschinen kommt da sehr viel - nur gelingt mir das Anwenden in meinem Fall nicht.)

PHP:
<?php 
    include "admin/config.inc.php";
  
    /* SQL Abfrage ausfuehren */
    $res = mysql_query("select * from termine order by datum asc"); 
  
    echo "<table border=\"0\" cellpadding=\"20\" cellspacing=\"0\" width=\"250\"><tr><td>";
  
    /* Ausgabe der Datensaetze */
    while ($dsatz = mysql_fetch_assoc($res))
    {            
        echo "<table width=\"100\"><tr><td>"
           . $dsatz["datum"] . " - " 
           . $dsatz["uhrzeit"] 
           . "</td></tr><tr><td><div align=\"justify\">" 
           . nl2br(htmlspecialchars(preg_replace('~\S{20}~', '\0 ', $dsatz["beschreibung"]))) 
           . "</div></td></tr><tr><td>"
           . "<img src=\"gfx/gfx/teiler_klein.jpg\"><br><br></td></tr></table>";
    }
   
    echo "</td></tr></table>";
?>


Fragen:

1.) Kann mir einer bei der Ausgabe im Format 30.03.2009 - 23:56 helfen.
2.) Welche Fehler sind sonst vorhanden, bzw wie könnte man das Ganze sinnvoller machen.
3.) Kann mir jemand noch zeigen, wie man nur aktuelle Termine ausgibt, d.h. abgelaufene sofort rausfallen, zumindest aus der Anzeige


Vielen Dank an denjenigen der sich zum tausendsten Mal mit der Thematik beschäftigt - wäre nett...
 
Wenn du nur die Jahreszahl, Monat und Tag bekommst, wo soll da bitte die Uhrzeit her kommen? Aber ansonsten versuch es mal mit mktime() und date(). Das dürfte dein Problem lösen.
 
Zuletzt bearbeitet:
mktime() wäre möglich, aber nicht unbedingt erste Wahl. Da mktime() eine andere Parameterreihenfolge braucht, könntest du in dem Fall den vorhandenen String gleich mit substr() zerlegen und anzeigen. Am einfachsten geht es mit einer Kombination aus date() und strtotime().
PHP:
date("d.m.Y", strtotime($dsatz[datum]))

Die Ausgabe der einzelnen Termine in eigenen Tabellen ist unnötig kompliziert und auch wird die Formatierung ziemlich durcheinander sein, da sämtliche Spalten unabhängig voneinander sind. Ich würde jeden Termin nur in eine <tr> setzen. Das verkürzt den Code und baut das auch noch ansehnlicher auf.
Prinzipiell solltest du anfangen, Strings in 'einfache Hochkomma' zu setzen, da die zum einen schneller verarbeitet werden, zum anderen du dir die Maskierung der "Anführungsstriche" sparen kannst, was es wieder einfacher lesbar macht. Alles was in ' steht, wird von PHP so genommen, wie es ist. Alles was in " steht, wird nach Verwertbarem durchsucht (Variablen).
Der Sinn der preg_replace() Aktion ist mir noch nicht ganz klar. Vielleicht sollte mal die Art der Datenspeicherung überprüft werden.

Das ausfiltern der abgelaufenen Termine ist ganz einfach. Du mußt es nur um eine entsprechende where Klausel erweitern. z.B. so.
Code:
where datum >= now()
So würden nur Termine angezeigt, die Heute sind oder in der Zukunft liegen. Vorausgesetzt natürlich, daß datum auch ein Datumsfeld ist.
 
Zurück