• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Formular erst absenden, wenn es vollständig ist - mit PHP?

Vokabulator

Neues Mitglied
Hallo!

Ich möchte, dass ein Formular erst abgeschickt wird, wenn es ausgefüllt ist. Jetzt lese ich mancherorts, dass man das mit JavaScript machen soll. Aber geht das nicht auch gerade mit PHP? Falls eben JavaScript aktiviert wurde? Bin bisher zwar noch nicht fündig geworden, aber ich dachte, PHP hat eben in diesem Fall den Vorteil, dass man es nicht einfach deaktivieren kann...? Man kann ja auch überprüfen, ob ein Formular vollständig ausgefüllt wurde.

Danke schon mal!
 
Werbung:
Ich habs mit PHP gemacht, jedoch mit der Einschränkung, dass dann die eingegebenen Werte wieder im Formuar auftauchen

Hier mal eine kleine Hilfestellung
PHP:
function checkForm(){
      foreach($_POST as $field => $value){
                // Submit-Button soll nicht in die Überprüfung zählen
                if($field !== "submit"){
                    $count += count($field);
                    
                    // sind alle Formularelemente enthalten
                    foreach($this->enable_form_types as $type => $value_array){
                        if(in_array($field, $value_array)){
                            $count_match++;
                            
                            // Inhalt validieren
                            switch($type){
                                case "text":
                                case "textarea":
                                case "password":
                                    foreach($value_array as $value_form_elem_name){
                                        // hier kann dann Inhalt geprüft werden
                                    }
                            }
                        }else{
                            $mgs[] = "Fehler im Formular";
                        }
                    }
                }
            }
        }
        if($count_match != $count){
            echo $count . ' - ' . $count_match;
            $error_msg[] = "Forumlar wird nicht richtig inizialisiert";
         }
}

ich weiss, ziemlich verwirrend, aber dynamisch ...
man muss nur noch verher festlegen, welche Elemente zu genau DIESEM Formular gehören.
z.B. so
PHP:
$form->checkEnableFormTypes(array("text" => array("gbook_add_name", "gbook_add_mail"), "textarea" => array("gbook_add_msg")));

Jetzt kannst du sozusagen mittels der Funktion folgendes machen
PHP:
$error = array_unique($form->checkForm());
            $count_error = count($error);

            if($count_error == 0){
    // kein Fehler
}else{
   // fehler ... und lässt dann das Formular wieder über den $_POST[] Request befüllen
}

MfG Marcel
 
wow, vielen Dank, werde mich da mal reinkniehen. Dass die Werte wieder auftauchen is egal... darum gehts mir nicht.

Danke!!
 
Werbung:
also ich hab das dann mittels Smarty gemacht ...

dort dann einfach
PHP:
$input1 = @$_POST["value1"];
// ...
$inputn = @$_POST["inputn"];

$tpl = new Smarty();

$tpl->assign('input1', $input1);
// ...
$tpl->assign('inputn', $inputn);

$tpl->display('file.tpl');

und dann die Template Datei
HTML:
<input type="text" name="value1" value="{$input1}">
<!-- ... -->
 <input type="text" name="valuen" value="{$inputn}">

Also ich weiss zumindest nicht, ob du Smarty verwendest ;)

MfG Marcel
 
Hey Vokabulator,
nicht "PHP oder JavaScript", sondern "PHP und JavaScript und HTML5" und du hast die perfekte Lösung.

Mit HTML5 kann man so
Code:
<input type="text" name="name" required="required" />
kann man ganz einfach bedingen, dass ein Feld benötigt wird. Das kann man auch nicht ausschalten, allerdings kann man einfach einen Browser nutzen, der es nicht unterstützt. Dann greift JavaScript.

Wie die Lösung in JS aussieht, kannst du zum Beispiel hier sehen SELFHTML: JavaScript / Anwendungsbeispiele / Formulareingaben berprfen . Wenn jemand aber weder einen Browser benutzt der HTML5 unterstützt noch dass er JS eingeschaltet hat, dann greift die PHP-Variante (s. oben, hab mir das allerdings jetzt nicht angeschaut).

Warum man das so macht? Weil es für den Nutzer zum einen bequemer ist, wenn das Formular nicht abgeschickt wird und dann erst die Fehlermeldung kommt, und zum anderen, weil du damit Serverlast sparst (JS- und HTML5-Lösung sind ja clientseitig). Zudem gilt natürlich der Grundsatz: Never trust the user! Du weißt nie, was er dir gibt…
 
Hallo
ich hab ein Formular mit 7 Feldern und mit "required".Ab dem 5.Feld wird das 4.Feld als nicht ausgefüllt angezeigt usw. Im Firefox und crome versucht.
Code:
HTML:
<form action="forms1.php" method="POST">
      <h3>Sende mir eine Nachricht</h3>
    <label for="first_name"    >Vorname</label><br />
      <input placeholder="Vorname" required="required" autofocus="autofocus" name="first_name" type="text" size="30" id="first_name" /><br /><br />
    <label for="last_name">Nachname</label><br />
      <input placeholder="Nachname" required="required" name="last_name" type="text" size="30" id="last_name" /><br /><br />
    <label for="email">Email</label><br />
      <input placeholder="email" required="required" name="email" type="text" size="30" id="email" /><br /><br />
    <label for="city">Wohnort</label><br />
      <input placeholder="Wohnort" required="required" name="city" type="text" size="30" id="city" /><br /><br />
    <label for="plz">Postleitzahl</label><br />
      <input placeholder="Postleitzahl" required="required" name="plz" type="text" size="30" id="plz" /><br /><br />
    <label for="street">Straße</label><br />
      <input placeholder="Straße" required="required" name="street" type="text" size="30" id="street" /><br /><br />
    <label for="message">Feld für die Nachricht</label><br />
      <textarea name="message" rows="3" cols="20" id="message"></textarea><br />
      <input type="submit" name="submitted" value="Senden" />
        </form>

Hat jemand ne Idee
gruß Robert

ps wie kann ich den Code ins Codefeld eingeben damit es jeder gleich als Code erkennt
 
Zuletzt bearbeitet:
Werbung:
Das required-Attribut wird noch nicht von jedem Browser unterstützt. Wie oben schon steht solltest Du diese Pflichtfeldprüfung mit PHP und JavaScript und dem HTML5-Attribut required machen.

Für die Formatierung von Quellcode kannst Du hier im Forum Code-Tags / BB-Tags verwenden. Also z.B. [ CODE ] als Start (ohne die Leerzeichen) und [ /CODE ] als Ende (ohne die Leerzeichen). Im "Erweitert"-Editor gibt es dazu auch Buttons.
 
Zurück
Oben