| <- Vorlesung 4 | Übungen | Vorlesung 6 -> |
$abfrage = "DELETE FROM kneipen WHERE ID=120";Achtung: Vergißt man den WHERE-Teil, werden alle Datensätze der Tabelle gelöscht! Als Ersteller einer dynamischen Webseite mit PHP und einer Datenbank sollte man also immer genau darüber nachdenken, was den Betrachtern erlaubt werden soll und was nicht.
Ein Beispiel:
Wir wollen für eine Anzahl von Tagen berechnen, wieviele Sekunden diese
Tage zusammen haben:
function tag ($anzahl) {
$sekunden = 3600 * 24 * $anzahl;
return $sekunden;
}
$x = tag(7);
echo "7 Tage bestehen aus $x Sekunden !";
$anzahl nennt man auch Argument der Funktion.
Eine Funktion kann mehrere Argumente, oder auch kein
Argument besitzen:
function zinseszins ($prozent,$laufzeit) {
$kapital = 10000.0;
$x = 1.0 + ($prozent/100.0);
$y = $kapital * exp( $laufzeit*log($x) );
return $y;
}
$proz = 6;
$zeit = 10;
$x = $zinseszins($proz,$laufzeit);
echo "Das Kapital beträgt $x Euro";
Mehr zu den verwendeten mathematischen Funktionen kann man wiederum
im Handbuch
nachlesen.
Problematisch ist im obigen (zugegebenermaßen etwas konstruierten) Beispiel, daß die Variable $kapital in der Funktion selbst festgelegt wird. Natürlich wird man auch diesen Wert normalerweise als Argument der Funktion übergeben, also etwa:
function zinseszins ($prozent,$laufzeit,$kapital) { ...
Wir wollen aber jetzt den Fall betrachten, daß diese Variable
bereits gesetzt ist, und wir sie nicht als Argument übergeben wollen.
Dann müssen wir explizit angeben, daß die Variable "von außen"
stammt. Dies geschieht durch den Befehl global:
$kapital = 10000.0;
function zinseszins ($prozent,$laufzeit) {
global $kapital;
$x = 1.0 + ($prozent/100.0);
$y = $kapital * exp( $laufzeit*log($x) );
return $y;
}
$proz = 6;
$zeit = 10;
$x = $zinseszins($proz,$laufzeit);
echo "Das Kapital beträgt $x Euro";
$x = " Ich bin eine Zeichenkette! "; $y = trim($x);Die Befehle ltrim() und chop() entfernen whitespace vor, bzw. nach der Zeichenkette
Für die verspielten PHP-Programmierer:
strtoupper() und strtolower() wandeln alle Zeichen eines
Strings in Großbuchstaben, bzw. Kleinbuchstaben um.
Achtung: Probleme kann es bei Umlauten geben.
Der Befehl ucfirst() wandelt das erste Zeichen eines Strings in Großbuchstaben um (wenn möglich).
Der Befehl ucwords() hingegen wandelt in jedem Wort eines Strings das erste Zeichen in Großbuchstaben um (wenn möglich).
Der folgende Befehl ist besonders wichtig, wenn man vorhandenen Text für das WWW aufbereiten will:
$x = nl2br($y);ersetzt alle Zeilenumbruch-Zeichen ("\n") des Strings $y in die Zeichenfolge <BR>\n.
Daneben gibt es noch einige wichtige Funktionen, um Strings zu vergleichen, zu ersetzen und mit HTML-Sonderzeichen umzugehen.
Cookies bestehen aus folgender Information:
Das Verfallsdatum des Cookie muß in Sekunden seit dem 1. Januar 1970
angegeben werden.
Die Funktion time() gibt die Sekunden seit dem 1. Januar 1970 der
momentanen Zeit an. Weitere Datums- und Zeitfunktionen sind
im
Handbuch nachzulesen.
Da die Berechnung der Sekunden nicht immer ganz übersichtlich ist, empfiehlt
sich die Verwendung einer Funktion:
Cookies lesen ist mit PHP wieder sehr einfach realisiert:
Der Inhalt des Cookies ist in einer Variablen
mit dem Namen des Cookies enthalten:
Ein Server kann mit PHP ein Cookie wieder entfernen, indem
lediglich der Befehl setcookie mit dem Namen des Cookies als
Argument angegeben wird:
Soweit zur Einführung in PHP. Natürlich spiegelt dies
nur einen geringen Teil der Möglichkeiten von PHP wider.
Aber das bisher Gelernte sollte es dem Leser ermöglichen,
sich selbst im
PHP-Handbuch neue
Befehle anzueignen.
20) Cookies
Als Cookies werden kurze Informationen bezeichnet,
die der WWW-Server beim Client (Betrachter) hinterlassen kann.
Sie sind vor allem beim elektronischen Einkaufen im WWW von Bedeutung,
genauer gesagt sind sie immer dann von Bedeutung, wenn der Server
weitergehende Information vom Betrachter haben muß,
als nur die Internet-Adresse, die eine Seite anfordert.
Beispiel:
Wir wollen feststellen, ob ein Betrachter eine Seite schon einmal
aufgerufen hat.
Dazu setzen wir beim ersten Aufruf der Seite ein Cookie.
Dies muß allerdings vor dem HTML-Head geschehen, d.h.
am Anfang der Datei. (Unbedingt auch die Ausgabe von Leerzeilen, -Zeichen
vor diesem PHP-Teil vermeiden!)
<?
$t = time()+3600*24*10;
SetCookie("mycookie","Schon besucht",$t,"/test",".de");
?>
<HTML>
...
Dieser Befehl setzt ein Cookie mit dem Namen
mycookie auf den Wert "schon besucht" mit einem
Verfallsdatum von 10 Tagen. Lesen darf dieses Cookie jeder Server
mit der Endung .de, allerdings nur aus Dateien, die in einem
Verzeichnis /test, oder Unterverzeichnissen davon liegen.
function tage ($anzahl) {
$sekunden = time()+ 3600 * 24 * $anzahl;
return $sekunden;
}
SetCookie("mycookie","Schon besucht",tage(10),"/test",".de");
echo "$mycookie";
gibt also den Wert des Cookies aus, in unserem Fall
den Text "Schon besucht".
SetCookie("mycookie");
21) Variable Variable
Dies ist nun schon fortgeschrittene PHP-Programmierung:
In manchen Fällen will man Schleifen über eine Menge
von Variablen laufen lassen.
Zum Beispiel wenn man viele Eingabefelder in einem
Formular hat:
<INPUT NAME="feld0" >
<INPUT NAME="feld1" >
<INPUT NAME="feld2" >
...
<INPUT NAME="feld99" >
Nun ist es sehr mühsam, alle Felder einzeln zu behandeln.
Will man z.B. einfach den Inhalt aller Eingabefelder ausgeben,
so kann man statt der folgenden 100 Befehle
echo "feld0: $feld0 <BR>\n";
echo "feld1: $feld1 <BR>\n";
...
echo "feld99: $feld99 <BR>\n";
auch folgendermaßen vorgehen.
Wir basteln uns den jeweiligen Variablennamen zusammen:
for ($i=0;$i<100;$i++) {
$v = "feld".$i;
echo "$v: ${$v} <BR>\n";
}
Mit einem $v erhalten wir den Variablennamen, mit
${$v} greifen wir auf den Inhalt der Variablen mit dem Namen
$v zu.
22) Arrays aus Formularen
Abschließend noch ein letzter Trick: Wenn wir in einem
Formular
aus einer Menge von HTML-Checkboxen mit PHP ermitteln wollen,
welche Checkboxen angeklickt wurden, dann scheitert die bisherige
Vorgehensweise:
<INPUT TYPE=CHECKBOX NAME="x" VALUE=1 > Option 1
<INPUT TYPE=CHECKBOX NAME="x" VALUE=2 > Option 2
...
Schickt man dieses Formular ab, so hat die
PHP-Variable $x nur den Wert der ersten angeklickten Checkbox.
Der Trick ist, in HTML die Checkbox zum Beispiel so zu benennen:
<INPUT TYPE=CHECKBOX NAME="x[]" VALUE=1 > Option 1
<INPUT TYPE=CHECKBOX NAME="x[]" VALUE=2 > Option 2
...
Dadurch wird in PHP ein Array mit dem Namen $x existieren.
Die Werte können dann so ausgelesen werden:
for ($i=0;$i<sizeof($x);$i++) {
echo "$x[$i] ";
}
| <- Vorlesung 4 | Übungen | Vorlesung 6 -> |