Folien



(letzte Synchronisation der PDF-Präsentation: 04.12.2020)

Falls keine PDF-Präsentation zu sehen ist, klicken Sie zum Download hier: Direktdownload PDF-Präsentation

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:

PHP-Code
  <form action="index.php" method="post">  

Damit es beim erstmaligen Laden der Seite nicht zu Ärger kommt (weil das $_GET- oder $_POST-Array leer ist), müssen wir in diesem Fall natürlich mit empty prüfen, ob ein Feld leer ist. Siehe Beispiel unten. empty prüft übrigens auch auf isset, so dass wir uns das isset sparen können.

$_SERVER["PHP_SELF"] gibt den Pfad und Namen des aktuellen Dokuments zurück. Das können wir uns zunutze machen, wenn wir nur eine Seite haben wollen, auf der sowohl Formular als auch ggfs. Ergebnis der Formularauswertung angezeigt werden.

Als action des form-Tags geben wir nicht eine konkrete Seite an (wie ergebnis.php), sondern $_SERVER["PHP_SELF"]; damit sind wir unabhängig von Name oder Pfad der in action genannten Zieldatei.

Beachten Sie, dass wir den Pfad/Dateinamen natürlich echoen müssen, wir müssen ihn ja in den Code schreiben, also

PHP-Code
  <form action="index.php" method="<?php echo $_SERVER["PHP_SELF"]; ?>">  

Längeres Beispiel

PHP-Code
  <h1>Formular Eisbestellung</h1> <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <label for="idSorte">Sorte?</label> <input type="text" id="idSorte" name="eissorte"> <input type="submit" value="Absenden" id="idSubmit"> <?php if(empty($_POST["eissorte"])) { echo "<p>Bitte geben Sie eine Eissorte ein.</p>"; } else { echo "<p>Sie wollen also " . $_POST["eissorte"] . " …</p>"; } ?> </form>  

Übungen

Alle Übungen finden Sie in der Materialsammlung (dort auch alle zusätzlichen Dateien wie Bilder, Klassendiagramme oder HTML-Vorlagen!).

Die aktuelle Übung können Sie hier als txt-File herunterladen.


***** Ü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