Dynamische Homepage
Wechselnde Textausgaben
1. Bezogen auf die Uhrzeit
Viele Homepages haben eine Begrüßung, z.B. "Willkommen auf unserer Homepage!". Da wir aber PHP lernen, können
wir jetzt eine tageszeitbedingte Begrüßung entwerfen. Wir nutzen die Funktion date().
Diese Funktion hat verschiedene Formate mit verschiedenen Bedeutungen. Hier der Überblick:
Platzhalter | Ausgabe
g
| Stunden im Format 1-12
| G
| Stunden im Format 0-23
| h
| Stunde im Format 01-12
| H
| Stunde im Format 00-23
| i
| Minuten im Format 00-59
| d
| Tag des Monats (zweistellig mit führenden Nullen)
| D
| Tag der Woche (dreistellig, z.B. "Thu")
| j
| Tag des Monats (ohne führende Nullen)
| w
| numerische Darstellung des Wochentags (Sonntag = 0)
| m
| Monat im Format 01-12
| M
| Monat (dreistellig, z.B. "Mar")
| n
| Monat ohne führende Null
| y
| Jahreszahl (zweistellig)
| Y
| Jahreszahl (vierstellig)
| a
| am oder pm
| |
$begr[] = "Guten Morgen!";
$begr[] = "Guten Tag!";
$begr[] = "Guten Abend!";
?>
if (date("a") == "am")
{
$be = $begr[0];
}
else if (date("H") >= 12 && date("H") < 18)
{
$be = $begr[1];
}
else
{
$be = $begr[2];
}
echo $be;
?>
$begr[] = "Guten Morgen!";
$begr[] = "Guten Tag!";
$begr[] = "Guten Abend!";
if (date("a") == "am")
{
$be = $begr[0];
}
else if (date("H") >= 12 && date("H") < 18)
{
$be = $begr[1];
}
else
{
$be = $begr[2];
}
echo $be;
?>
2. Bezogen auf den Zufall
PHP bietet die Möglichkeit, eine zufällige Zahl zu berechnen. Man benutzt dazu die Funktion mt_srand. Aber zuerst brauchen wir noch einen Array, aus dem dann eine Teilvariable ausgewählt wird. Nennen wir sie "$spruch".
$spruch[] = "Alles wird gut";
$spruch[] = "Wir machen nicht alles anders - aber vieles besser.";
$spruch[] = "Auf der Suche nach günstigem Webspace? Ich auch!";
$spruch[] = "Rauchen gefährdet die Gesundheit";
?>
$spruch[] = "Alles wird gut";
$spruch[] = "Wir machen nicht alles anders - aber vieles besser.";
$spruch[] = "Auf der Suche nach günstigem Webspace? Ich auch!";
$spruch[] = "Rauchen gefährdet die Gesundheit";
mt_srand((double)microtime()*1000000);
$zufall = mt_rand('0',count($spruch)-1);
$ausgabe = $spruch[$zufall];
echo $ausgabe;
?>
Gästebuch
Gästebücher sind auf fast jeder Homepage zu sehen. Die Meisten davon sind aber von kostenlosen Anbietern, bei
denen auch noch von oben bis unten Werbung hinzukommt.
PHP bietet die Möglichkeit, ein eigenes kleines Gästebuch zu erstellen. Man kann das auch mit MySQL machen, aber
wir bleiben mal beim kleineren Kaliber: der Textdatei. Aber zuerst brauchen wir ein Formular. In unserem Beispiel hat dieses
Formular folgende Bedienelemente:
- 2 Textfelder (für Name und E-Mailadresse)
- 1 Auswahlfeld (Betreff des Eintrags)
- 1 Textfeld (für den eigentlichen Eintrag)
Ohne viel Zeit für Erklärungen zu verschwenden, hier das Formular-Script:
<table border="0" width="50%">
<tr>
<td class="text-right">Name:
<td><input name="name" size="20">
<tr>
<td class="text-right">E-Mailadresse:
<td><input name="email" size="20">
<tr>
<td class="text-right">Betreff:
<td><select name="betreff" size="1">
<option>Homepage</option>
<option>Frage</option>
<option>Downloads</option>
<option>Sonstiges</option>
<tr>
<td class="text-right" valign="top">Meinung:
<td><textarea name="text" rows="7" cols="32"></textarea>
<tr>
<td>
<td><input type="submit" value="Eintragen!">
</table>
</form></center>
if ($name != "" && $text != "")
{
$text = ereg_replace("<","<",$text);
$text = ereg_replace(">",">",$text);
$text = ereg_replace('\\\"',""",$text);
$text = ereg_replace("\\\'","'",$text);
$text = ereg_replace("#","~",$text);
$text = ereg_replace("\n","<br>",$text);
$text = ereg_replace("\r","",$text);
$datei = fopen("eintraege.txt","a+");
fputs($datei,$name."#".$email."#".$betreff."#".$text."\n");
fclose($datei);
}
else
{
echo "Die Daten sind noch nicht komplett! Der Name und das Textfeld müssen ausgefüllt sein!";
}
?>
r | Erlaubt das Auslesen einer Datei. |
w | Schreibt in eine Datei und legt sie an, sofern sie nicht existiert. |
a | Hängt neue Daten an das Ende der Datei und legt eine Datei an, sofern sie nicht existiert. |
r+ | Schreibt Daten in eine Datei und liest die Daten aus. |
w+ | Schreibt Daten in eine Datei und liest die Daten aus, kreiert eine Datei, wenn sie nicht existiert, aber überschreibt Daten, sofern sie existiert. |
a+ | Schreibt Daten in eine Datei und liest die Daten aus, kreiert eine Datei, wenn sie nicht existiert. Neue Daten werden an das Ende der Datei gehängt. |
$name#$email#$betreff#$text
Hier ein Beispiel:
Susanne#[email protected]#Frage#Wann wird denn jetzt das Design geändert?
Die "#"-Zeichen erkläre ich später. Am Ende wird ein Zeilenumbruch durch "\n" erreicht, sodass jeder Eintrag in eine eigene Zeile kommt. Danach wird die Datei mit fclose geschlossen.
Die Daten sind jetzt gespeichert und müssen wiedergegeben werden. Das machen wir mit explode(). explode() zerlegt eine Datei in Stücke, wobei es dafür ein definiertes Trennzeichen verwendet. In unserem Fall "#". Das heißt also, dass jetzt jeder Teil einzeln als Variable zur Verfügung steht. Hier der Quellcode, um die Einträge anzeigen zu lassen (kann man unter das Formular setzen):
$eintrag = file("eintraege.txt");
$ausgabe = ""; $gesamt = count($eintrag)-1;
for ($i = $gesamt;$i>=0;$i--)
{
$element = explode("#",$eintrag[$i]);
$ausgabe .= "<table border='1' width='100%'>";
$ausgabe .= "<tr><td width="50%"><b>Name:<td width="50%">".$element[0];
$ausgabe .= "<tr><td><b>E-Mail:<td>".$element[1];
$ausgabe .= "<tr><td><b>Betreff:<td>".$element[2];
$ausgabe .= "<tr><td><b>Eintrag:<td>".$element[3];
$ausgabe .= "</table>";
}
echo $ausgabe;
?>
Counter
Einen Counter programmieren ist recht einfach. Wir gehen ähnlich wie beim Gästebuch vor. Wir legen eine Datei an,
in die wir den Counterstand eintragen lassen. Hier der Quellcode:
if (!file_exists("counter.txt"))
{
fopen("counter.txt","a");
}
$counter = fopen("counter.txt","r+");
$aufruf = fgets($counter,20);
$aufruf = $aufruf + 1;
rewind($counter);
fputs($counter,$aufruf);
echo $aufruf;
fclose($counter);
?>