Daten aus Formular in MySQL-DB eintragen

Zenti

Erfahrenes Mitglied
Hallo alle zusammen. Ich weis das dieses Thema bereits schon 1000mal beantwortet worden ist.
Normalerweise kriege ich das ganze auch ohne probleme selber hin. Doch in diesem Fall weis ich nicht wo mein Fehler ist O.o

Viel. fällt euch ja auf woran es liegen kann.

Das HTML Formular:

HTML:
<form name="login_02" action="anmeldung_erfolgreich.php" method="POST">

<div style="visibility:hidden">
<input name="passwort" type="text" value="">
<input name="email" type="text" value="<?PHP echo $_POST[anmeldung_form]; ?>">
</div>

<div class="anmeldung_bg">
<div class="close"><a href="index.php"><img src="bilder/close.png" name="Image1" border="0" id="Image1"/></a></div>
<div class="gs_logo"><img src="bilder/ga_logo.png" /></div>
<div id="form">
<div class="form_vorname"><input class="vorname" name="vorname" type="text" onFocus="this.className='vorname_ov'" onSelect="this.className='vorname_ov'" value="" /></div>
<div class="form_nachname"><input class="nachname" name="nachname" type="text" onFocus="this.className='nachname_ov'" onSelect="this.className='nachname_ov'" value="" /></div>
<div class="form_adresse"><input class="adresse" name="adresse" type="text" onFocus="this.className='adresse_ov'" onSelect="this.className='adresse_ov'" value="" /></div>
<div class="form_ort"><input class="ort" name="ort" type="text" onFocus="this.className='ort_ov'" onSelect="this.className='ort_ov'" value="" /></div>
<div class="form_plz"><input class="plz" name="plz" type="text" onFocus="this.className='plz_ov'" onSelect="this.className='plz_ov'" value="" /></div>
</div>
<div id="but">
<div class="but_neuladen"><a href="javascript:document.forms[0].reset()"><img src="bilder/but_neuladen.png" border="0" id="Image3" onmouseover="MM_swapImage('Image3','','bilder/but_neuladen_ov.png',1)" onmouseout="MM_swapImgRestore()" /></a>
  <input type="image" src="bilder/but_jetztanmelden.png" id="Image2" onmouseover="MM_swapImage('Image2','','bilder/but_jetztanmelden_ov.png',1)" onmouseout="MM_swapImgRestore()" /></div>
</div>

<div class="Stil13" id="teilnehmer">
<span class="Stil11">Teilnehmer</span> <span class="Stil12">720</span></div>
</div>

</form>

Wenn das HTML Formular ausgefüllt ist leitet es auf folgende Seite mit folgendem Script weiter.

anmeldung_erflogreich.php:
PHP:
<?php
include "inc/mysql_connection.php";


$eintrag = "INSERT INTO teilnehmer
(ID, email, vorname, nachname, adresse, ort, plz, passwort)

VALUES
('$ID','$email','$vorname','$nachname','$adresse','$ort','$plz','$passwort')";

	mysql_query($eintrag);
	$teilnehmer = mysql_insert_id(); 
?>


mysql_connection.php:
PHP:
<?php

// * MYSQL-DATENBANK BENUTZERDATEN * //

$dbname="ausgeblendet";
$dbhost="localhost";
$dbuser="ausgeblendet";
$dbpass="ausgeblendet";

// * MYSQL CONNECTION & AUSWAHL DER DATENBANK * //

mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname);

?>


Normalerweise müssten die Daten in meine Datenbank übertragen werden.
ER TRÄGT ABER NUR DIE ID's EIN!
bzw. Ein Eintrag ohne Daten wird in die Datenbank geschrieben und die ID erweitert sich logischerweise automatisch da AI.
ALLE ANDEREN EINTRÄGE SIND LEHR.

Was mache ich Falsch?

Freue mich über jeden Tipp :)

mit freundlichen Grüßen,
*Zenti
 
Das freut mich nicht allein zu sein ;)
Ich werde jetzt mal paar andere (bereits fertige) scripte von mir testen die an die selbe Datenbank angeschlossen sind. Die müssten ja eigentlich noch funktionieren.
Irgendwo muss doch der Fehlerteufel sitzen... grummel xD

mit freundlichen Grüßen,
*Zenti

EDIT:
Oh mein GOTT!! Alle Seiten von mir und alle Scripte funktionieren nicht mehr. Es werden keinerlei Datenbankeinträge getätigt!
Also an dem Script liegts wohl eher nicht! Sondern eher an meinem Anbieter!

