Fehler bei Übergabe von Formular an *.php-Datei

Vektor

Erfahrenes Mitglied
Hallo zusammen,

ich weiß dass mein Problem, das ich gleich schildern werde, hier schon einige male bhandelt wurde, ich finde nur einfach keine Lösung dazu, wie ich das bei mir umsetzen kann bzw. was ich falsch mache. Deshalb hier mein Problem:

Ich habe ein Formular in einer *.html-Datei erstellt. Dieses Formular schicke ich mit klick auf einen Button an eine *.php Datei welche die einzelnen Textboxen überprüft, ob erwas darin geschrieben wurde. Leider kommt nun wenn ich aber auf den Button klicke immer die Fehlermeldung:
Code:
Notice: Undefined index: Name in c:\Inetpub\wwwroot\Formmailer\Formmailer.php on line 11
Wenn ich das Formular per "method = Post" übermittle müssten doch die Variablen existieren, oder? Hier noch der Code des Formulars:
HTML:
<form action="Formmailer.php" method="post" name="form1">
    <p align="right"><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif">Vorname/Name 
      <input name="Name" type="text" id="Name">
      </font></p>
    <p align="right"><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif"> 
      </font> <font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif">Stra&szlig;e/Nr. 
      <input name="Strasse" type="text">
      </font></p>
    <p align="right"><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif"> 
      </font><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif">PLZ/Ort 
      <input type="text" name="PLZ">
      </font></p>
    <p align="right"><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif"> 
      </font><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif">Land 
      <input type="text" name="Land">
      </font></p>
    <p align="right"><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif"> 
      </font><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif">Telefon 
      <input type="text" name="Telefon">
      </font></p>
    <p align="right"><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif"> 
      </font><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif">Telefax 
      <input type="text" name="Fax">
      </font></p>
    <p align="right"><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif"> 
      </font><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif">E-Mail 
      <input type="text" name="email">
      </font></p>
    <p align="right">&nbsp;</p>
    <p align="right"><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif">Anreise 
      <input type="text" name="Anreise">
      </font></p>
    <p align="right"><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif">Abreise 
      <input type="text" name="Abreise">
      </font></p>
    <p align="right"><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif">Erwachsene
      <input name="Erwachsene" type="text" size="3">
      </font></p>
    <p align="right"><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif"></font><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif"> 
      <font color="#666666"> </font></font><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif">Kind(er) 
      <input name="Kinder" type="text" size="3">
      </font></p>
    <p align="right"><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif"> 
      </font><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif">im 
      Alter von 
      <input name="Alter" type="text" size="6">
      Jahren</font></p>
    <p align="right">&nbsp;</p>
    <p align="right"><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif">Mitteilungen 
      und sonstige Fragen<font color="#666666">.</font><br>
      <textarea name="Sonstiges" cols="30" rows="6"></textarea>
      </font></p>
    <p align="right"> 
      <input type="submit" name="Submit" value="Senden">
    </p>
  </form>
Und der Code von der php-Datei:
PHP:
<?php 
//Abfrage ob alle Pflichtfelder ausgefüllt wurden
If ($_POST["Name"] == "")
	{
	Fehler();
	}
elseif ($_POST["Strasse"] == "")
	{
	Fehler();
	}
elseif ($_POST["PLZ"] == "")
	{
	Fehler();
	}
elseif ($_POST["Telefon"] == "")
	{
	Fehler();
	}
elseif ($_POST["email"] == "")
	{
	Fehler();
	}
elseif ($_POST["Anreise"] == "")
	{
	Fehler();
	}
elseif ($_POST["Abreise"] == "")
	{
	Fehler();
	}
elseif ($_POST["Erwachsene"] == "")
	{
	Fehler();
	}
elseif ($_POST["Kinder"] == "")
	{
	Fehler();
	}
else
	{
	Mail_versenden();
	}
?>

Ich hoffe ihr könnt mir helfen.

Vielen Dank im vorraus.
 
Bei mir funktioniert es. Grundsätzlich: Hat die Datei mit dem PHP Code auch die endung .php ?

MFG
redX
 
Danke für die schnelle Antwort.

Ja hat es. Ich hab jetzt noch weitergesucht und gelesen dass man mal in der php.ini die Einstellung Register Globals auf on stellen soll. Nun bringt er mir auch keine Fehlermeldung mehr.

