+ Antworten
Ergebnis 1 bis 2 von 2

Thema: Formular-Validierung und Hinweis

  1. #1
    TP-Senior Magerquark macht alles soweit korrekt Avatar von Magerquark
    Registriert seit
    May 2004
    Beiträge
    226

    Formular-Validierung und Hinweis

    Ich denke zu quer und komme nicht auf die Lösung, die vermutlich tierisch einfach ist...

    Es soll ein Formular sein mit Überprüfungen, ob die einzelnen Felder leer, resp. richtig ausgefüllt sind. Soweit klappt es auch. Derzeit habe ich es so, dass bei einem Fehler eine entsprechende Meldung über dem Formular angezeigt wird. Jetzt hätte ich aber auch noch gerne eine optische Hervorhebung, wo der Fehler ist. Im Beispiel habe ich hinter die Eingabefelder ein span-Tag mit einer variablen Klasse und einem Ausrufezeichen als Inhalt. Aufruf des Formulars: Klasse ist "hidden". Validierung: Klasse ist immer noch "hidden", nur dort, wo ein Fehler ist, soll eine Klasse namens "hinweis" vorhanden sein. Erst bei einem Fehler soll das Ausrufezeichen sichtbar werden. Aber wie??

    Im Head:
    HTML-Code:
    <style type="text/css">
     .hidden{
      visibility: hidden;
     }
     .hinweis{
      visibility: visible;
     }
    </style>
    Im Body:
    PHP-Code:
    <?php
            
    $formular
    ="
    <form action=\"$_SERVER[PHP_SELF]\" method=\"post\" id=\"thisform\">
     <p>
      <input type=\"hidden\" name=\"formular_gezeigt\" value=\"pos\" />
     </p>
     <fieldset>
     <legend>Kontakt-Formular</legend>
     <p><label for=\"name\">Name</label><br />
      <input type=\"text\" id=\"name\" name=\"name\" value=\""
    .htmlentities($_POST['name'])."\" /><span class=\"".$klasse."\">!</span></p>
     <p><label for=\"email\">E-Mail-Adresse</label><br />
      <input type=\"text\" id=\"email\" name=\"email\" value=\""
    .$_POST['email']."\" /><span class=\"".$klasse."\">!</span></p>
     <p><label for=\"kommentar\">Message</label><br />
      <textarea id=\"kommentar\" name=\"kommentar\" rows=\"7\" cols=\"35\">"
    .htmlspecialchars($_POST['kommentar'])."</textarea><span class=\"".$klasse."\">!</span></p>
     <p><input type=\"submit\" value=\"Abschicken\" /></p>
    </fieldset>
    </form>"
    ;

    // wurde das Formular schon angezeigt?
    if($formular_gezeigt != "pos"):        
     echo 
    $formular;
            
    // alles ausgefuellt?
     
    else:
     
    $fehler_flag "no";
            

    // $name leer?
     
    if ($name == ""):
      echo 
    "<p class=\"fehler\">Bitte Namen eingeben!</p>";
      
    $fehler_flag "yup";
     endif;
    // $email leer?
     
    if ($email == ""):
      echo 
    "<p class=\"fehler\">E-Mail-Adresse eingeben!</p>";
      
    $fehler_flag "yup";
     endif;
    // ist email gueltig?
     
    if ($email != ""):
      
    $email strtolower(trim($email));
      if (! @
    eregi('^[0-9a-z]+'.'@'.'([0-9a-z]+\.)+'.'([0-9a-z]){2,4}$'$email)):
      echo 
    "<p class=\"fehler\">Bitte E-Mail-Adresse noch einmal bitte pr&uuml;fen!</p>";
      
    $fehler_flag "yup";
     endif;
    endif;

    // wenn $fehler_flag gesetzt, dann zeige $formular noch einmal an
    if ($fehler_flag == "yup"):
     echo 
    "$formular";
                    
     else:
     
    //mailroutine
     
    mail(blablbalbla);
    endif;
    endif;
    ?>
    Oder mal eine Internetquelle, die das Thema behandelt? In Foren gibt es oft auf eine ähnlich gestellte Frage die Antwort, dass es ganz leicht sei, man müsse nur ein Flag setzen und das über eine CSS-Klasse lösen. Wie das genau gehen soll, habe ich jedoch bisher noch nicht gefunden... Jemand eine Ahnung? Danke im voraus...

    M
    << Meine Ankunft war zeitlich schlecht gewählt...>>

  2. #2
    TP-Urgestein webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts Avatar von webcreate
    Registriert seit
    Nov 2003
    Ort
    NRW
    Beiträge
    11.660
    Erstmal solltest Du mit Supergloblas ($_POST usw.) arbeiten.
    Da Du nun nicht jedes Feld einzelnd einer ID gibst, sondern mit einer Klasse arbeitest, werden die "!" aber dann auch hinter allen Feldern angezeigt, auch wenn einige korrekt gefüllt sind ...

    PHP-Code:
    <?php
    $formular
    ="
    <form action=\"$_SERVER[PHP_SELF]\" method=\"post\" id=\"thisform\">
     <p>
      <input type=\"hidden\" name=\"formular_gezeigt\" value=\"pos\" />
     </p>
     <fieldset>
     <legend>Kontakt-Formular</legend>
     <p><label for=\"name\">Name</label><br />
      <input type=\"text\" id=\"name\" name=\"name\" value=\""
    .htmlentities($_POST['name'])."\" /><span class=\"hinweis\">!</span></p>
     <p><label for=\"email\">E-Mail-Adresse</label><br />
      <input type=\"text\" id=\"email\" name=\"email\" value=\""
    .$_POST['email']."\" /><span class=\"hinweis\">!</span></p>
     <p><label for=\"kommentar\">Message</label><br />
      <textarea id=\"kommentar\" name=\"kommentar\" rows=\"7\" cols=\"35\">"
    .htmlspecialchars($_POST['kommentar'])."</textarea><span class=\"hinweis\">!</span></p>
     <p><input type=\"submit\" value=\"Abschicken\" /></p>
    </fieldset>
    </form>"
    ;

    $fehler_flag "no";

    // wurde das Formular schon angezeigt?
    if($_POST['formular_gezeigt'] != "pos"):   
      echo 
    $css .= "<style type=\"text/css\">
      .hinweis{
       visibility: hidden;
     }</style>"
    ;     
     echo 
    $formular;
            
    // alles ausgefuellt?
     
    else:
     
            

    // $name leer?
     
    if ($_POST['name'] == ""):
      echo 
    "<p class=\"fehler\">Bitte Namen eingeben!</p>";
      
    $fehler_flag "yup";
     endif;
    // $email leer?
     
    if ($_POST['email'] == ""):
      echo 
    "<p class=\"fehler\">E-Mail-Adresse eingeben!</p>";
      
    $fehler_flag "yup";
     endif;
    // ist email gueltig?
     
    if ($_POST['email'] != ""):
      
    $email strtolower(trim($_POST['email']));
      if (! @
    eregi('^[0-9a-z]+'.'@'.'([0-9a-z]+\.)+'.'([0-9a-z]){2,4}$'$email)):
      echo 
    "<p class=\"fehler\">Bitte E-Mail-Adresse noch einmal pr&uuml;fen!</p>";
      
    $fehler_flag "yup";
     endif;
    endif;

    $css "<style type=\"text/css\">";
    if(
    $fehler_flag != "yup"$css .= ".hinweis{
      visibility: hidden;
     }"
    ;
    else 
    $css .=".hinweis{
      visibility: visible;
     }"
    ;
    $css .= "</style>";

    // wenn $fehler_flag gesetzt, dann zeige $formular noch einmal an
    if ($fehler_flag == "yup"):
     echo 
    $css;
     echo 
    "$formular";
                    
     else:
     
    //mailroutine
     
    mail(blablbalbla);
    endif;
    endif;
    ?>
    Gruß Mark

    webcreate IT SOLUTIONS
    www.webcreate-nrw.de

    Photoblog....|....flickr

+ Antworten

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51