Wenn wir ein Formular mit PHP auf der gleichen Seite auswerten wollen, auf der auch das Formular steht, müssen wir als action des Formulars die gleiche Seite angeben. Wenn unser Formular also auf der Seite index.php steht, muss im form
-Tag stehen:
Beachten Sie, dass wir den Pfad/Dateinamen natürlich echoen müssen, wir müssen ihn ja in den Code schreiben, also
***** Übungen: PHP - isset() *****
PHP-14_1: Verständnis über die Benutzung von isset() zur Verifizierung des Status von Formularfeldern
Erklären Sie, warum im folgenden Skript beim ersten Aufrufen des Formulars die Fehlermeldung "Undefined index ..." auftritt, obwohl das Skript ansonsten funktioniert (möglicherweise wird die Fehlermeldung nicht bei Ihnen angezeigt, weil sie unterdrückt wird; im php_error.log finden Sie sie aber).
--- PHP-Code Start ---
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Einfache isset-Uebung 1</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body>
<h1>Einfache isset-Uebung 1</h1>
<p>Status einer Bestellung abfragen</p>
<form method = "GET" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<label for="bestellnummer">Bestellnummer: </label><input type="text" name="bestellnummer" id="bestellnummer" value=""
style="border-color : green"/>
<label for="nachname">Ihr Nachname: </label><input type="text" name="nachname" id="nachname" value=""
style="border-color : blue"/>
<input type = "submit" name="submit" value="Anfrage absenden">
</form>
<?php
echo "<p>Sie haben folgende Daten eingegeben:<br />
Nachname: " . $_GET['nachname'] . "<br />
Bestellnummer: " . $_GET['bestellnummer'] . "</p>";
?>
</body>
</html>
--- Code Ende ---
PHP-14_2: isset() - Einfache Übung 1
Die isset-Abfrage im folgenden Skript muss ergänzt werden.
a) Die eingegebenen Bestelldaten sollen unter dem Formular ausgegeben werden, aber nur, wenn das Formular abgesendet wurde.
b) Wenn ein Feld leer abgeschickt wurde, soll eine entsprechende Meldung ausgegeben werden ("Es wurde keine Bestellnummer eingegeben o.ä.").
--- PHP-Code Start ---
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Einfache isset-Uebung 1</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body>
<h1>Einfache isset-Uebung 1</h1>
<p>Status einer Bestellung abfragen</p>
<form method = "GET" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<label for="bestellnummer">Bestellnummer: </label><input type="text" name="bestellnummer" id="bestellnummer" value=""
style="border-color : green"/>
<label for="nachname">Ihr Nachname: </label><input type="text" name="nachname" id="nachname" value=""
style="border-color : blue"/>
<input type = "submit" name="submit" value="Anfrage absenden">
</form>
<?php
if(isset($_GET['submit'])) // Formular wurde mit submit-Knopf abgeschickt
{
// HIER BITTE EINGEGEBENE BESTELLNUMMER UND EINGEGEBENEN NACHNAMEN AUSGEBEN
}
else
{
echo "<p><strong>Hier werden Sie nach dem Abschicken des Formulars das Ergebnis Ihrer Anfrage sehen.</strong></p>";
}
?>
</body>
</html>
--- Code Ende ---
PHP-14_3: Skript ergänzen
Ergänzen Sie das folgende Skript an den entsprechenden Stellen, dass es korrekt läuft.
--- PHP-Code Start ---
<?php
$farbe = "black";
if (1 == 1) // Hier korrekt ergänzen
{
$bestellnummer = $_GET['bestellnummer'];
if (1 == 1) // Hier korrekt ergänzen
{
$farbe = "red";
$message = "Bitte fuellen Sie die rot umrandeten Felder aus.";
}
else
{
$message = "Sie haben die Bestellnummer " . $hierbitteergaenzen . " eingegeben."; // korrekte Variable eintragen
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Skript ergaenzen</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
</head>
<body>
<h1>Isset() - Skript ergaenzen</h1>
<p>Status einer Bestellung abfragen</p>
<form method = "GET" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<label for="bestellnummer">Bestellnummer: </label><input type="text" name="bestellnummer" id="bestellnummer" value=""
style="border-color : <?php echo $farbe; ?>"/>
<input type = "submit" name="submit" value="Anfrage absenden">
</form>
<?php
// Hier bitte ergaenzen (Ausgabe soll erfolgen, entweder "Sie haben Bestellnummer xy eingegeben" oder
// "Bitte alle Felder ausfüllen"
// Sie brauchen nur EINE Zeile!
?>
</body>
</html>
--- Code Ende ---
PHP-14_4: isset() - Button abfragen
Erstellen Sie ein Formular, das ein Passwort ($passwort) abfragt. Überprüfen Sie nach dem Absenden des Formulars mit dem Button "submit", ob die beiden Variablen ($passwort und der "submit"-Button) initialisiert wurden. Geben Sie eine entsprechende Meldung aus ("Button wurde gedrückt/nicht gedrückt."; "Variable für \$passwort ist initialisiert/nicht initialisiert.").
Bevor Sie das Programm testen: Welche der vier Meldungen werden Sie niemals zu Gesicht bekommen?
1. Button wurde gedrückt.
2. Button wurde nicht gedrückt.
3. $passwort wurde initialisiert.
4. $passwort wurde nicht initialisiert.
Weitere Übungen finden Sie in den Verzeichnissen (dazu müssen Sie aber schon isset() können, siehe php12_isset):
php14_UE1-gleiche-seite
php14_UE2-gleiche-seite
php14_UE3-andere-methode
php14_UE4-markierung