Mehrseitiges Formular mit PHP prüfen?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
beitrag
break
buchstabe
eingabe
eingeben
fehler
formular
formularseite
fragen
grad
hlfte
karpfen
komplett verzichten
lsung
page
richtig daten
session
sichtbare weiterleitung
textfeld
variable
-
Hallo zusammen,
stehe hier grad vor einem Problem mit einem Formular, dass sich über mehrere Seiten streckt. Da in diesem Formular einige Textfelder überprüft werden sollen, ob diese auch ausgefüllt sind, will ich dies mit PHP prüfen, da man JS ja deaktivieren kann. Nur fehlt mir grad die Idee, wie ich das realisieren kann. Denn ich kann das ja erst abprüfen, wenn ich eine Seite weiter bin, oder täusch ich mich?
Würde mich über hilfreiche Tipps freuen.
Gruß -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Speicher Seite für Seite in eine Session. Diese kannst du dann auf der finalen Seite abfragen und gegebenenfalls eine Fehlermeldung ausgeben.
So würde ich es regeln. Nachteil: Meistens müssen für soetwas Cookies aktiviert sein, weil die Session sonst nicht läuft. Dafür hätte ich ein System mit MySQL und $_GET Variablen im Angebot, aber das ist eigentlich unnötig.^^ -
Jo, die Möglichkeit gibt es, hat aber einen entscheidenden Nachteil.
Der User müsste wieder alle Seiten zurückgehen, nur um einen Fehler auf Seite 1 des 4-5-seitigen Formulars zu korrigieren. Das bissel doof
Mit Session wollt ich das sowieso machen.
Hab da nun eine Lösung gefunden, die mir taugt.
Andere Frage:
Kann ich ein Textfeld in ein Formular machen, welches nur Zahlen aufnimmt? In dem also keine Buchstaben und andere Zeichen erlaubt sind?
Beitrag geändert: 17.9.2007 16:27:39 von karpfen -
karpfen schrieb:
Andere Frage:
Kann ich ein Textfeld in ein Formular machen, welches nur Zahlen aufnimmt? In dem also keine Buchstaben und andere Zeichen erlaubt sind?
1) Willst du eins auf die Eingabe von Zahlen überprüfen, nachdem es abgeschickt wurde?
2) Oder willst du direkt die Eingabe von Zahlen verhindern?
zu 1): Kannst du problemlos mit PHP machen. Stichwort: Reguläre Ausdrücke
zu 2): Du könntest es vielleicht mit JavaScript verhindern. Allerdings braucht der User dann nur JS auszuschalten und kann wieder alle Zeichen verwenden. -
Dann muss ich es wohl nach dem Abschicken prüfen, denn auf JS wollte ich komplett verzichten.
Dank dir ;) -
Dafür brauchst du eigentlich nichtmal unbedingt RegEx. Ich denke mit is_numeric() http://www.php-resource.de/manual.php?p=function.is-numeric sollte das einfacher gehen.
-
ich würd einfach nach dem man auf der Formularseite aus den Weiter Button gedrückt hat wieder zur selben seite gehen und die Felder überprüfen lassen und wenn alles ok ist dann gehts automatisch weiter zur nächsten Seite mit header (location... ). Andernfalls kannst du dann die fehlerhaften felder markieren lassen oder was sonst dann passieren soll...
Musst zwar auf jeder Formularseite das Überprüfungsscript reinschreiben, aber ist eine einfache Lösung.
-
Gut, diese Lösung hört sich erstmal auch nicht so verkehrt an.
Mit header:location entsteht eine sichtbare Weiterleitung? Oder merkt der User davon nichts bis sehr wenig??? -
Ich unterteile meine PHP Projekte generell in 2 Hälften:
1. Hälfte: sogenannte Doings zum Bsp. Überprüfung ob eingaben richtig, Daten aus DB holen usw.
2. Hälfte Anzeige von Daten
Die index.php sieht dann in etwa so aus:
<? include_once(\'functions.inc.php\'); switch(strtolower($_REQUEST[\'do\'])) { case \'checkSeite1\': checkInputSeite1(); break; case \'checkSeite2\': checkInputSeite2(); break; } showHtmlHeader(); switch(strtolower($_REQUEST[\'page\'])) { case \'showSeite1\': showSeite1(); break; case \'showSeite2\': showSeite2(); break; case \'showSeite3\': showSeite3(); break; default: showSeite1(); } showHtmlFooter(); ?>
die Submits von den jeweiligen Seiten bekommen immer ein HiddenField mit do = checkSeite1 bzw. checkSeite2 usw.
Dadurch kommen die Usereingaben immer in den Funktionen checkInputSeite1() usw. an.
Dort mach ich dann die Kontrolle der Eingaben!
Sollte die Eingabe richtig sein setze ich die Variable $_REQUEST[\'page\'] = showSeite2 (also zur nächsten Seite)
sollte die Eingabe jedoch falsch sein, setze ich die Variable $error_eingabe1 = \"Hier bitte Zeichen eingeben\" und
setze außerdem die Variabel $_REQUEST[\'page\'] = showSeite1 (also auf die gerade gezeigte Seite!
In jeder showSeite Fkt. muß natürlich dann auch die Abfrage auf den $error_eingabe1 sein, sonst würde ja nicht der Fehler
ausgegeben.
Bsp.:
function showSeite1() { echo \"<form>\"; echo \'<div>\'; if (!empty($error_eingabe1)) { echo $error_eingabe1; } echo \"<input name=\'text1\' value=\'\".$_REQUEST[\'text1\'].\"\'>\"; echo \"</div>\"; ... echo \"</form>\"; }
Hoffe konnte ein wenig weiter helfen.
Bei Fragen einfach nochmal fragen.
Grüßle
Beitrag geändert: 18.9.2007 15:11:01 von scout -
Vielen Dank schonmal. Hilfreich war das mit Sicherheit. Werd es mir, sobald ich wieder etwas mehr Zeit habe mal anschauen. Klingt aber logisch. Ich bilde mir ein, schon mal so etwas ähnliches probiert zu haben, hatte aber nicht funktioniert (Kann aber auch sein, dass ICH da was falsch gemacht habe)
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage