Daten werden nicht eingetragen

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
langeweile
Gesperrt
Beiträge: 234
Registriert: 03.12.2006 14:48
Kontaktdaten:

Daten werden nicht eingetragen

Beitrag von langeweile »

ich habe für meinen lateinkurs ein kleines script für vokabelabfragen geschrieben, das geht auch.
ich habe dafür jetzt eine seite erstellt, bei der man vokabeln hinzufügen kann, mit diesem script:

Code: Alles auswählen

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method=post>
Latein:<input type="text" name="latein" size="40" maxlength="80"><br>
Deutsch:<input type="text" name="deutsch" size="40" maxlength="80"><br>
Wortart:<input type="text" name="wortart" size="40" maxlength="80"><br>
Genitiv Sg.:<input type="text" name="genitiv" size="30" maxlength="80">
Genus:<input type="text" name="genus" size="5" maxlength="1"><br>
Nomintaiv m.:<input type="text" name="nominativ_m" size="30" maxlength="80">
Nomintaiv f.:<input type="text" name="nominativ_f" size="30" maxlength="80">
Nomintaiv n.:<input type="text" name="nominativ_n" size="30" maxlength="80"><br>
Präsens Aktiv:<input type="text" name="praesens_a" size="30" maxlength="80">
Perfekt Aktiv:<input type="text" name="perfekt_a" size="30" maxlength="80">
PVP:<input type="text" name="pvp" size="30" maxlength="80">
<input type="submit" value="Absenden">
</form>
<?php
include ("dbconnect.php");
$latein = $_POST['latein'];
$deutsch = $_POST['deutsch'];
$wortart = $_POST['wortart'];
$genitiv = $_POST['genitiv'];
$genus = $_POST['genus'];
$nominativ_m = $_POST['nominativ_m'];
$nominativ_f = $_POST['nominativ_f'];
$nominativ_n = $_POST['nominativ_n'];
$praesens_a = $_POST['praesnes_a'];
$perfekt_a = $_POST['perfekt_a'];
$pvp = $_POST['pvp'];
if ($latein == "" or $deutsch == "" or $wortart == "")
{
echo "Bitte fülle alle benötigten Felder aus";
}
else
{
if ($wortart == "nomen" || $wortart == "adjektiv" || $wortart == "pronomen" || $wortart == "verb" || $wortart == "adverb" || $wortart == "praeposition" || $wortart == "konjunktion" || $wortart == "zahlwort"){
$db_update = 'INSERT INTO `Vokabeln` (`latein`, `deutsch`, `wortart`, `genitiv`, `genus`, `nominativ_m`, `nominativ_f`, `nominativ_n`, `praesens_a`, `perfekt_a, pvp`) 
VALUES ('. $latein .', '. $deutsch .', '. $wortart .', '. $genitiv .', '. $genus .', '. $nominativ_m .', '. $nominativ_f .', '. $nominativ_n .', '. $praesens_a .', '. $perfekt_a .', '. $pvp .')';
$db_update_now = mysql_query($db_update);
}
else
{
echo "Bitte gib eine gültige Wortart an";
}
}
?>



beim aufrufen bzw. absenden kommt zwar keine fehlemeldung, aber es wird auch nichts in die db eingetragen wie kann ich den fehler beheben?
Benutzeravatar
StarWolf3000
Mitglied
Beiträge: 1019
Registriert: 25.07.2005 10:20
Wohnort: Stolpen
Kontaktdaten:

Beitrag von StarWolf3000 »

befindet sich in der dbconnect.php das hier:

Code: Alles auswählen

mysql_select_db("deine_datenbank");
?
MOD-Einbauhilfe und Installationen über ICQ, TeamSpeak 2/3 und TeamViewer. Support nur im Forum, eingeschränkt per TeamViewer, aber nicht mehr per PN! • KB:knigge
langeweile
Gesperrt
Beiträge: 234
Registriert: 03.12.2006 14:48
Kontaktdaten:

Beitrag von langeweile »

