(letzte Änderung an dieser Seite: 04.03.2021)
(letzte Synchronisation der PDF-Präsentation: 02.08.2017)
Falls keine PDF-Präsentation zu sehen ist, klicken Sie zum Download hier: Direktdownload PDF-Präsentation
isset() prüft, ob die Variable existiert (gibt true
zurück) oder nicht (gibt false
zurück). Das ist bspw. immer dann der Fall, wenn ein Formular abgesendet wurde – auch wenn es leer abgesendet wurde. Deshalb muss zusätzlich abgefragt werden, ob das Feld leer ist (if ($nachname != "")
).
Warum man isset() braucht:
Eigentlich könnte man sagen: “Es genügt, wenn ich abprüfe, ob das Feld leer ist.” Mit der isset()-Prüfung möchte man jedoch störende Fehlermeldungen vermeiden, z.B. im Falle bei der Abfrage eines nicht existenten Buttons oder Feldes:
PHP-Code$flitz = $_POST['nicht_existenter_button']; if $flitz != "" ...
führt zu einer Fehlermeldung. if $feld != ""
sollte als nur dann verwendet werden, wenn GANZ sicher ist, dass die Variable initialisiert wurde. Und das kann man mit isset abprüfen.
PHP-Codeif (isset($geschlecht) && ($geschlecht != "")) { echo "Geschlecht angegeben, sehr gut"; } else { echo "kein Geschlecht angegeben, schlecht"; }
Mit isset() kann der Absendebutton überprüft werden und damit Formulardarstellung und Auswertung auf einer Seite vorgenommen werden:
PHP-Code<?php if (isset($_POST['nachname']) && $_POST['nachname'] != "") { echo "Hallo ". $_POST 'nachname']!; exit; } elseif (isset($_POST['absenden'])) { echo "Bitte alle Felder ausfüllen!"; } ?> <form action = "<?php echo $_SERVER['PHP_SELF']; ?>" method = "post" /> Ihr Nachname: <input type = "text" name = "nachname" /><br /> <input type = "submit" value = "begrüße mich!" name = "absenden" /> </form>
Wenn das Feld nicht ausgefüllt wurde, erhält man die Fehlermeldung “Bitte alle Felder ausfüllen!” und erneut das Formular. Wurde das Feld ausgefüllt, erhält man die Ausgabe “Hallo NACHNAME!”.
Wenn ein Feld nicht ausgefüllt wurde (“Bitte füllen Sie alle Felder aus.”), wäre es komfortabel, wenn beim erneuten Anzeigen des Formulars die bereits ausgefüllten Felder nicht erneut ausgefüllt werden müssen.
1. Textfeld
PHP-CodeIhr Lieblingseis: <input type = "text" name = "eis" value = "<?php if ($_POST['eis'] != "") { echo $_POST['eis']; } ?>" />
2. Checkboxen oder Radio-Buttons
PHP-CodeIhr Geschlecht: m<input type = "radio" name = "geschlecht" value = "m" <?php if ($_POST['geschlecht'] == "m") { echo "checked = \"checked\""; } ?> /> - w<input type = "radio" name = "geschlecht" value = "w" <?php if ($_POST['geschlecht'] == "w") { echo "checked = \"checked\""; } ?> />
PHP-Code<!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>
PHP-Code<!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>
PHP-Code<?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>