Aber ich hab noch ein Problem. Und zwar möchte ich gerne wenn die Funktion Fehler aufgerufen wird, dem Benutzer mitteilen dass er alle Felder ausfüllen soll. Darunter(unter dem Text) soll ein Button sein, der wieder zum Formular zurückführt. Wenn ich den als normalen HTML-Tag einfüge bekomme ich die Fehlermeldung, dass er die Seite nicht öffnen kann. Geht das auch mit PHP?
 
Hmpf, dann muss der Link falsch sein. Mit PHP kannst du schon eine andere Seite öffnen.
Dann könntest du auch machen, das z.B. oben rot steht "Bitte alle Felder ausfüllen" und unten erscheihnt wieder das Formular.

Du hast bei der Datenvalidierung Viele If Schleifen verwendet. Du kannst auch einfach eine nehmen und mit dem && Operator verküpfen.

PHP:
if ($_POST["Erwachsene"] != "" && $_POST["Kinder"] != "" && etc...) 
{ 
    Mail_versenden(); 
} 
else
{ 
    Fehler(); 
}

MFG
redX
 
Danke für den Tipp mit den logischen Operatoren. So sieht es schon viel übersichtlicher aus.

Wie würde das denn funktionieren, wenn ich möchte dass bei einem Fehler auf dem Formular, welches sich in der "Kontakt.html" befindet, eine Zeile in rotem Text mit einer Fehlermeldung erscheint? Ich habe von meiner PHP-Datei mit Hilfe des Headers Befehl bisher auf eine Fehlermeldungs-Datei umgelenkt wenn ein Fehler auftrat. Aber das mit der Textausgabe direkt auf dem Formular bekomme ich nicht hin.
 
Hi,
So sieht es evtl. übersichtlicher aus, da weniger Zeilen "verschwendet" werden, allerdings weisst du nicht, welcher Fehler aufgetreten ist. Du könntest z.B. überprüfen, ob die EMail Adresse auch richtig angegeben wurde (also ob ein @ dabei ist, ob eine Top Level Domain angegeben wurde, ...) und dann dem Benutzer mitteilen: "hey, die Mail Adresse stimmt nicht..."

Nur so ein Tipp aus eigener Erfahrung...

Außerdem sehe ich gerade, dass du dein PHP im ISS Verzeichnis laufen lässt.
Vektor hat gesagt.:
Notice: Undefined index: Name in c:\Inetpub\wwwroot\Formmailer\Formmailer.php on line 11
Wenn es wirklich ein ISS ist (kein Apache) musste mir umbedingt den Link zum downloaden geben (also PHP für ISS) :)

Greatz
 
Zuletzt bearbeitet:
Jupp ich verwende IIS. Hier der Link für das PHP-Teil :
http://www.php.net/downloads.php

Wie würde das denn gehen, dass wenn ein Feld nicht ausgefüllt wurde, er die Fehlermeldung mit "echo" oder so nicht in der Formmailer.php anzeigt sondern auf der Kontakt.html?

Und wie könnte ich mit PHP eine überprüfung auf die Korrektheit der E-Mail Adresse durchführen. Ich kenn mich doch mit der Syntax von PHP net aus :). Bei VB würde ich das so machen:

Code:
If variable like ("*@*.*") = true then
'Korrekte Eingabe
else
'Falsche Eingabe
End If

Gibt es bei PHP auch ne möglichkeit so auf ein bestimmtes Format zu überprüfen?
 
