Sie sind hier: Workshops PHP-Workshop

PHP-Workshop

PHP-Workshop Teil 5

17) Ein weiterer SQL-Befehl

Nachdem wir nun ein wenig Erfahrung mit SQL-Befehlen sammeln konnten, trauen wir uns auch an den DELETE-Befehl heran. Wichtig ist für diesen Befehl, daß ganz genau (und vorsichtig) spezifiziert wird, welcher Datensatz oder welche Datensätze aus der Datenbank gelöscht werden sollen. In unserem Beispiel ist es am besten, wenn man über das Feld ID den zu löschenden Datensatz angibt, denn dieses Feld enthält für jeden Datensatz eine eindeutige Nummer. Wollen wir den Datensatz mit ID=120 löschen, so geben wir als Abfrage an:

$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.
18) Funktionen

Ein wichtiger Bestandteil einer jeden Programmiersprache ist die Fähigkeit, mehrere Befehle zu einem einzigen Befehl zusammenzufassen, d.h. neue Funktionen zu definieren. PHP hat diese Fähigkeit selbstverständlich auch.

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 + ($proz/100.0);
$y = $kapital * exp( $laufzeit*log($prozent) );
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 + ($proz/100.0);
$y = $kapital * exp( $laufzeit*log($prozent) );
return $y;
}

$proz = 6;
$zeit = 10;
$x = $zinseszins($proz,$laufzeit);
echo "Das Kapital beträgt $x Euro";

19) String-Funktionen

Ein weiteres wichtiges Betätigungsfeld von PHP ist die Bearbeitung von Zeichenketten. Es gibt eine ganze Reihe von Befehlen um Zeichenketten zu manipulieren, wir stellen hier nur die wichtigsten vor, der Rest kann im Handbuch nachgeschlagen werden. trim entfernt Leerzeichen, Tabulatorzeichen etc. (sogannten "whitespace") vor dem ersten und nach dem letzten "echten" Zeichen in der Zeichenkette.

$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.

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.

Cookies bestehen aus folgender Information:

Name: Name
Value: Wert
expires: Verfallsdatum
domain: Adressraum der Server, die das Cookie wieder lesen dürfen.
path: Nur über Seiten, die in diesem Verzeichnis, oder Unterverzeichnissen davon liegen, darf das Cookie angefordert werden.
secure: Wenn gesetzt, darf das Cookie nur über verschlüsselte Informationskanäle übertragen werden.
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.
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:

function tage ($anzahl) {
$sekunden = time()+ 3600 * 24 * $anzahl;
return $sekunden;
}

SetCookie("mycookie","Schon besucht",tage(10),"/test",".de");

Cookies lesen ist mit PHP wieder sehr einfach realisiert: Der Inhalt des Cookies ist in einer Variablen mit dem Namen des Cookies enthalten:
echo "$mycookie";

gibt also den Wert des Cookies aus, in unserem Fall den Text "Schon besucht".
Ein Server kann mit PHP ein Cookie wieder entfernen, indem lediglich der Befehl setcookie mit dem Namen des Cookies als Argument angegeben wird:

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] ";
}

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.




 Zurück zu: Workshops