Hey yaslaw,
ja das mit der foreach Schleife hatte ich gerstern abend noch ähnlich gebastelt. Nicht ganz so schick wie du eben.
Jetzt ist jedoch $count nicht belegt. Nehme ich $count raus, kommt
Das wäre dann
diese Zeile.
Also momentan steige ich da leider gar nicht mehr durch was jetzt genau passiert. Ziel soll es ja sein, dass ich ein gloables Array habe, in dem ich alle Felder (nicht nur die des aktuellen Formulars) definiere. (wird dannn per inculde eingespielt).
In diesem Array sollten optimalerweise auch gleich die passenden Fehlermeldungen stehen.
Wenn ich jetzt ein Formular habe, definiere ich oben die Felder, die ich tatsächlich für dieses brauche. Bzw. ist die überhaupt nötig, oder wird das per foreach ausgelöst, dass er guckt welche Felder alle gesendet wurden?
Zu guter letzt wäre es schick, wenn ich nicht für jedes Feld eine eigene Funktion benötige, sondern eine Funktion in einer weiteren Schleife habe, wo z.B. der Funktionsname checkVorname variabel generiert wird.
Klingt alles ziemlich komplex, aber das Ergebnis wäre dann ein flexibel anpassbares Script welches so glaube ich noch nicht existiert.
So und nun nochmal zum Anfang:
Ich simuliere mit
das Feld Vorname, welches eigentlich per foreach ja automatisch ausgelesen wird, right? Btw. kann ich diese Zeile ja auch weg lassen, insofern ich den Inhalt direkt per Formular eingeben. Oder?
EDIT: Hier der komplette Code, der momentan vorhanden ist:
ja das mit der foreach Schleife hatte ich gerstern abend noch ähnlich gebastelt. Nicht ganz so schick wie du eben.
Jetzt ist jedoch $count nicht belegt. Nehme ich $count raus, kommt
Code:
Fatal error: Call to undefined function checkArray() in /test-check.php on line 34
Das wäre dann
PHP:
$valid = $checkFunctionName($_POST[$fieldName], $messages);
diese Zeile.
Also momentan steige ich da leider gar nicht mehr durch was jetzt genau passiert. Ziel soll es ja sein, dass ich ein gloables Array habe, in dem ich alle Felder (nicht nur die des aktuellen Formulars) definiere. (wird dannn per inculde eingespielt).
In diesem Array sollten optimalerweise auch gleich die passenden Fehlermeldungen stehen.
Wenn ich jetzt ein Formular habe, definiere ich oben die Felder, die ich tatsächlich für dieses brauche. Bzw. ist die überhaupt nötig, oder wird das per foreach ausgelöst, dass er guckt welche Felder alle gesendet wurden?
Zu guter letzt wäre es schick, wenn ich nicht für jedes Feld eine eigene Funktion benötige, sondern eine Funktion in einer weiteren Schleife habe, wo z.B. der Funktionsname checkVorname variabel generiert wird.
Klingt alles ziemlich komplex, aber das Ergebnis wäre dann ein flexibel anpassbares Script welches so glaube ich noch nicht existiert.
So und nun nochmal zum Anfang:
Ich simuliere mit
PHP:
$_POST = array('vorname' => 'y1');
EDIT: Hier der komplette Code, der momentan vorhanden ist:
PHP:
<?php
error_reporting(E_ALL);
//$_POST simulieren
$_POST = array('vorname' => 'y1');
//Alle verfügbaren Felder der Plattform
$GLOBALS['FELD'] = array();
$GLOBALS['FELD']['vorname'] = array('minlength' => "3", 'maxlength' => "15", 'characters' => "\/^[a-zA-Z]+$/s");
//Zu prüfende Felder des aktuellen Formulars
$checkfields = array("vorname", "nachname");
//$valid ist nur true, wenn alle Felder korrekt ausgefüllt wurden
$valid = true;
foreach($checkfields as $index => $field){
$checkanweisung = "check$checkfields";
$valid = check($field, $checkanweisung, $htmlMessage) ? $valid : false;
$htmlMessages[$index] = $htmlMessage;
}
//$valid hat ist nur true wenn alle Prüfungen erfolgreich waren.
/**
* führt einen Check aus und gibt die Fehlermeldung aus
* @param String in Name des zu prüfenden Wertes
* @param String in Name der Check-Funktiom
* @param String out Rückgabe der Fehlermeldung
* @return Boolean Valid
*/
function check($fieldName, $checkFunctionName, &$htmlMessage){
$valid = $checkFunctionName($_POST[$fieldName], $messages);
$htmlMessages = array();
if($valid){
$htmlMessages = "Feld {$fieldName} mit dem Inhalt '{$_POST[$fieldName]}' ist gültig";
}else{
$htmlMessages = "Feld {$fieldName} mit dem Inhalt '{$_POST[$fieldName]}' ist ungültig:<br />";
$htmlMessages .= implode('<br />', $messages);
}
return $valid;
}
//==== Check-Funktion für "Vorname"
function checkVorname($value, &$messages){
$messages = array();
$valid = true;
if(strlen($value) < $GLOBALS['FELD']['vorname']['minlength']){
$valid = false;
$messages[] = 'vorname muss mindestens '.$GLOBALS['FELD']['vorname']['minlength'].' Zeichen lang sein';
}
if(strlen($value) > $GLOBALS['FELD']['vorname']['maxlength']){
$valid = false;
$messages[] = 'vorname darf höchstens 15 Zeichen lang sein';
}
if(preg_match('/^[a-zA-Z]+$/s', $value)==0){
$valid = false;
$messages[] = 'vorname darf nur aus Buchstaben und _ bestehen';
}
return $valid;
}
?>
Zuletzt bearbeitet: