Formular-Inhalte in DB speichern

corona

Erfahrenes Mitglied
Hallo,
nun hat es geklappt die Inhalte des Formulars an mich per Email zu verschicken (siehe Topic: Übergabe von Checkbox-Inhalten).

Wie kann ich denn genau diese Inhalte in eine MySQL-Datenbank schreiben? Hab mal schon etwas gemacht, aber es klappt nicht.

Meine Config.php Datei sieht so aus:
<?php
$server="localhost";
$user="benutzername";
$pass="passwort";
$dbase="datenbankname";
$conn=@mysql_connect($server,$user,$pass)
or die ("<B>Fehler beim Datenbankzugriff</body></html>");
mysql_select_db($dbase,$conn);
?>


Diese Datei wird in der eigentlichen Umfrage-Datei Umfrage.php included:
<?php
include("config.php");
?>

In der gleichen Datei etwas drunter habe ich dann noch folgendes getippt:
<?php
/* Eintrag */
$db="datenbankname";
$sql="INSERT INTO `tabellenname` (id, alter, geschlecht, berufstatus) VALUES ('', '$alter', '$geschlecht', '$berufstatus')";

mysql_query($sql,$conn);
?>


Leider klappt das nicht. Hab ich was vergessen oder etwas falsch gemacht? Heißt vielleicht der MySQL-Server anders als "Localhost"? Was trägt ihr da immer ein?
Ich weiss auch nicht ob ich überhaupt eine DB-Verbindung kriege.

Wäre echt dankbar wenn auch dieses Problem gelöst werden würde,
Vielen Dank jetzt schon mal für jede Hilfe,
Ciao...
 
1. Schau mal bitte in meine Signatur. Letzte zeile.
2. Mach mal aus
PHP:
$sql="INSERT INTO `tabellenname` (id, alter, geschlecht, berufstatus) VALUES ('', '$alter', '$geschlecht', '$berufstatus')";
das:
PHP:
$sql="INSERT INTO `tabellenname` (id, alter, geschlecht, berufstatus) VALUES ('', '".$alter."', '".$geschlecht."', '".$berufstatus."')";

Sollte dann klappen.

mb fanste
 
Hallo,
hab die Änderungen vorgenommen, doch leider geschieht immer noch kein Eintrag in der DB. Es kommt aber auch keine Fehlermeldung.

Zumindest weiß ich jetzt sicher, dass die DB-Verbindung hergestellt ist. Hab nämlich zum test ein falsches Passwort eingegeben und dann stand, dass leine Verbindung hergestellt werden konnte.

Die Daten werden mir per Email an mich geschickt. Also müsste mit den Variablen und so auch alles stimmen.

Wer kann mir weiter helfen? Wo könnte der Fehler sein?

Viele Dank für jede Hilfe,
Corona
 
Sicher, dass es keine Fehlermeldung gibt? Häng mal hinter das mysql_query() noch ein or die(mysql_error())
 
hallo,
hab ich gemacht, also:
mysql_query($sql,$conn);
or die(mysql_error());

Folgende Fehlermeldung erscheint dann:
"Parse error: parse error, unexpected T_LOGICAL_OR in /var/www/web22/html/umfragedb/umfrage.php on line 272"

Line 272 ist die Zeile mit dem "or die(mysql_error());"


Mache ich daraus ein (das or weg gelassen):
mysql_query($sql,$conn);
die(mysql_error());

Dann wird das Formular angezeigt, aber unten steht noch: "Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch nachschlagen (diese kann für verschiedene Server-Versionen unterschiedlich sein) bei 'alter, geschlecht, berufstatus, internetanschluss, internetfuerwas, webalsinfo, ' in Zeile 1"


Spielt es eigentlich auch eine Rolle wo der Php-Code mit dem DB-Eintrag steht? Bei mir steht er nach den HTML-Angaben für das Formular.


Danke für jede Hilfe,
Corona
 
hallo,

was sind Backticks?

Wie muss ich den Text ändern, damit es mit dem DB-Eintrag funktioniert?
<?php
/* Eintrag */
$db="datenbankname";
$sql="INSERT INTO `tabellenname` (id, alter, geschlecht, berufstatus) VALUES ('', '$alter', '$geschlecht', '$berufstatus')";

mysql_query($sql,$conn);
?>

thanx ;)
 
Hallo,
gute Nachrichten: Der DB-Eintrag klappt schon mal. Auch wenn nicht perfekt: Es klappt. Bis hierhin Danke schon mal an alle.

Jetzt sind noch einige Kleinigkeiten zu entfernen:

1. Es werden immer 2 Einträge gleichzeitig gemacht. Der eine mit den Daten vom Formular und dann noch immer ein leerer Eintrag. wie kann ich das beheben und wieso macht er sowas?


2. Da das Formular auch 3 Fragen beinhaltet, die Checkbox-Inhalte in ein Array weitergeben und diese mit implode() ausgelesen werden, kommt eine kleine Fehlermeldung von php. Obwohl der Eintrag des Arrays in die DB korrekt abläuft. Hier die Fehlermeldung:
"Warning: implode(): Argument to implode must be an array. in /var/www/web22/html/umfragedb/umfrage.php on line 269"

Und hier der dazugehörige Php-Text (mit dem Fehler):
$sql="INSERT INTO `tabellenname` (`id`, `alter`, `geschlecht`, `internetfuerwas`) VALUES ('', '".$alter."', '".$geschlecht."', '".implode($_REQUEST['internetfuerwas'])."')";

Wo liegt der Fehler? wie schon erwähnt: der Eintrag läuft korrekt, trotzdem erscheint die Fehlermeldung oben beim Formular. Ist wahrscheinlich ein Syntax-Fehler oder so.


Vielen Dank. Wäre echt toll wenn wir die 2 Fehler auch lösen könnten ;)
Schönen Tag noch, Corona
 
Zur Frage 1: Sendest du denn nur dann eine Abfrage, wenn auch tatsächlich Daten vorhanden sind? Bei einem „selbstaufrufenden“ Skript solltest du dies nämlich unbedingt tuen.

Zur Frage 2: Werdeb denn tatsächlich Parameter übermittelt, die von PHP als Array verarbeitet werden? Denn als Array zu verarbeitende Parameter müssen dem Schema <Bezeichner>[] oder <Bezeichner>[<Schlüssel>] entsprechen.

Noch ein sicherheitsbedingter Tipp: Traue nie den Benutzereingaben:
PHP:
<?php

	…
	$sql = "
		INSERT INTO
		        `tabellenname`
		  SET
		        `alter`           = '".mysql_real_escape_string($_POST['alter'])."',
		        `geschlecht`      = '".mysql_real_escape_string($_POST['geschlecht'])."',
		        `internetfuerwas` = '".implode(array_map('mysql_real_escape_string', $_POST['internetfuerwas']))."'
		";
	…

?>
Weitere Informationen zum Thema „Sicherheit“:Noch mehr Informationen wirst du über die Suchfunktion finden.
 
Zurück