PHP:
<?php
if(isset($_POST["Submit"])){
   if(!ereg(@"^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@(([0-9a-zA-Z])+([-\w]*[0-9a-zA-Z])*\.)+[a-zA-Z]{2,9})$", $_POST["email"])) {
	   echo "EMail Adresse ungültig!";
   }
   elseif(!isset( $_POST["Name"])) { 
	   echo "Name nicht angegeben!";
   } 
   elseif(!isset( $_POST["Strasse"])) { 
	   echo "Straße nicht angegeben";
   } 
   elseif(!isset( $_POST["PLZ"])) { 
	   echo "Postleitzahl nicht angegeben";
   } 
   elseif(!isset( $_POST["Telefon"])) { 
	   echo "Telefonnummer nicht angegeben";
   } 
   elseif(!isset( $_POST["Anreise"])) { 
	   echo "Anreisedatum nicht angegeben";
   } 
   elseif(!isset( $_POST["Abreise"])) { 
	   echo "Abreisedatum nicht angegeben";
   } 
   elseif(!isset( $_POST["Erwachsene"])) { 
	   echo "Anzahl erwachsener Personen nicht angegeben";
   } 
   elseif(!isset( [$_POST["Kinder"])) { 
	   echo "Anzahl Kinder nicht angegeben";
   } 
   else { 
	   Mail_versenden(); 
   } 
}
?>
<form action="<?php echo $PHP_SELF; ?>" method="post" name="form1">
	<p align="right"><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif">Vorname/Name 
	  <input name="Name" type="text" id="Name" value="<?php echo $_POST["Name"]; ?>"></font></p>
	<p align="right"><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif"></font>
	  <font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif">Stra&szlig;e/Nr. 
	  <input name="Strasse" type="text" value="<?php echo $_POST["Strasse"]; ?>">
	  </font></p>
	<p align="right"><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif"> 
	  </font><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif">PLZ/Ort 
	  <input type="text" name="PLZ" value="<?php echo $_POST["PLZ"]; ?>">
	  </font></p>
	<p align="right"><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif"> 
	  </font><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif">Land 
	  <input type="text" name="Land" value="<?php echo $_POST["Land"]; ?>">
	  </font></p>
	<p align="right"><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif"> 
	  </font><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif">Telefon 
	  <input type="text" name="Telefon" value="<?php echo $_POST["Telefon"]; ?>">
	  </font></p>
	<p align="right"><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif"> 
	  </font><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif">Telefax 
	  <input type="text" name="Fax" value="<?php echo $_POST["Fax"]; ?>">
	  </font></p>
	<p align="right"><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif"> 
	  </font><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif">E-Mail 
	  <input type="text" name="email" value="<?php echo $_POST["email"]; ?>">
	  </font></p>
	<p align="right">&nbsp;</p>
	<p align="right"><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif">Anreise 
	  <input type="text" name="Anreise" value="<?php echo $_POST["Anreise"]; ?>">
	  </font></p>
	<p align="right"><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif">Abreise 
	  <input type="text" name="Abreise" value="<?php echo $_POST["Abreise"]; ?>">
	  </font></p>
	<p align="right"><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif">Erwachsene
	  <input name="Erwachsene" type="text" size="3" value="<?php echo $_POST["Erwachsene"]; ?>">
	  </font></p>
	<p align="right"><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif"></font><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif"> 
	  <font color="#666666"> </font></font><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif">Kind(er) 
	  <input name="Kinder" type="text" size="3" value="<?php echo $_POST["Kinder"]; ?>">
	  </font></p>
	<p align="right"><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif"> 
	  </font><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif">im 
	  Alter von 
	  <input name="Alter" type="text" size="6" value="<?php echo $_POST["Alter"]; ?>">
	  Jahren</font></p>
	<p align="right">&nbsp;</p>
	<p align="right"><font color="#FFD195" size="2" face="Arial, Helvetica, sans-serif">Mitteilungen 
	  und sonstige Fragen<font color="#666666">.</font><br>
	  <textarea name="Sonstiges" cols="30" rows="6"><?php echo $_POST["Sonstiges"]; ?></textarea>
	  </font></p>
	<p align="right"> 
	  <input type="submit" name="Submit" value="Senden">
	</p>
  </form>
Du kannst jeden String auf logische Richtigkeit prüfen
http://de3.php.net/manual/de/function.ereg.php

Ich würd aber einges noch benutzerfreundlicher machen...
z.B.
- Anzahl Kinder/Erwachsener in einer Selectbox angeben
- Bei einem Datum immer Tag/Monat/Jahr in einer Selectbox angeben
- Telefon/Fax jeweils zwei Textfelder (Vorwahl/Nummer) und dann per ereg auf Zahlen überprüfen
- bei der PLZ abprüfen, ob es eine Zahl mit 4-5 Ziffern ist
- Mehrere Länder in einer Selectbox vorgeben
....


Greatz
 
Alles klar. Ich werde mich da glaub ich mal noch etwas einarbeiten. Danke für eure Hilfe.
 
Zurück