Problem mit script (email und datenbank)

visionsign

Mitglied
Hi, ich habe da ein kleines script, es besteht aus 2 dateien, einer html, in der das formular steht und einer php, die den inhalt des formulars auswertet. So. Das formular wird an eine email adresse gesendet und zusätzlich in einer db gespeichert.
Das funktioniert auch soweit (mail kommt an, db eintrag passiert auch) ABER es kommen keine inhalte die ich in das formular geschrieben habe, sondern eine leere email und ein leerer db eintrag.

Hier die html:
Code:
<form action='process.php' method=post><table border=0><tr><td>firma</td><td><input type=text name='firma' size=20></td></tr><tr><td>position</td><td><input type=text name='position' size=20></td></tr><tr><td>name</td><td><input type=text name='name' size=20></td></tr><tr><td>vorname</td><td><input type=text name='vorname' size=20></td></tr><tr><td>str</td><td><input type=text name='str' size=20></td></tr><tr><td>plz</td><td><input type=text name='plz' size=20></td></tr><tr><td>ort</td><td><input type=text name='ort' size=20></td></tr><tr><td>tel</td><td><input type=text name='tel' size=20></td></tr><tr><td>fax</td><td><input type=text name='fax' size=20></td></tr><tr><td>mobil</td><td><input type=text name='mobil' size=20></td></tr><tr><td>email</td><td><input type=text name='email' size=20></td></tr><tr><td>www</td><td><input type=text name='www' size=20></td></tr></table><input type=submit value='Submit Form'> <input type=reset value='Reset Form'></form>


und hier die php:

Code:
<?php
 
$errors=0;
 
$error="The following errors occured while processing your form input.<ul>";
 
if($errors==1) echo $error;
 
else{
 
$message="firma: ".$firma."
 
position: ".$position."
 
name: ".$name."
 
vorname: ".$vorname."
 
str: ".$str."
 
plz: ".$plz."
 
ort: ".$ort."
 
tel: ".$tel."
 
fax: ".$fax."
 
mobil: ".$mobil."
 
email: ".$email."
 
www: ".$www."
 
";
 
mail("info@vision-sign.de","Formularinhalte",$message,"From: info@vision-sign.de");
 
$link = mysql_connect("localhost","usern","pw");
 
mysql_select_db("usr_web12_3",$link);
 
$query="insert into group_contact (firma,position,name,vorname,str,plz,ort,tel,fax,mobil,email,www) values ('".$firma."','".$position."','".$name."','".$vorname."','".$str."','".$plz."','".$ort."','".$tel."','".$fax."','".$mobil."','".$email."','".$www."')";
 
mysql_query($query);
 
header("Refresh: 0;url=http://dersonic.de");
 
}
 
?>
 
Also zur Vorgehensweise:

Ich würde halt einfach mal testen, ob die Variablen, die du in eine Mail schreiben willst, überhaupt gefüllt sind. --> mittels echo

Dann scheint mir die if-Abfrage für die errors eher sinnlos zu sein - du setzt sie ja zu Beginn auf 0, wie sollen sie dann noch 1 werden, wenn du keine Operation durchführst?

Und zum Schluss, wahrscheinlich das wichtigste:

Dein HTML scheint mir etwas eingerostet zu sein :-)

<form action="process.php" method="post"> usw usw usw

Die "" - Regel gilt übrigens für alle Elemente (auch für die type-tags)

cu shutdown
 
Zuerst sollte deine HTML-Grammatik einheitlicher werden, also um Attribute immer doppelte Anführungszeichen setzen, also anstatt <p id=abcxyz> immer schreiben: <p id="abcxyz">. Verwendet man z.B. in onclick, onmouseover etc. mit Javascript, kann man dort einfache Anführungszeichen verwenden, um Texte im Javascript einzuschließen:

<p onmouseover="my_function('parameter');">


Zu deinem PHP-Problem: prüfe zuerst mal, ob register_globals auf "on" steht. Tut es das nicht, ist klar, warum dein Script die Werte nicht erhält. Bevor du aber jetzt diese Konfigurationsvariable änderst, gewöhne dich besser direkt daran, mit den sog. Superglobals zu arbeiten. Diese sind immer definiert, fordern ein wenig mehr Tipparbeit, aber machen den Code lesbarer, da man sofort weiß, woher ein Wert kommt. Vordefinierte Superglobals sind $_GET, $_POST, $_REQUEST, $_SESSION, $GLOBALS, $_FILES, $_COOKIE, $_SERVER und $_ENV.
Das schöne an diesen Variablen ist, dass diese sogar innerhalb von Funktionen verfügbar sind, ohne dass Du diese mit "global XYZ;" verfügbar machen musst.

Die für die Formularverarbeitung wichtigen Variablen sind $_GET, $_POST und $_FILES, zuzüglich $_REQUEST, welches sowohl $_GET als auch $_POST enthält (sinnvoll, wenn Daten entweder per POST oder per GET übertragen werden, je nach Formular). Wenn Du z.B. in HTML folgendes Formular definiert hast:

HTML:
 <form action="form.php" method="post">
      <input type="text" name="vorname" size="40" maxlength="100">
      <input type="submit" name="form_submit" value="Absenden">
      </form>

Du kannst nun mit folgendem Code den Wert auslesen:

PHP:
 if (isset($_POST["form_submit"])) {
      	echo $_POST["vorname"];
      } else {
      	echo "Formulardaten fehlen!";
      }
 
Zuletzt bearbeitet von einem Moderator:
Zurück