Eingabe-Check bei großen Formularen

sheeba1507

Erfahrenes Mitglied
Hallo zusammen,

mein Eingabe-Formular für einen neuen Auftrag besteht aus ca. 40 Eingaben
mit Daten-Feldern, Select-Button, Radio-Button und Bilder-Upload.
Wenn ich jetzt für jede Eingabe eine Prüfung einbaue, würde das ganze
Script mit Sicherheit sehr unübersichtlich werden.

Gibt es eine alternative Möglichkeit, daß man die fehlenden Eingaben nicht
einzeln meldet, sondern z.B. alle fehlenden oder fehlerhaften Eingaben
sammelt und nach der Überprüfung alle fehlenden oder fehlerhaften Felder
markiert (grauer Hintergrund, rotes Sternchen etc.) und unten eine Meldung
ausgibt mit dem Hinweis, daß Eingaben fehlen oder fehlerhaft sind ?

Meine erste Idee war, alle inkorrekten Eingaben in einem Array zu sammeln
und dieses dann zu überprüfen.
Sobald dieses Array keinen Eintrag mehr enthält, wird das Script fortgesetzt
mit der eigentlichen Aufgabe.
Leider weiß ich nicht, ob so etwas möglich ist und wenn ja, wie man so etwas
realisieren könnte.

Ich hoffe, ihr könnt mir im Gegensatz zu Google hier weiterhelfen.
Vorab schon mal vielen Dank.

Gruß, Mike
 
Ich mache es immer folgendermaßen:

PHP:
	if((!isset($Var,$Var)) or empty($Var) or empty($Var)) {
		$fehler= 1;
		$fehlermeldung .= "Bitte f&uuml;llen Sie alle Felder aus.<br>";
	}

if($fehler == 1) {
	echo($fehlermeldung.'<p>');
}

Prüfen musst du eh alle, da kommst du nicht drum herum, vielleicht erleichtert dir eine Klasse das Prüfen!
Das mit dem grauen hintergrund und dem roten Stern sind ja nur reine HTML-Angaben, dass ist ja nicht weiter das Problem oder?
 
Prüfen musst du eh alle, da kommst du nicht drum herum, vielleicht erleichtert dir eine Klasse das Prüfen!
Du koenntest eine Klasse nutzen das Formular zu erstellen und die Daten aufzubereiten. Im Bedarfsfall koennte diese Klasse sogar automatisch JavaScript-Code erstellen der die Daten vor Versand prueft.

Ich hatte mal sowas angefangen, weiss aber ich weiss nicht ob ich den Code nach habe.
 
Oh mit JavaScript als Zusatzfunktion, welche aber nicht erforderlich ist, wäre es ideal. Spart Rechenleistung, aber braucht er nicht unbedingt, falls er JS nicht kann.
Guck dir einfach OOP mit PHP an, dann lernst du Klassen bei PHP kennen, jedoch kannst du auch alles ohne Klassen programmieren, ohne das es schlechter oder minderwertiger ist.

Es ist halt viel Arbeit, weil alles geprüft werden muss, jedoch ist viel gleich sodass sich in bestimmten Fällen Funktionen anbieten könnten.
 
@Dennis Wronka
... sogar automatisch JavaScript-Code erstellen ...
Da viele User aus Sicherheitsgründen meistens JS deaktiviert haben,
wäre dieses Formular für sie nicht anwendbar.
Deshalb habe ich bei keinem meiner Projekte JS im Einsatz.

@Steusi
... jedoch ist viel gleich sodass sich in bestimmten Fällen Funktionen anbieten könnten.
Die Idee, für die Prüfung eine Funktion einzusetzen, ist mir auch schon in den
Sinn gekommen. Jedoch weiß ich nicht, wie man hierbei die verschieden
Hinweis-Meldungen den einzelnen Eingabe-Feldern zuordnen kann.