Bin bei "http://all-inkl.com/". die benutzen kasserver..
Werde dort gleich mal anrufen. (was mir gerade aufgefallen ist... das phpmyadmin Interface sieht auf einmal ein bisschen anders aus. Ô.o)
 
Zuletzt bearbeitet:
So habe jetzt mit dem Kundenservice telefoniert. Muss sagen die sind sehr unhöflich! Sie ändern einfach was am Server und ich bin dann selber Schuld Oo?
Naja,..

Er meinte ich müsse das so abändern.

So hatte ich es:
PHP:
<?php

include "inc/mysql_connection.php";

$eintrag = "INSERT INTO teilnehmer
(ID, email, vorname, nachname, adresse, ort, plz, passwort)

VALUES
('$ID','$email','$vorname','$nachname','$adresse','$ort','$plz','$passwort')";

	mysql_query($eintrag);
	$teilnehmer = mysql_insert_id(); 
?>


So sollte ich es umändern:
PHP:
<?php

include "inc/mysql_connection.php";


$eintrag = "INSERT INTO teilnehmer
(ID, email, vorname, nachname, adresse, ort, plz, passwort)

VALUES
('$ID','$_POST['email']','$_POST['vorname']','$_POST['nachname']',$_POST['adresse']','$_POST['ort']','$_POST['plz']','$_POST['passwort']')";

	mysql_query($eintrag);
	$teilnehmer = mysql_insert_id(); 

?>

Habs leider noch nicht ausprobiert obs geht, da das ja so nicht stimmt.
FRAGE: Wir schreibe ich das in den code so das das mit den zeichen passt ? Hab ja einmal bereits " " & ' ' verwendet. Oo



EDIT:

Habs jetzt mal so versucht..
PHP:
($_POST['$ID'],$_POST['$email'],$_POST['$vorname'],$_POST['$nachname'],$_POST['$adresse'],$_POST['$ort'],$_POST['$plz'],$_POST['$passwort'])";

Fehlermeldung: Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in


EDIT:

Und so,..
PHP:
({$_POST['$ID']}, {$_POST['$email']}, {$_POST['$vorname']}, {$_POST['$nachname']}, {$_POST['$adresse']}, {$_POST['$ort']}, {$_POST['$plz']}, {$_POST['$passwort']})";

Fehlermeldung: Keine Fehlermeldung allerdings auch kein Datenbankeintrag -.- Oh man so schwerr kann das doch nicht sein -.-



Der Support sagte zu mir das ein Serverwechsel statt fand und die registerGlobals (Ich hoffe ich habs noch richtig im Kopf) ausgeschaltet worden sind.

mit freundlichen Grüßen,
*Zenti
 
Zuletzt bearbeitet:
Hi, ich denke er meinte es so:
PHP:
$eintrag = "INSERT INTO teilnehmer
(ID, email, vorname, nachname, adresse, ort, plz, passwort)

VALUES
('$ID','".$_POST['email']."','".$_POST['vorname']."','".$_POST['nachname']."','".$_POST['adresse']."','".$_POST['ort']."','".$_POST['plz']."','".$_POST['passwort']."')";

Ich hoffe ich hab da jetzt kein Zeichen übersehen, aber das Prinzip wird klar hoffe ich :)
 
Grade habe ich die Lösung selber gefunden und wollte sie hier posten xD
Da warst du schneller Operator_Jon,.. ;)
Aber vielen lieben Dank für deine Bemühungen.

Und ja jetzt funktioniert alles und die Daten werden in die DB eingetragen.
Mich wundert nur warum die obige Lösung (mein Anfangs Post) nicht funktioniert hat.
Hatte das wissen von php-einfach.de und hat immer reibungslos funktioniert.

Ich weis nun das es eine sehr unsichere Lösung ist so wie ich sie oben gezeigt habe. Mich würde nur genau interessieren WARUM ?
könnte das viel. bitte jemand erklären.

Vielen Dank im vorraus,.. :)

mit freundlichen Grüßen,
*Zenti
 
Sagen wir du hast das folgende Feld:
Code:
<input type="text" name="field">

Wenn die register globals Variable in der php.ini angeschaltet ist, werden alle Felder die per POST oder GET übertragen werden als "lokal" Variable verfügbar gemacht, du könntest also:
PHP:
echo $field;
schreiben und es würde funktionieren.

Dem Script ist es hierbei egal ob der Wert nun per GET oder POST kommt, was bedeutet, dass ein Benutzer den Wert auch einfach in der URL setzen könnte.
Ist die register globals Variable aus, so musst du immer
PHP:
echo $_POST['field'];
schreiben,
PHP:
echo $_GET['field'];
funktioniert nun nicht mehr.

Was die Sache aber (und auch das aktuelle) wirklich unsicher macht, ist die Gefahr einer SQL-Injection.
Das bedeutet, dass ein Benutzer in dein Feld "schadcode" einbringen könnte.

Er könnte beispielsweise in das Feld "passwort" so etwas wie
Code:
xxx'); DELETE FROM `teilnehmer` WHERE `email` LIKE '%';
einfügen. Schwupps, wären deine Daten futsch.

Mögliche Lösungsansätze sind die Daten genauestens zu prüfen (was du mit allen Daten die von Benutzern kommen tun solltest und das vor Allem immer), zudem solltest du die Funktion mysql_real_escape_string(); verwenden. Mehr Informationen dazu findest unter dem Link :)

Ich hoffe ich konnte dir ein wenig helfen!
 
Zuletzt bearbeitet:
Ja das war schon mal sehr lehrreich xD
Ich danke dir nochmal recht herzlich für die Hilfe und für
die Erklärung bin jetzt schon wieder ein bisschen schlauer geworden ;)

Thread Closed :)

mit freundlichen Grüßen,
*Zenti
 
Hallo

Bei mir ist das selbe Problem.
Habe es mal wie eure Lösung gemacht. Einmal mit einfachen Anführungszeichen im $_POST[''] und einmal mit Doppelten.
PHP:
 	for($y=0;$y<5;$y++)
	 {
		$input1 = $_POST["unternummerneu$anz$y"];
		$input2 = $_POST["untertitelneu$anz$y"];
		$idhaupthema = $_POST['idhaupthema'];  		
			 
		if($input1 != "" && $input1 != "Nr." && $input2 != "" && $input2 != "Titel")			//FHELER: INSERT fült Tabelle mit leeren Datensätzen
		 {echo "New";
			$insert = "INSERT INTO bericht_unterthemen
						 (`berichthaupthema_ID`, `Nummer`, `Titel`, `Text`, `Begruendung`)					
					   VALUE
					   ('$idhaupthema','".$_POST['unternummerneu$anz$y']."','".$_POST['untertitelneu$anz$y']."','".$_POST['untertiteltextneu$anz$y']."','".$_POST['begruendungstextneu$anz$y']."')"; 
						 
			mysql_query($insert) or die (mysql_error());
$save=1;					 
		 }
PHP:
 	for($y=0;$y<5;$y++)
	 {
		$input1 = $_POST["unternummerneu$anz$y"];
		$input2 = $_POST["untertitelneu$anz$y"];
		$idhaupthema = $_POST['idhaupthema'];  		
			 
		if($input1 != "" && $input1 != "Nr." && $input2 != "" && $input2 != "Titel")			//FHELER: INSERT fült Tabelle mit leeren Datensätzen
		 {echo "New";
			$insert = "INSERT INTO bericht_unterthemen
						 (`berichthaupthema_ID`, `Nummer`, `Titel`, `Text`, `Begruendung`)					
					   VALUE
					   ('$idhaupthema','".$_POST["unternummerneu$anz$y"]."','".$_POST["untertitelneu$anz$y"]."','".$_POST["untertiteltextneu$anz$y"]."','".$_POST["begruendungstextneu$anz$y"]."')"; 
						 
			mysql_query($insert) or die (mysql_error());
$save=1;					 
		 }
Und trotzdem werden mir, bis auf die ID, alle Felder als leere Datensätze in der DB gespeichert.

Hier nochmals der Link zu meinem Problem. Momentan habe ich es schon an drei verschiedenen Orten in der Selben Datei.
http://www.tutorials.de/forum/php/358790-inhalt-db-speichern-2.html
 
Zuletzt bearbeitet:
PHP:
$input1 = $_POST["unternummerneu$anz$y"];
Ich würde sagen dein Problem liegt im Variablennamen, ich bin nicht sicher ob du das zwischen den eckigen Klammern so schreiben kannst, wohl eher nicht.
Ersetze mal alle $_POST mit folgendem Muster:
PHP:
$input1 = $_POST['unternummerneu'.$anz.$y];


Edit:
Falls das nichts hilft wäre es gut wenn du dein Formular und den Rest um die Schleife herum posten könntest.
 
Zurück