![]() |
[PHP] Aus if-Anweisung springen
Hallo,
nach langer (Urlaubs-)Zeit, bin ich mal wieder hier. Und das gleich mit einer Frage ;) Ich programmiere gerade eine Seite in PHP. PHP an sich kann ich auch ganz gut, aber ich habe gerade eine Stil-Frage. Und zwar prüfe ich viele verschiedene Dinge, wenn ich ein ausgefülltes Formular zugesendet bekomme. Nun möchte ich bei einem Fehler die weiteren Prüfungen abbrechen und mit dem Ausgeben der Fehlermeldung und der restlichen Seite fortfahren. Es sieht ungefähr so aus:
Code:
Klar könnte ich eine Kontrollvariable ($err = true / $err = false) anlegen, aber dann müsste ich immer ihren Wert prüfen, es ist viel Schreibarbeit und irgendwie unprofessionell....
if(isset($_POST['speichern'])) {
$username = $val->checkText('Username', $_POST['username'], 3, 15); //Hier nicht validieren, da md5 benutzt wird. $pass1 = $_POST['pass1']; $pass2 = $_POST['pass2']; if($pass1 !== $pass2) { addFehler('Passwort', 'Die Passwörter stimmen nicht überein'); //HIER AUS DER IF RAUSSPRINGEN - EXIT GEHT NICHT, WEGEN DEM ANZEIGEN DES TEMPLATES!!!!! } if($pass1 == "" || $pass1 == NULL) { addFehler('Passwort', 'Das Passwort darf nicht leer sein'); //HIER AUS DER IF RAUSSPRINGEN - EXIT GEHT NICHT, WEGEN DEM ANZEIGEN DES TEMPLATES!!!!! } $user = new user(); $userdaten = array("username" => $username, "passwort" = md5($pass1)); $user->insertUser(TABLE_USER, $userdaten); addMeldung('', 'Die Registrierung war erfolgreich'); } $engine->showTemplate('registrierung''); Gibt's eine andere Lösung? Vielen Dank |
Re: [PHP] Aus if-Anweisung springen
Hi,
wie wäre es mit Else-If?
Code:
if(isset($_POST['speichern'])) {
$username = $val->checkText('Username', $_POST['username'], 3, 15); //Hier nicht validieren, da md5 benutzt wird. $pass1 = $_POST['pass1']; $pass2 = $_POST['pass2']; if($pass1 !== $pass2) { addFehler('Passwort', 'Die Passwörter stimmen nicht überein'); //HIER AUS DER IF RAUSSPRINGEN - EXIT GEHT NICHT, WEGEN DEM ANZEIGEN DES TEMPLATES!!!!! } else if($pass1 == "" || $pass1 == NULL) { addFehler('Passwort', 'Das Passwort darf nicht leer sein'); //HIER AUS DER IF RAUSSPRINGEN - EXIT GEHT NICHT, WEGEN DEM ANZEIGEN DES TEMPLATES!!!!! } else { $user = new user(); $userdaten = array("username" => $username, "passwort" = md5($pass1)); $user->insertUser(TABLE_USER, $userdaten); addMeldung('', 'Die Registrierung war erfolgreich'); } } $engine->showTemplate('registrierung''); |
Re: [PHP] Aus if-Anweisung springen
Ok das wäre eine Lösung (bei kleinen Formularen). Mein Formular ist aber größer (viel größer) - ich habe es hier nur gekürzt.
Oder kann man else-if auch intelligent bei großen Formularen (oder Prüfungen generell) anwenden und meinen gewünschten Effekt erreichen? Ich hätte halt gerne was wie "exit_if()"... break / continue etc. funktioniert leider nicht. |
Re: [PHP] Aus if-Anweisung springen
wie wärs mit
Code:
mit einem dazugehörigen Exception-Handler kannst Du die Meldung auch schön formatiert ausgeben.
throw new Exception()
Viele Grüße+ |
Re: [PHP] Aus if-Anweisung springen
Ich hab's mir fast gedacht... Das ist jetzt wirklich Neuland.
Ich habe mir eine Funktion gebaut, die das "Fehlermeldungen"-Array ausgibt und schön positioniert anzeigt. Das wäre ja jetzt quasi überfüllig, oder? Naja, ich schau mir das erstmal an. Danke! |
Re: [PHP] Aus if-Anweisung springen
Oder Du baust den ganzen Befehlsblock in eine Funktion und bei einem Abbruch trägst Du "return false" ein. Am Ende ein "return true". Dann kannst Du beim IF diese Funktion aufrufen und prüfen, ob sie durchgelaufen ist oder nicht.
|
Re: [PHP] Aus if-Anweisung springen
@iGoA: Sehr gut. So wird's gemacht! Schau mal, ich habe einige Klassen geschrieben, die es genauso machen - warum kam ich da grad net selbst drauf.... vllt. weil's keine Klasse ist? :gruebel:
Wie auch immer - coole Idee - wird umgesetzt Die Exceptions und Error_Handler scheinen mir ein wenig mit Kanonen auf Spatzen geschossen. Danke an alle! |
Re: [PHP] Aus if-Anweisung springen
Andere Alternative:
Code:
Die einzelnen case-Teile werden natuerlich ausgewertet und der erste, der false ergibt wird abgearbeitet...ganz simples Konstrukt ;)
switch (false) {
case $pass1 == $pass2: // Code break; case !empty($pass2): // Code break; default: // Code break; } Das Ganze kann man uebrigens auch mit switch (true) ausfuehren. Greetz alcaeus |
Re: [PHP] Aus if-Anweisung springen
Danke für die Antworten. Jetzt habe ich noch eine Stil-Frage dazu:
Ich sprach doch vorhin von meinem Fehlermeldungen-Array. Jeder Fehler der Auftritt, wird in das Array über die simple Funktion "addFehler" geschrieben. Immer dann, wenn ich nicht möchte, dass spezieller Code ausgeführt wird, prüfe ich mit der simplen Funktion fehlerCount, ob Fehler aufgetreten sind.
Code:
Kann man doch auch so lassen, oder ist das schlechter Stil?
function addFehler($feld, $msg) {
global $fehler; $fehler[$feld] = $msg; } function addMeldung($feld, $msg) { global $meldungen; $meldungen[$feld] = $msg; } function fehlerCount() { return count($fehler); } //////////////// index.php /////////////// [Prüfungen mit Fehler] if(fehlerCount == 0) { $db->insertSQL..... } [Template anzeigen (und Fehler ausgeben)] |
Re: [PHP] Aus if-Anweisung springen
Diese globals sind absolut haesslicher Stil und die prozedurale Programmierung ist absolut nicht mehr zeitgemaess. Sorry wenns boese klingt, is aber so.
BTW, guck dir fuer zukuenftige Projekte mal PHP-Frameworks wie z.B. ![]() ![]() Greetz alcaeus [edit]Link zum Tutorial angepasst[/edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz