Script PHP-Terminkalender
Alle Erklärungen finden Sie zum Terminkalender mit MySQL und PHP Schritt für Schritt im vorherigen Kapitel „Tutorial Terminkalender programmieren“.
Das Konfigurationsskript für den Terminkalender:
<?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
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"><</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 '</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>";
}
}
?>
Wenn Sie einen Fehler finden, bitte mitteilen (egal ob Schreibfehler oder inhaltlicher Fehler).
Mit Maus fehlerhafte Stelle markieren und übernehmen mit folgendem Button: