Formular Dropdown Menü vor absenden prüfen

Baerenjosef

Grünschnabel
Hallo,

Ich bin neu hier im Forum und habe kaum Ahnung von PHP. HTML und CSS ist kein Problem und Javascript geht so.

Nun habe ich ein Formular mit PHP Abfrage der Eingabefelder erstellt, wo bei falscheroder nicht Eingabe eine Fehlermeldung erscheint.
Das Funktioniert auch soweit, aber ich weiß nicht wie ich die beiden Dropdown Menüs abfragen soll.
Ich suche seit gestern im Internet und hier im Forum und habe leider nichts gefunden.

Code:
 $fehler = "";
	 $Anrede =$_POST['Anrede'];
  $Vorname = $_POST['Vorname'];
  $Nachname = $_POST['Nachname'];
  $Email = $_POST['Email'];
  $Betreff = $_POST['Betreff'];
  $Nachricht = $_POST['Nachricht'];
  if (empty($Anrede)) {
    $fehler .= "<li>die Anrede fehlt</li>" ;
  }
  if (empty($Vorname)) {
    $fehler .= "<li>der Vorname fehlt</li>" ;
  }
  if (empty($Nachname)) {
    $fehler .= "<li>der Nachname fehlt</li>" ;
  }
  if (empty($Email)) {
    $fehler .= "<li>die Mailadresse fehlt</li>" ;
  }
	else {                                            
        if(strstr($Email,"@") && strstr($Email,".")){    
        }                                              
        else { 
            $fehler = $fehler." <li>ein Fehler in der Emailadresse ist</li>"; 
        } 
  }
  if (empty($Nachricht)) {
    $fehler .= "<li>keine Nachricht eingetragen ist</li>" ;
  }
 if (empty($fehler)) {
    if (get_magic_quotes_gpc()) {
      $text = stripslashes($text);
    }
    $return = chr(13).chr(10);
    $an = "email@domain.de" ;
    $betreff = "$Betreff" ;
    $von = "From: <".$Email.">" ;
    $datum = "Datum: ".date("j.n.Y").$return;
    $zeit = "Zeit:  ".date("H:i").$return;
    $abs = "Von:   ".$Anrede." ".$Vorname."  ".$Nachname." <".$Email.">".$return;
    
    $nachricht = $datum.$zeit.$abs.$Betreff.$return.$Nachricht. "\n";
    mail($an,$betreff,$nachricht,$von);
  }
  
  
  if (empty($fehler)) {
    $return = chr(13).chr(10);
    $nachricht = strip_tags($nachricht);
    $nachricht = htmlentities($nachricht);
    $nachricht = str_replace($return,"<br>",$nachricht);
    echo "<h1> Ihre Mitteilung wurde an uns übermittelt!</h1><h3>Wir werden uns schnellst möglich um Ihr Anliegen kümmern und Kontakt mit Ihnen aufnehmen.</h3>" ;
    echo "<p>$nachricht</p>" ;
  } else {
    echo "<h1>Ups, da müssten wir nochmal ran</h1><h3>Ihre Nachricht wurde nicht gesendet, weil</h3>" ;
    echo "<ul>$fehler</ul>" ;
	echo '<a href="javascript:history.back()">zur&uuml;ck</a>';
  }
 
  }
  
  ?>

Bin für jede Hilfe dankbar.

Gruß
Wolfgang
 
Im Grunde genauso.

Aber du solltest dir mal isset anschauen. Damit kannst du prüfen ob es die Variable überhaupt gibt.
 
Hier die Dropdowns
Code:
<select name="Anrede" id="anrede">
              <option value="1" selected>Bitte auswählen</option>
              <option value="Frau">Frau</option>
              <option value="Herr">Herr</option>
            </select> 


  <select name="Betreff" id="infos">
              <option value="1" selected>Bitte auswählen</option>
              <option value="Fragen zur Ranch">Fragen zur Ranch</option>
              <option value="Fragen zu einem Kurs">Fragen zu einem Kurs</option>
              <option value="Anmelden f&uuml;r einen Kurs">Anmelden f&uuml;r einen Kurs</option>
              <option value="Fragen zu unserem Reitshop">Fragen zu dem Reitshop</option>
              <option value="Sonstige Anfrage">Sonstige Mitteilung</option>
            </select>

Danke für eure Mühe, mit isset habe ich das nicht hinbekommen, irgendwo biege ich da beim denken falsch ab.
 
Ich geh mal davon aus, der Wert 1 soll als ungültig gewertet werden:
PHP:
// Wenn Anrede nicht gesetz ist oder auf 1 steht
if(!isset($_POST['Anrede']) || $_POST['Anrede'] == 1){
    echo "Anrede auswählen";
}
 
Und bei den Listen selber dann noch:

PHP:
<select name="Betreff" id="infos">
	<option value="1" selected>Bitte auswählen</option>
    <option value="Fragen zur Ranch" <? if (@$_POST['Betreff'] == 'Fragen zur Ranch') echo 'selected'; ?>>Fragen zur Ranch</option>
    <option value="Fragen zu einem Kurs" <? if (@$_POST['Betreff'] == 'Fragen zu einem Kurs') echo 'selected'; ?>>Fragen zu einem Kurs</option>
    <option value="Anmelden f&uuml;r einen Kurs" <? if (@$_POST['Betreff'] == 'Anmelden f&uuml;r einen Kurs') echo 'selected'; ?>>Anmelden f&uuml;r einen Kurs</option>
    <option value="Fragen zu unserem Reitshop" <? if (@$_POST['Betreff'] == 'Fragen zu unserem Reitshop') echo 'selected'; ?>>Fragen zu dem Reitshop</option>
    <option value="Sonstige Anfrage" <? if (@$_POST['Betreff'] == 'Sonstige Anfrage') echo 'selected'; ?>>Sonstige Mitteilung</option>
</select>

Damit die Auswahl auch wieder markiert wird.

Wobei ich es "gefährlich" finde die Value Werte so als Text anzugeben, beim Vergleichen geht da schnell mal was daneben. Siehe letzter Eintrag: value = "Sonstige Anfrage" angezeigter Text "Sonstige Mitteilung"
 
So in etwa hatte ich das auch, hat nicht funktioniert.

Deine Lösung funktioniert wenn ich echo durch $fehler ersetzte.

Code:
if(!isset($_POST['Anrede']) || $_POST['Anrede'] == 1){
    $fehler .= "<li> die Anrede fehlt</li>";

getestet und eingetütet, danke, danke und nochmals danke
und
frohe Ostern

Wolfgang
 
Zurück