So wie es aussieht, werde ich wohl nicht umhin kommen, auf die altbewährte
Art und Weise dieses Formular zu prüfen. :(

Trotzdem Danke für eure Hilfe. Sollten dennoch weitere Vorschläge aufkommen,
werde ich sie berücksichtigen.

Gruß, Mike
 
Was genau sind für diesen Fall "fehlenden / falsche Eingaben" ?

Eine Massenverarbeitung könnte wie folgt aussehen:
Code:
<form method="post" action="">
  <input type="text" name="mail_foo" />
  <input type="text" name="must_bar" />
  <input type="text" name="must_mail_Pflichtfeld" />
  <input type="text" name="number_foo" />
</form>

Hier siehst du das alle Felder einen Prefix (mail_ , must_ , number_ ) erhalten haben. Dies lässt sich gut Nutzen:
PHP:
$key = array_keys($_POST);  // keys trennen
foreach ($key as $s) // NICHT $key=>$value, da sehr "unperformant" !
{
  // Mail-Adressen-Prefix
  if (strpos($s, "mail_") !== false)
  {
    // prüfen ob gültige Mailadresse, entsprechende Meldungen
  }

  // Pflichtfeld-Prefix
  if (strpos($s, "must_") !== false)
  {
    // prüfen ob $_POST[$s] nicht leer
    if (trim($_POST[$s]) == "")
    {
      // Ist Leer, Fehlermeldung
    }
  }

  // Nummern-Prefix
  if (strpos($s, "number_") !== false)
  {
    // prüfen ob $_POST[$s] nur aus Zahlen besteht
    if ( ! ctype_digit(trim($_POST[$s])))
    {
      // Nein, Fehlermeldung
    }
  }
}

Durch die hintereinander gelegten Bedingungen kannst du die Prefixe kombinieren wie z.B. "must_mail_Pflichtfeld" ausgefüllt werden muss und eine gültige eMail-Adresse beinhalten soll.
Das sollte dir erlauben zu jedem Feld eine Fehlermeldung auszugeben, obwohl alle in einem Abwasch gemacht werden.
Wenns die Technik noch nich gibt dann hab ich die gerade erfunden - Muha! :D
 
Zuletzt bearbeitet:
Oh mit JavaScript als Zusatzfunktion, welche aber nicht erforderlich ist, wäre es ideal. Spart Rechenleistung, aber braucht er nicht unbedingt, falls er JS nicht kann.
Das spart meiner Meinung nach nicht Rechenleistung, sondern Traffic. Auch im PHP-Script muessen die Eingaben nochmal gecheckt werden, wenn aber der JavaScript-Code eventuell dafuer sorgen kann dass Eingaben garnicht erst zum Server gehen weil z.B. etwas fehlt, dann spart das, wie gesagt, Traffic und macht es auch dem User einfacher da die alten Daten noch im Formular sind und somit nur fehlende Daten ergaenzt werden muessen.

Guck dir einfach OOP mit PHP an, dann lernst du Klassen bei PHP kennen, jedoch kannst du auch alles ohne Klassen programmieren, ohne das es schlechter oder minderwertiger ist.
Klassen haben aber den grossen Vorteil dass sie, wenn sie denn richtig umgesetzt sind, einfach von einem Projekt in's naechste weitergereicht werden koennen, und sehr flexibel sind.
Natuerlich gibt es Sachen die man auch wunderbar mit Funktionen loesen kann, in vielen Faellen bieten Klassen aber Moeglichkeiten die Loesung sauberer zu bekommen.


Da viele User aus Sicherheitsgründen meistens JS deaktiviert haben,
wäre dieses Formular für sie nicht anwendbar.
Deshalb habe ich bei keinem meiner Projekte JS im Einsatz.
Ich selbst bin auch kein grosser Freund von JavaScript. Entsprechend setze ich bei mir JS-Funktionalitaet so um dass sie lediglich optional ist, aber nicht zwingend notwendig. Wie aus dem ersten Absatz zu erkennen soll die JS-Pruefung auch nicht als Ersatz fuer eine PHP-Pruefung eintreten, sondern nur als zusaetzliche, optionale Pruefung fuer die User bei denen JavaScript aktiv ist.
 
Hi,

damit sich jeder einmal ein Bild vom Ausmaß des Formulars machen kann,
habe ich hier den reinen HTML-Code geladen.

Es wird lediglich der Formular-Code verwendet. Viele Variablen müssen auch
noch angepaßt werden.
Es soll lediglich aufzeigen, wie umfangreich der Check ausfallen könnte.

Gruß, Mike
 

Neue Beiträge

Zurück