Script PHP-Terminkalender

Alle Erklärungen finden Sie zum Terminkalender mit MySQL und PHP Schritt für Schritt im Tutorial Terminkalender programmieren.

Das Konfigurationsskript für den Terminkalender:

PHP-Quellcode: termin-konfiguration.php
<?php
define ( 'MYSQL_HOST', 'localhost' );
define ( 'MYSQL_BENUTZER', 'root' );
define ( 'MYSQL_KENNWORT', '' );
define ( 'MYSQL_DATENBANK', 'terminkalender' );
 
$db_link = @mysql_connect (MYSQL_HOST,
                           MYSQL_BENUTZER,
                           MYSQL_KENNWORT);
 
if ( ! $db_link )
{
  // hier sollte dann später dem Programmierer eine
  // E-Mail mit dem Problem zukommen gelassen werden
  // die Fehlermeldung für den Programmierer sollte
  // das Problem ausgeben mit: mysql_error()
  die('keine Verbindung zur Zeit möglich - später probieren ');
}
?>

Das Hauptskript, in dem Termine angezeigt, angelegt, geändert und gelöscht werden können. Die Anzeige im Terminkalender erfolgt monatsweise.

PHP-Quellcode: kompletter Terminkalender
<?php
require ('termin-konfiguration.php');
 
$db_sel = mysql_select_db( MYSQL_DATENBANK )
    or die("Auswahl der Datenbank fehlgeschlagen");
 
// Speichern neuer Daten
if ( $_POST['vorgang'] == 'neu' )
{
    speichere_daten ( $_POST['termin'] );
}
 
// Löschen von Einträgen
if ( $_GET['vorgang'] == 'loeschen' )
{
    loeschen_daten ( $_GET['id'] );
}
 
// Daten zum ändern anzeigen
if ( $_GET['vorgang'] == 'aendern' 
     AND 
     $_POST['vorgang'] <> 'update' 
   )
{
    anzeige_daten_zum_bearbeiten ( $_GET['id'] );
}
 
if ( $_POST['vorgang'] == 'update' )
{
    update_daten ( $_POST['termin'] );
}
 
// wenn ein Monat angegeben ist, Kontrolle der Angabe
if ( $_GET['monat'] )
{
  if ( (INT) $_GET['monat'] > 0 AND (INT) $_GET['monat'] < 13 )
  {
    $monat = (INT) $_GET['monat'];
  }
  else
  {
    // ohne Angabe wird der aktuelle Monat verwendet
    $monat = date("n");
  }
}
else
{
  // aktuelle Monat wird verwendet
  $monat = date("n");
}
 
if ( $_GET['jahr'] )
{
  if ( (INT) $_GET['jahr'] > 0 
       AND 
       (INT) $_GET['jahr'] < 3000 
     )
  {
    $jahr = (INT) $_GET['jahr'];
  }
  else
  {
    $jahr = date("Y");
  }
}
else
{
  $jahr = date("Y");
}
 
// Ausgabe vom Monat und dem Jahr
echo "<h1>Terminkalender $monat.$jahr</h1>";
 
$sql = "
SELECT
  id, datum, titel, beschreibung
FROM termine
WHERE
   YEAR(datum) = '$jahr'
AND
  MONTH(datum) = '$monat'
ORDER BY datum
";
 
$db_erg = mysql_query( $sql );
if ( ! $db_erg )
{
  die('Ungültige Abfrage: ' . mysql_error());
}
 
$anzahl_eintraege = mysql_num_rows($db_erg);
echo "<p>Anzahl der Einträge: $anzahl_eintraege</p>";
 
// Ausgabe Tabelle mit Terminen
echo '<table border="1">';
while ($zeile = mysql_fetch_array( $db_erg, MYSQL_ASSOC))
{
  echo '<tr>';
  echo '<td>'. $zeile['datum'] . '</td>';
  echo '<td>';
  echo '<b>'. $zeile['titel'] . '</b><br>';
  echo $zeile['beschreibung'];
  echo '</td>';
 
  echo '<td>';
  echo '<a href="terminanzeige.php?vorgang=loeschen&id=';
  echo $zeile['id'];
  echo '">löschen</a> ';
  echo '</td>';
 
  echo '<td>';
  echo '<a href="terminanzeige.php?vorgang=aendern&id=';
  echo $zeile['id'];
  echo '">ändern</a> ';
 
  echo '</td>';
 
  echo '</tr>';
}
echo '</table>';
 
mysql_free_result( $db_erg );
 
// Vormonat Kontrolle, ob bereits Januar
if ( $monat == 1 )
{
    $vmonat = 12;
    $vjahr = bcsub ( $jahr, 1 );
}
else
{
    $vmonat = bcsub ( $monat, 1 );
    $vjahr = $jahr;
}
 
echo '<a href="terminanzeige.php';
echo '?monat='. $vmonat;
echo '&jahr='. $vjahr;
echo '">Vormonat</a>';
 
echo ' | ';
 
echo '<a href="terminanzeige.php';
echo '?monat='. date("n");
echo '&jahr='. date("Y");
echo '">akt. Monat</a>';
 
echo ' | ';
 
// nächster Monat - Kontrolle, ob bereits Dezember
if ( $monat == 12 )
{
    $nmonat = 1;
    $njahr = bcadd ( $jahr, 1 );
}
else
{
    $nmonat = bcadd ( $monat, 1 );
    $njahr = $jahr;
}
echo '<a href="terminanzeige.php';
echo '?monat='. $nmonat;
echo '&jahr='. $njahr;
echo '">nächster Monat</a>';
 
 
// Anzeige Formular
echo '<hr>';
echo '<form name="" action="" method="POST">';
 
echo '<p>Datum in der Form JJJJ-MM-TT<br>';
echo '<input type="text" name="termin[datum]" value="">';
echo '</p>';
 
echo '<p>Kurzbeschreibung<br>';
echo '<input type="text" name="termin[kurzbeschreibung]">';
echo '</p>';
 
echo '<p>ausführliche Beschreibung<br>';
echo '<textarea name="termin[beschreibung]" rows="9" ';
echo ' cols="80"></textarea></p>';
 
echo '<input type="hidden" name="vorgang" value="neu">';
 
echo '<input type="Submit" value="speichern">';
echo '</form>';
 
 
// Daten speichern
function speichere_daten ( $termin )
{
  // hier sollte noch eine Validierung des 
  // Datums stattfinden
 
  $sql = "INSERT INTO termine
          (
           `id`,`datum`,`titel`,`beschreibung`
          )
          VALUES
          (
            NULL ,
            '". $termin['datum'] ."',
            '". $termin['kurzbeschreibung'] ."',
            '". $termin['beschreibung'] ."'
          )
       ";
 
    $db_erg = mysql_query( $sql );
    if ( ! $db_erg )
    {
        die("Ungültige Abfrage: $sql <hr>" . mysql_error());
    }
    else
    {
        echo "<h2>Termin gespeichert</h2>";
    }
}
 
function loeschen_daten ( $id ) {
    $sql = "DELETE FROM termine
            WHERE id='$id'
            LIMIT 1
            ";
 
    $db_erg = mysql_query( $sql );
    if ( ! $db_erg )
    {
      die("Ungültige Abfrage: $sql <hr>" . mysql_error());
    }
    else
    {
      echo "<h2>Termin gelöscht</h2>";
    }
}
 
function anzeige_daten_zum_bearbeiten ($id)
{
  $sql = " SELECT *
           FROM termine
           WHERE id = '$id'
         ";
 
  $db_erg = mysql_query( $sql );
  if ( ! $db_erg )
  {
    die('Ungültige Abfrage: ' . mysql_error());
  }
 
  $zeile = mysql_fetch_array( $db_erg, MYSQL_ASSOC);
 
  echo '<form action="" method="POST">';
 
  echo '<p>Datum in der Form JJJJ-MM-TT<br>';
  echo '<input type="text" name="termin[datum]" value="';
  echo $zeile['datum'];
  echo '" size="10" maxlength="10">';
  echo '</p>';
 
  echo '<p>Kurzbeschreibung<br>';
  echo '<input type="text" name="termin[kurzbeschreibung]" ';
  echo ' value="';
  echo $zeile['titel'];
  echo '" size="50" maxlength="255">';
  echo '</p>';
 
  echo '<p>ausführliche Beschreibung<br>';
  echo '<textarea name="termin[beschreibung]" rows="9" ';
  echo ' cols="80">';
  echo $zeile['beschreibung'];
  echo '</textarea></p>';
 
  echo '<input type="hidden" name="termin[id]" value="';
  echo $zeile['id'];
  echo '">';
  echo '<input type="hidden" name="vorgang" value="update">';
 
  echo '<input type="Submit" value="Änderung speichern">';
  echo '</form>';
  echo '<hr>';
}
 
// Daten updaten
function update_daten ( $termin )
{
    // hier sollte noch eine Validierung des Datums stattfinden
    $sql = "UPDATE termine SET
        `datum` = '". $termin['datum'] ."',
        `titel` = '". $termin['kurzbeschreibung'] ."',
        `beschreibung` = '". $termin['beschreibung'] ."'
    WHERE
        id = '". $termin['id'] ."'
    ";
 
    $db_erg = mysql_query( $sql );
    if ( ! $db_erg )
    {
        die("Ungültige Abfrage: $sql <hr>" . mysql_error());
    }
    else
    {
        echo "<h2>Termin geupdatet</h2>";
    }
}
?>