Warung bei Formular unvollständigkeit php

Hujax

Lieutenant
Registriert
Juli 2009
Beiträge
844
Hallo liebe Community,

ich habe ein Formular mit einigen Pflichtfeldern erstellt. Das Formular funktioniert auch, leider hab ich das Problem, dass falls ein Pflichtfeld nicht ausgefüllt wurde und der Benutzter auf absenden klickt das Formular geleert wird und die Fehlermeldung unten auf der Seite angezeigt wird, was der Nutzer nicht sehen kann, da er nicht mehr runter scrollen wird.

Hier mal der Link:

http://rd-invest.de/formularseite/

Ich möchte gern wissen wie ich die Meldung, dass nicht alle Felder ausgefüllt wurden sichtbar für den Nutzer, also oben darstellen kann und das Formular nicht geleert wird.

Ich hoffe ihr versteht mein Problem und könnt wir helfen! :)

Mit freundlichen Grüßen
bublic
 
Ohne den Quellcode zu kennen wird das wildes Rätselraten...

Du bist auch sicherlich bereit die Anpassung entsprechend zu Vergüten, richtig?
 
Lol ich hoffe mal das war ein Joke excalibur ;)
 
Um die Fehlermeldung oben auszugeben, musst du doch einfach nur die Abfrage inkl. dem echo-Befehl oben unter der Überschrift "Kontaktdaten" einfügen, wo man es sieht. Am besten als eyecatcher in einem roten Kasten.
Was die leeren Felder betrifft, da müsstest du die jeweiligen POST-Variablen wieder als value eintragen.
Beispiel:
PHP:
<input type="text" name="Vorname" value="<?php echo $_POST['Vorname']; ?>" />

Wie man allerdings Radio-Buttons und Checkboxen wieder aktiviert, weiß ich gerade nicht, müsstest du mal nach suchen.
 
Zuletzt bearbeitet: (Rechtschreibung :/)
Checkboxen:

PHP:
<input type="checkbox" name="test" id="test1" value="1" <?php print ($_POST['test'] == '1') ? ' checked' : ''; ?> />
&nbsp;
<label for="test1">Wert 1</label>

Wobei man sich eine if else (? :) auch schenken kann:

PHP:
<input type="checkbox" name="test" id="test1" value="1" <?php if ($_POST['test'] == '1')  { print  ' checked'; } ?> />
&nbsp;
<label for="test1">Wert 1</label>
 
Zuletzt bearbeitet:
Einfacher wäre es mit JS zu realisieren um vorwegs abzufangen, wäre doch eine Überlegung wert?
Denn dazu braucht es erstmals kein PHP und kann zirka 90 % der Fehlern abfangen.

Es gibt dazu ein gutes Buch Javascript von BHV-Verlag, da gibt es sehr schöne Veranschaulichung, wie man das realisieren kann.
 
Obelisk_19 schrieb:
Einfacher wäre es mit JS zu realisieren um vorwegs abzufangen, wäre doch eine Überlegung wert?.

Und wenn man JS ausschaltet im Browser? Eine Serverseitige (z. B. mittels PHP) Formularüberprüfung sollte schon noch stattfinden.
 
Wow,Dankeschön!


Es funktioniert, aber leider nicht mit dem Dropdownauswahlmenü.

HTML:
<!--Familienstand--> 
	<label class="adresse" for="familienstand">Familienstand<em>*</em></label> 
	<select name="Familienstand"  id="familienstand" title="Bitte Familienstand wählen." value="<?php echo $_POST['Familienstand']; ?>" style="margin:0.25em;">
              <option value=""> </option>
              <option value="ledig">ledig</option>
              <option value="verheiratet">verheiratet</option>
              <option value="geschieden">geschieden</option>
              <option value="verwitwet">verwitwet</option>
              <option value="In Lebensgemeinschaft">In Lebensgemeinschaft</option>
    </select>

Wie wird es gemacht?

Mit freundlichen Gruß
Hujax :)
 
Hier musst du das jeweilige Optionsfeld auf "selected" setzen:

PHP:
<!--Familienstand--> 
	<label class="adresse" for="familienstand">Familienstand<em>*</em></label> 
	<select name="Familienstand"  id="familienstand" title="Bitte Familienstand wählen." style="margin:0.25em;">
              <option value=""> </option>
              <option value="ledig"<?php
                  if(isset($_POST['Familienstand']) && $_POST['Familienstand'] == "ledig")
                  {
                    echo " selected=\"selected\"";
                  }
                ?>>ledig</option>
              <option value="verheiratet"<?php
                  if(isset($_POST['Familienstand']) && $_POST['Familienstand'] == "verheiratet")
                  {
                    echo " selected=\"selected\"";
                  }
                ?>>verheiratet</option>
              <option value="geschieden"<?php
                  if(isset($_POST['Familienstand']) && $_POST['Familienstand'] == "geschieden")
                  {
                    echo " selected=\"selected\"";
                  }
                ?>>geschieden</option>
              <option value="verwitwet"<?php
                  if(isset($_POST['Familienstand']) && $_POST['Familienstand'] == "verwitwet")
                  {
                    echo " selected=\"selected\"";
                  }
                ?>>verwitwet</option>
              <option value="lebensgemeinschaft"<?php
                  if(isset($_POST['Familienstand']) && $_POST['Familienstand'] == "lebensgemeinschaft") //hier mal das value abgeändert; Leerzeichen am besten vermeiden
                  {
                    echo " selected=\"selected\"";
                  }
                ?>>In Lebensgemeinschaft</option>
    </select>
 
