Formulardaten werden nicht in DB geschrieben....

anskar

Grünschnabel
Hallo

als "PHP-Einsteiger" versuche ich gerade ein Formular zu erstellen. Die User-Eingaben sollen bevor sie in die Datenbank geschrieben werden, auf Richtigkeit etc. überprüft werden.

Dazu habe ich drei Dateien erstellt:

form.php
Code:
<form action="check.php" method="post" name="eingabe" class="form"> 
	
	<b>Name:</b><br>						
	<input type="text" name="name" class="field"><br>
					
	<b>Vorname:</b><br>						
	<input type="text" name="vorname" class="field"><br>
			
	<b>M&auml;dchenname:</b><br>			
	<input type="text" name="m_Name" class="field"><br>
			
	<b>Strasse:</b><br>	
	<input type="text" name="strasse" class="field"><br>
	
	<b>Hausnummer:</b><br>					
	<input type="text" name="hausnr" class="field"><br>
					
	<b>Postleitzahl:</b><br>				
	<input type="text" name="plz" class="field"><br>
			
	<b>Ort:</b><br>	
	<input type="text" name="ort" class="field"><br>					
	<b>Telefon privat:</b><br>				
	<input type="text" name="telPriv" class="field"><br>
					
	<b>Telefon gesch&auml;ftlich:</b><br>	
	<input type="text" name="telGesch" class="field"><br> 		
	
	<b>Mobil:</b><br>
	<input type="text" name="mobil" class="field"><br>
			
	<b>E-Mail-Adtresse:</b><br>				
	<input type="text" name="mail" class="field"><br>				
	<b>Homepage:</b><br>					
	<input type="text" name="web" class="field"><br>
		
	<b>Benutzername:</b><br>
	<input type="text" name="benutzer" class="field"><br>
			
	<b>Passwort:</b><br>					
	<input type="text" name="passwd1" class="field"><br>
			
	<b>Passwortwiederholung:</b>			
	<input type="text" name="passwd2" class="field"><br><br>			

	<input type="submit" value="eintragen" name="absenden" class="btn"> 
	<input type="reset" value="zurücksetzen" class="btn" > 
</form>

Dann zur Überprüfung der Eingaben die check.php

Code:
<?
error_reporting(E_ALL); // alle Fehler anzeigen    
include "connect_DB.php";
include "form.php";
   

$name = $_POST['name']; 
$vorname = $_POST['vorname']; 
$ort = $_POST['ort']; 

if( (empty($_POST['name'])) OR (empty($_POST['vorname'])) OR (empty($_POST['ort'])) )
{ 
	echo "Ihre Eingabe war fehlerhaft. Versuchen Sie es bitte erneut"; 
}
else
{ 
	include "eintrag.php";
	echo "Vielen Dank f&uuml;r Ihre Angaben. Ihre Daten wurden &uuml;bermittelt.";
		
} 
?>
<br><br><a href="form.php">zur&uuml;ck</a>

Und zum Eintragen in die DB eintrag.php

Code:
<?php
error_reporting(E_ALL); // alle Fehler anzeigen    
include "connect_DB.php";


$name = $HTTP_POST_VARS["name"];
$vorname = $HTTP_POST_VARS["vorname"];
$m_Name = $HTTP_POST_VARS["m_Name"];
$strasse = $HTTP_POST_VARS["strasse"];
$plz = $HTTP_POST_VARS["plz"];

$ort = $HTTP_POST_VARS["ort"];
$telPriv = $HTTP_POST_VARS["telPriv"];
$telGesch = $HTTP_POST_VARS["telGesch"];
$mobil = $HTTP_POST_VARS["mobil"];

$mail = $HTTP_POST_VARS["mail"];  
$web = $HTTP_POST_VARS["web"];
$benutzer = $HTTP_POST_VARS["benutzer"];
$passwd1 = $HTTP_POST_VARS["passwd1"];
$passwd2 = $HTTP_POST_VARS["passwd2"];
 	
	
//send to DB
$eintrag = "
INSERT INTO user_data 
		(
		u_name, u_vorname, u_mName, u_strasse, u_hausnr, u_plz, u_ort, u_telPriv, u_telGesch,
		u_mobil, u_mail, u_web,	u_benutzer,	u_passwd1, u_passwd2 
		)

