| <- Vorlesung 1 | Übungen | Vorlesung 3 -> |
$t = "Ich soll meine Uebungsaufgaben selbst erstellen!<BR>\n";
$i = 0;
while ($i<10) {
echo $t;
$i++;
}
kann man auch schreiben:
$t = "Ich soll meine Uebungsaufgaben selbst erstellen!<BR>\n";
$i = 0;
do {
echo $t;
$i++;
} while ($i<10);
Was ist der Unterschied? Im zweiten Fall werden zuerst die Befehle innerhalb der geschweiften Klammern ausgeführt, danach wird getestet, ob ($i<10). Dies ist nicht der Fall, also wird abgebrochen. D.h. aber, die Schleife wird mindestens einmal durchlaufen.
Eine weitere Möglichkeit, eine Schleife zu programmieren, ist der for-Befehl. Gleich ein Beispiel:
$t = "Ich soll meine Uebungsaufgaben selbst erstellen!<BR>\n";
for ($i=0;$i<10;$i++) {
echo $t;
}
Der for-Befehl besteht aus drei Ausdrücken.
for (ausdruck1;ausdruck2;ausdruck3) { ... }
$t = "Ich soll meine Uebungsaufgaben selbst erstellen!<BR>\n";
for ($i=10;$i>0;$i--) {
echo $t;
}
if ($i<0) {
echo "$i ist kleiner als Null\n";
}
oder auch
if ($i<0) {
echo "$i ist kleiner als Null\n";
} else {
echo "$i ist nicht kleiner als Null\n";
}
Man kann diesen Befehl auch schachteln:
if ($i<0) {
echo "$i ist kleiner als Null\n";
} else if ($i>0) {
echo "$i ist groesser als Null\n";
} else {
echo "$i ist Null\n";
}
Hat man mehrere Tests der gleichen Variable, so
kann man mit dem switch-Befehl evtl. Arbeit einsparen:
switch ($name) {
case "Heinrich":
echo "Ich bin der kluge Heinrich";
break;
case "Hans":
echo "Ich bin der dumme Hans";
break;
case "Agathe":
echo "Ich bin die Agathe und klüger als Heinrich und Hans";
break;
default:
echo "Wir sind der Rest";
}
Falls die Variable $name den Wert "Hans"
hat, wird als nächster Befehl
echo "Ich bin der dumme Hans";ausgeführt. Normalerweise würden dann alle nachfolgenden Befehle ausgeführt werden, u.a.
echo "Ich bin die Agathe und klüger als Heinrich und Hans";Dies ist meist nicht erwünscht, man springt deshalb mit break aus dem switch-Befehl heraus.
In 4) haben wir gelernt, daß in einer PHP-Datei, die aus einem Formular gestartet wird, die Namen der Formular-Elemente als Variablen zur Verfügung stehen. Dies kann man nützen, um Formular und Befehle, die das Formular behandeln, in eine einzige Datei zu schreiben:
Angenommen unsere Datei form.html enthält folgendes Formular:
<FORM ACTION="form.html" METHOD=POST> <INPUT NAME="beliebigername"> <INPUT TYPE="submit"> </FORM>Dann ruft sich beim Klicken auf submit die Datei selbst auf. Allerdings ist dann die Variable beliebigername beliebiger Name gesetzt. Dies können wir folgendermaßen ausnützen:
<?
if (isset($beliebigername)) {
echo "Sie haben $beliebigername eingegeben\n";
}
?>
<P>
<FORM ACTION="form.html" METHOD=POST>
<INPUT NAME="beliebigername">
<INPUT TYPE="submit">
</FORM>
Wird die Datei zum ersten Mal aufgerufen, d.h. ohne daß man auf den
submit-Button klickt, so ist die Variable
$beliebigername nicht gesetzt, der Ausdruck
isset($beliebigername) ist also nicht wahr.
Füllt man das Formular dann aus und klickt auf submit, so
ist die Variable gesetzt, isset($beliebigername)
ist wahr, und es wird
"Sie haben $beliebigername eingegeben\n";
ausgegeben.
Will man danach abbrechen, so sollte der Befehl
exit;verwendet werden.
include("dateiname");
liest den Inhalt der Datei dateiname so, als ob er
an dieser Stelle stehen würde.
Damit kann z.B. einheitliches Layout bei einer größeren Anzahl von Dateien
erreicht werden.
|
Um z.B. eine Datei xxx zu erzeugen, in die der Webserver schreiben darf, müssen Sie folgendermaßen vorgehen:
|
OK. Gehen wir davon aus, daß wir nun eine Datei mit dem Namen xxx haben, deren Inhalt wir lesen wollen.
$datei = fopen("xxx","r");
Das heißt, wir öffnen die Datei mit dem Namen xxx und wollen darin lesen
("r"). Die technischen Details lassen wir dabei von der Variablen
$datei regeln, d.h. wenn wir später aus der Datei lesen wollen, so
benützen wir die Variable $datei.
while (!feof($datei)) {
$zeile = fgets($datei,1000);
echo $zeile;
}
feof($datei) ist wahr, sobald wir an das Datei-Ende gelangt sind.
$zeile = fgets($datei,1000); liest maximal die nächsten 1000 Zeichen,
hört aber auf, sobald eine neue Zeile beginnt, oder das Ende der Datei
erreicht ist.
fclose($datei);
fwrite($datei, "Ein Text");kann der String Ein Text in die Datei geschrieben werden.
| <- Vorlesung 1 | Übungen | Vorlesung 3 -> |