Super,Danke! :)

Jetzt fehlt mir nur noch eine Sache und zwar das die Fehlermeldung weiter oben auf der seite und das die fehleneden Pflichtfelder hervorgehoben werden. Erst danach kann es an die Email versand werden.
Leider weiß ich nicht so ganz wie ich das anstellen soll.

Bitte in PHP!

gruß
Hujax
 
Die Fehlermeldung machst du ganz einfach, indem du bei jedem Feld prüfst, ob es leer ist.

Also so in der Art:

PHP:
if(!isset($_POST['name']) || $_POST['name'] == "")
{
  echo "Bitte Name eintragen.";
}

if(!isset($_POST['email']) || $_POST['email'] == "")
{
  echo "Bitte E-Mailadresse eintragen.";
}

...

// theoretisch könnte man zur Sicherheit auch noch bei jedem Feld prüfen, 
//    ob ein Array übergeben wurde: || is_array($_POST['name']) - es darf also kein Array sein

// Ausnahme wäre eine Mehrfachauswahlliste,
//    diese müsste ein Array sein: || !is_array(...) - hast du derzeit aber keine in deinem Formular

Ich würde aber nicht für jedes Feld eine eigene Meldung machen, sondern alle Felder abfragen, und wenn eins oder mehrere leer sind eine Meldung ala: "Bitte füllen Sie dir markierten Felder aus." ausgeben, also so:

PHP:
if( !isset($_POST['name']) || $_POST['name'] == "" ||
    !isset($_POST['email']) || $_POST['email'] == "" ||
    ... 
)
{
  echo "Bitte füllen Sie dir markierten Felder aus.";
}

...




Zum Hervorheben leerer Felder gehst du ähnlich vor; du fragst ab, ob etwas eingetragen wurde - ansonsten machst du bspw. bei dem Feld einen roten Hintergrund/Rahmen o.ä.:

PHP:
<input name="name" type="text" id="name" size="20"<?php if(!isset($_POST['name'] || $_POST['name'] == "")
{
  echo " style=\"background-color:#F00\"";
} ?> value="" title="Bitte Nachnamen eingeben." />

<input name="email" type="text" id="email" size="20"<?php if(!isset($_POST['email'] || $_POST['email'] == "")
{
  echo " style=\"border:2px solid #F00\"";
} ?>value="" title="Bitte Email eingeben." />

...



Im Moment würdest du damit nur prüfen, ob irgendetwas eingetragen wurde - das kann man je nach Feld aber noch spezifizieren. Eine Telefonnummer darf bspw. nur aus Zahlen bestehen:

PHP:
if(!is_numeric($_POST['telefon']))
{
  echo "Nur Zahlen erlaubt.";
}
elseif(!isset($_POST['telefon']) || $_POST['telefon'] == "")
{
  echo "Bitte ausfüllen";
}

 ...

Der Name darf dagegen keine Zahlen enthalten, in der E-Mailadresse muss bspw. ein @-Zeichen vorkommen, nach dem @ muss mindestens ein Punkt stehen usw. usf.

Eine Abfrage für eine korrekte E-Mailadresse könnte so aussehen (Stichwort: reguläre Ausdrücke / RegExp / RegEx)
PHP:
if(!eregi("^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\.[a-z]{2,4}$", $_POST['email']))
{
  echo "Fehler ...";
}
Das wird dir aber am Anfang wohl zu viel des Guten sein :)

Da musst du dir überlegen, wie viel Aufwand du betreiben willst um möglichst keine falsch oder unvollständig ausgefüllten Felder zu verschicken.
 
Zuletzt bearbeitet:
Hm, du scheinst dich doch mit PHP auszukennen, dann sollte es dir doch auch möglich sein, die Fehlermeldung nach oben zu setzen, oder?
Die Abfrage, ob alle Pflichfelder ausgefüllt sind, müsste so in der Art aussehen:
PHP:
if(isset($_POST['submit'], $_POST['Anrede'], $_POST['Name'], ... )) // Auflistung der Postvariablen alle Pflichtfelder
{echo "Alles OK.";}
else
{echo "Nicht alles ausgefüllt.";} //Das ist die Fehlermeldung
Den Teil müsstest du im Quelltext nur nach oben an die gewünschte Stelle schaffen.
Dass die Felder dann auch noch hervorgehoben werden, ist aufwändig, denn du müsstest bei allen Pflichtfeldern abfragen, ob das Formular abgesendet wurde
PHP:
if(isset($_POST['submit']))
und wenn dann das jeweilige Feld leer war
PHP:
if($_POST['Name']=="")
dem jeweiligen Inputfeld am Besten eine andere CSS-Klasse zuweisen mit zB. rotem Hintergrund.

EDIT: Ui, Mr. Snoot hat's irgendwie besser erklärt. Halte dich an seinen Post :D
 
Zuletzt bearbeitet:

Ähnliche Themen

Antworten
1
Aufrufe
1.861
Zurück
Oben