VALUES	(
		'$name', '$vorname', $m_Name', '$strasse', '$hausnr','$plz', '$ort','$telPriv',
		'$telGesch', '$mobil','$mail','$web','$benutzer', '$passwd1','$passwd2'													
		)";
$eintragen = mysql_query($eintrag); 
?>

In der connect_DB.php wird nur die Verbindung zur Datenbank hergestellt.

Das mit der Überprüfung funktioniert, nur werden die Daten nicht in der DB eingetragen.
Wäre über Eure Hilfe dankbar.

mfg anskar
 
Lass Dir mal in der eintrag.php vor $eintragen = mysql_query($eintrag); noch $eintrag ausgeben:

PHP:
echo($eintrag);

Und zeig uns mal den zusammengebastelten sql-String.
 
Also es werden alle Variablen in folgender Form ausgegeben:

Notice: Undefined index: passwd2 in C:\......eintrag.php on line 29

und zum Schluss erscheint dann folgende Meldung:

Notice: Undefined variable: hausnr in C:\....eintrag.php on line 41
INSERT INTO user_data ( u_name, u_vorname, u_mName, u_strasse, u_hausnr, u_plz, u_ort, u_telPriv, u_telGesch, u_mobil, u_mail, u_web, u_benutzer, u_passwd1, u_passwd2 ) VALUES ( '', '', ', '', '','', '','', '', '','','','', '','' )



:(
 
Du hast in Deiner check.php die Variablen so mit Werten gefüllt:

PHP:
$name = $_POST['name'];

und in der eintrag.php so:

PHP:
$name = $HTTP_POST_VARS["name"];

Nehm mal in eintrag.php auch die Variante von check.php

Ich weiss jetzt nicht so genau, ob $HTTP_POST_VARS das Problem ist, ich selbst benutze immer $_POST. Hab grad leider keine Zeit um es auszuprobieren.
 
An
PHP:
 ) VALUES ( '', '', ', '', '','', '','', '', '','','','', '','' )
erkennst du, dass vom Formular anscheinend keine Werte kommen.

Ersetz mal bei allen Variablen nach folgendem Muster
PHP:
$name = $HTTP_POST_VARS["name"];
durch
$name = $_POST["name"];
 
Also ich habe jetzt folgendes in der eintrag.php und check.php stehen:
Code:
	$name = $_POST["name"];
	$vorname = $_POST["vorname"];
	$m_Name = $_POST["m_Name"];
	$strasse = $_POST["strasse"];
	$plz = $_POST["plz"];
	
	$ort = $_POST["ort"];
	$telPriv = $_POST["telPriv"];
	$telGesch = $_POST["telGesch"];
	$mobil = $_POST["mobil"];
	
	$mail = $_POST["mail"];  
	$web = $_POST["web"];
	$benutzer = $_POST["benutzer"];
	$passwd1 = $_POST["passwd1"];
	$passwd2 = $_POST["passwd2"];

und habe leider immer noch keinen Datensatz in der DB....
Auch bleibt die Fehlermeldung in der eintrag.php die gleiche...

mfg anskar
 
Hallo ist da noch jemand der mir helfen kann

Ich wäre Euch echt dankbar. Ich find einfach den Fehler nicht....


anskar
 
Hallo,

die Werte werden aus deinem Formular ja an die check.php übergeben. Entweder ich hab nicht richtig hingeschaut oder die Werte werden nie an die Eintrag.php gesendet.
Lass dir am besten mal die Werte von $name, $vorname etc. ausgeben.
 
Doch, die Werte werden an die eintrag.php "gesendet", denn diese wird in der IF-Abfrage der check.php ja per include() eingebunden.
- Was passiert, wenn du die If-Abrage mal komplett weglässt? Geht es dann?
- Wie mein Vorredner schon sagte: Lass dir mal die einzelnen Formular-Werte ausgeben

Edit:
Du kannst die Zeilen
PHP:
error_reporting(E_ALL); // alle Fehler anzeigen    
include "connect_DB.php";
ruhig einmal löschen, da sie sowohl in der check.php als auch in der eintrag.php eingebunden sind.
 
Zurück