Fehlerauswertung Formular

  • Hie ich möchte eine Fehlerauswertung in meinem Formular machen.
    $errorFelder("Name", "Vorname","Ort", "Strasse","Nummer", "PLZ", "Datum", ); usw.
    // Test fehler $felder
    $error = false;
    foreach($felder as $feld) {
    if(empty($_POST[$feld])) {
    $error = true;
    $errorFelder[$feld] = true;
    }
    else ***** das wäre neu
    { Prüffunktion regulärer Ausdruck } ***** das wäre neu
    }
    Mit diesem Test bekomme ich einen Fehler wenn nichts eingetragen ist. Das klappt. Allerdings möchte ich jetzt genauer testen ob zb. ein gültiges Datum PLZ usw eingegeben wurde. Ich habe vor dies mit Regulaere Ausdruecke zu bewerkstelligen.
    var re_email = /^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}$/;
    var re_string = /^([a-zA-Z-]+\s)*[a-zA-Z-]+$/;
    var re_telefon = /^[0-9\/ \-]*$/;
    var re_strasse = /^([a-zA-Z0-9-\.]+\s)+[a-zA-Z0-9-]*$/;
    var re_integer = /^[0-9]+$/;
    var re_datum =/^(([0-2]{0,1}[0-9]|30|31)\.)(([0-1]{0,1}|11|12)\.)((19|20)[0-9]{2,})$/; //<</28-29.2 und 30 oder 31 Tage testen

    noch nicht ganz fertig aber so ungefähr. Ich müßte jetzt den den Feldern des Formulars beim Test ein Kennzeichen mitgeben Regulaere Ausdrueck verwendet werden soll. Also eigentlich ein 2 dimensionales Array. Dann wollte ich eine Fuktion einbauen die den Test erledigt ungefähr

    function checkdata(value,Zeichen){
    //--------STRING CHECK-----------------------------
    if (Zeichen == 1){
    if (value.match(re_string) == null
    || value.length == 0) {
    string_checked = false;
    } else {
    string_checked=true;
    }
    }
    //------STRING CHECK ENDE--------------------------
    }

    Die Übergabewerte Value sollte das Feld des Formulars aus Array $errorFelder sein, und das Kennzeichen eben ein array (1,2,3,4,5,6 usw. ) die Anzahl der Regulären Ausdrücke. Ich habe noch nie mit mehrdimensionalen Array gearbeitet. Kann mir das einer zusammen basteln. Theoretisch ist es auch klar ( hab mal bischen pascale programiert), leider kann ich kaum englisch und Google hilft mir nicht weiter.

    Danke schon mal Vorab

  • Was ist daran schlimm ? Kann ich in einer php Datei kein java verwenden ? Es ist ein Lösungsansatz, Wenn du eine Idee hast sag wäre es gut.

  • Ja klar Denk Fehler. Die Pprüfung ob es leer ist hab ich ja. Das klappt. Nun muß ich eben etweder beim verlassen jedes Feldes mit java scipt prüfen ob die Eingaben stimmen oder eben vor absenden in PHP. Die erste Variante denk ich mal bekomme ich noch hin ( hoffe ich). Ich kann ja bei Aufruf der Funkrion Parameter übergeben und wenn return falsch ist, war es ein Fehler. Ist aber nervig jedes mal einen Fehler melden. Und Java hat auch nicht jeder an. Soweit so gut. Aber wie mach ich das im PHP? Eigentlich müßte ich den String durchlaufen also von 0- länge String und jedes Zeichen testen, ob es ein gültiges ist. Zumindestens hätte ich das in Pascale so gemacht. Dafür eine Funktion geschrieben Ende. Aber in PHP ? Alles in allem weiß ich nicht weiter. Ein Beispiel wäre nett.
    danke

  • Danke für die Antwort. Leider helfen mir die Beispiele nicht so richtig. Beispiel ich kann zwar mit is_numeric prüfen ob die variable eine Zahl ist. Aber PLZ fangen auch mit 0 an. Ich muß als weitestgehend Strings auf bestimmte Eigenschaften untersuchen. Nicht leer (empty) hab ich ja schon getestet.

    ich benöthige bestimmte Muster. Für reine Strings könnte ich mit strcspn zeichenweise Prüfen ob Zeichen vorhanden sind.
    Beispiel

    PHP
    (if strcspn("String1","$variable")<> 0) ....... ;

    wobei String1 das Prüfkriterium wäre ( Buchstaben A-Z a-z ß äÄöÖüÜ ) und $variable der Inhalt des Feldes.

    Wenn ich das Zeilenweise für jedes Eingabefeldeld teste ist es mir zu umständlich. Ich such eine Möglichkeit das zentral zu machen. Da es für jeden Feldinhalt nur eine richtige Lösung gibt, brach ich eine Möglichkeit Verschiedene Strings ( Testkriterien ) jeweils einem Bestimmten Feld zuzuordnen. Beispiel Feld Name ist ein String mindestens 3 Zeichen lang und Prüfkriterium für String. Feld Datum ist ein Datum 10 Zeichen lang 3. und 6 . Stelle ein Punkt und gültig also 28/29. Februar 30 oder 31 Tage nur 12 Monate . Für das Datum hab ich schon was gefunden aber noch nicht getestet.

    preg_match hilft mir auch nicht so wirklich wenn ich das richtig gelesen habe. Ich hab ja keine festen Daten sondern Muster. Aber danke auch dir ein Versuch war es wert.


    Hoffe es war verständlich.

    Einmal editiert, zuletzt von gr1 (21. Juli 2011 um 01:25)

  • Ja hast natürlich wierer mal Recht nur weiter bringt es mich trotzdem nicht, da mein Hompageserver nur php 4.2 hat da geht halt die Hälfte nicht . Na und eigentlich sind solche hingeworfenen "Fetzen" für einen Anfänger nicht sehr hilfreich. Ohne damit jemanden zu Nahe treten zu wollen. Ich hab natürlich, bevor ich hier was schreibe schon gesucht, aber leider nichts funktionierendes gefunden. und mein Eglisch ist leider nicht so gut. Mit Übersetzeten Texten ist es nicht ganz so einfach. Deswegen hatte ich mich eigentlich angemeldet. Bisher muß ich sagen ist außer drum rum schreiben kaum Hilfe da. Das Hauptproblem für mich wie ordne ich dem jeweiligen Feld einen entsprechenden Regulären Ausdruck zu ist ganz unter gegengen. So ist es auf keinen fall hilfreich. Aber gut ich laß es mal damit bewenden für Neulinge ist das warscheinlich nicht das richtige Forum. Leider