ja steht es, gibts vllt. irgendwas was ich an den tabellen in der datenbank ganz bestimmt einstellen muss, damit es funktioniert?
Iopodx
Mitglied
Beiträge: 3
Registriert: 05.12.2006 17:13

Beitrag von Iopodx »

$db_update_now = mysql_query($db_update);

Mach daraus mal

$db_update_now = @mysql_query($db_update) OR die(mysql_error());

Dann sollte ein Fehler angezeigt werden...

MfG
Iopodx
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Ich wage zu behaupten dass der Sql Code nicht ganz richtig ist. Text muss mit Anführungszeichen versehen werden, das ist aber bei dir nicht passiert.

Ändere mal die Sql Anweisung in

Code: Alles auswählen

$db_update_now = mysql_query($db_update) OR die("SQL FEHLER:<br>" . mysql_error() . "<br><br>SQL Code:<br>" . $db_update);
dann wird dir angezeigt was du für einen Syntaxfehler gemacht hast.

Außerdem solltest du - falls du auf die Idee kommst das frei ins Web zu stellen das ganze gegen SQL Injection schützen. (-> mysql_real_escape_string())
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
langeweile
Gesperrt
Beiträge: 234
Registriert: 03.12.2006 14:48
Kontaktdaten:

Beitrag von langeweile »

ich habs so geändert, wie gn#36 das vorgeschlagen hat, wenn ich jetzt auf absenden klicke, kommt folgende meldung

Code: Alles auswählen

SQL FEHLER:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' , , , , , dedi, datum)' at line 2

SQL Code:
INSERT INTO `Vokabeln` (`latein`, `deutsch`, `wortart`, `genitiv`, `genus`, `nominativ_m`, `nominativ_f`, `nominativ_n`, `praesens_a`, `perfekt_a, pvp`) VALUES (dare, geben, verb, , , , , , , dedi, datum)


(dare, geben, verb, , , , , , , dedi, datum)
da bedeuten die , , , , , , , nur, dass in diese felder nichts eingetragen wird
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Das ist zwar für uns verständlich, aber für den SQL Server nicht. Wie gesagt benutze mysql_real_escape_string() auf alle Variablen, dann füge bei allen Variablen vorne und hinten ein Hochkomma ein.

Code: Alles auswählen

$var = "'".mysql_real_escape_string($var)."'";
Das hat den Effekt dass du einigermaßen gegen sql Injection geschützt bist und außerdem diesen hässlichen Fehler umgehst indem dann einfach ein leerer String in die DB geschrieben wird.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
langeweile
Gesperrt
Beiträge: 234
Registriert: 03.12.2006 14:48
Kontaktdaten:

Beitrag von langeweile »

es liegt nicht an dem leeren string, wenn ich alle felder ausfülle kommt trotzdem diese fehlermeldung:

Code: Alles auswählen

SQL FEHLER:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' dedi, datum)' at line 2

SQL Code:
INSERT INTO `Vokabeln` (`latein`, `deutsch`, `wortart`, `genitiv`, `genus`, `nominativ_m`, `nominativ_f`, `nominativ_n`, `praesens_a`, `perfekt_a, pvp`) VALUES (dare, geben, verb, a, b, c, d, e, , dedi, datum)
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Mach einfach das was ich geschrieben habe.
Du nimmst die Variablen (z.b. $latein,$deutsch...) und setzt sich in den Code ein den ich gepostet habe (anstelle von $var). Den Code schreibst du dann direkt oberhalb des SQL Befehls in den Code. Wenn du das mit allen Variablen machst sollte der Fehler weg sein.
EDIT: Wenn ich mir das was du gepostet hast ansehe hast du überhaupt nicht alle Felder ausgefüllt. Da ist immer noch ein ", ," drin.
Zuletzt geändert von gn#36 am 05.12.2006 18:19, insgesamt 1-mal geändert.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
langeweile
Gesperrt
Beiträge: 234
Registriert: 03.12.2006 14:48
Kontaktdaten:

Beitrag von langeweile »

sry, ich glaub ich bin zu dumm für php, ich weiß nicht, wie du das meinst
Antworten

Zurück zu „Coding & Technik“