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.
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Deutlicher geht es nicht fürchte ich. Aber der Geschwindigkeit deiner Antwort nach zu urteilen hast du es nicht einmal versucht.

Noch ein Beispiel aus deinem Code gegriffen (vllt. wird es dann deutlicher):

Code: Alles auswählen

$latein = $_POST['latein']; 
>>>

Code: Alles auswählen

$latein = "'".mysql_real_escape_string($_POST['latein']) . "'"; 
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 »

danke jetzt hab ichs verstanden
langeweile
Gesperrt
Beiträge: 234
Registriert: 03.12.2006 14:48
Kontaktdaten:

Beitrag von langeweile »

aber es geht trotzdem nicht, es kommt jetzt auch kein error mehr, aber es wird nichts in die db eingetragen, der code sieht jetzt so aus:

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 = "'".mysql_real_escape_string($_POST['latein']) . "'"; 
$deutsch = "'".mysql_real_escape_string($_POST['deutsch']) . "'"; 
$wortart = "'".mysql_real_escape_string($_POST['wortart']) . "'"; 
$genitiv = "'".mysql_real_escape_string($_POST['genitiv']) . "'"; 
$genus = "'".mysql_real_escape_string($_POST['genus']) . "'"; 
$nominativ_m = "'".mysql_real_escape_string($_POST['nominativ_m']) . "'"; 
$nominativ_f = "'".mysql_real_escape_string($_POST['nominativ_f']) . "'"; 
$nominativ_n = "'".mysql_real_escape_string($_POST['nominativ_n']) . "'"; 
$praesens_a = "'".mysql_real_escape_string($_POST['praesens_a']) . "'"; 
$perfekt_a = "'".mysql_real_escape_string($_POST['perfekt_a']) . "'"; 
$pvp = "'".mysql_real_escape_string($_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) OR die("SQL FEHLER:<br>" . mysql_error() . "<br><br>SQL Code:<br>" . $db_update);
}
else
{
echo "Bitte gib eine gültige Wortart an";
}
}
?>
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Lass dir mal den SQL Befehl einfach so ausgeben (echo $db_update;) und führe ihn direkt in der DB aus / stelle ihn hier rein.

Ach so das hatte ich ganz vergessen. Dadurch dass du jetzt immer Anführungszeichen in deinen Variablen hast werden die IF Abfragen so nicht funktionieren. Du musst nicht mehr prüfen ob nichts drin steht, sondern ob sie gleich '' sind.
Zuletzt geändert von gn#36 am 05.12.2006 18:52, 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.
Benutzeravatar
StarWolf3000
Mitglied
Beiträge: 1019
Registriert: 25.07.2005 10:20
Wohnort: Stolpen
Kontaktdaten:

Beitrag von StarWolf3000 »

ich würds vllt mal so versuchen:

Code: Alles auswählen

"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')";
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
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 wäre doppelt gemoppelt. Die Anführungsstriche werden bereits in die Variablen mit eingebaut.
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 »

hab das jetzt so gemacht:

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 = "'".mysql_real_escape_string($_POST['latein']) . "'"; 
$deutsch = "'".mysql_real_escape_string($_POST['deutsch']) . "'"; 
$wortart = "'".mysql_real_escape_string($_POST['wortart']) . "'"; 
$genitiv = "'".mysql_real_escape_string($_POST['genitiv']) . "'"; 
$genus = "'".mysql_real_escape_string($_POST['genus']) . "'"; 
$nominativ_m = "'".mysql_real_escape_string($_POST['nominativ_m']) . "'"; 
$nominativ_f = "'".mysql_real_escape_string($_POST['nominativ_f']) . "'"; 
$nominativ_n = "'".mysql_real_escape_string($_POST['nominativ_n']) . "'"; 
$praesens_a = "'".mysql_real_escape_string($_POST['praesens_a']) . "'"; 
$perfekt_a = "'".mysql_real_escape_string($_POST['perfekt_a']) . "'"; 
$pvp = "'".mysql_real_escape_string($_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) OR die("SQL FEHLER:<br>" . mysql_error() . "<br><br>SQL Code:<br>" . $db_update);
echo $db_update;
}
else
{
echo "Bitte gib eine gültige Wortart an";
}
}
?>


aber irgendwie wird kein echo ausgegeben
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Wird evtl. der Fehler ausgegeben "Bitte gib eine gültige Wortart an" ?
Die Wortart passt nämlich leider so auch nicht mehr. Da sind jetzt Anführungszeichen vorne und hinten dran!

ein Vergleich 'nomen' == nomen schlägt dann natürlich fehl.

Ersetz mal die Zeile

Code: Alles auswählen

if ($wortart == "nomen" || $wortart == "adjektiv" || $wortart == "pronomen" || $wortart == "verb" || $wortart == "adverb" || $wortart == "praeposition" || $wortart == "konjunktion" || $wortart == "zahlwort"){
durch das hier:

Code: Alles auswählen

if (in_array(str_replace("'",'',$wortart),array("nomen", "adjektiv", "pronomen", "verb", "adverb", "praeposition", "konjunktion", "zahlwort"))){
Dann werden die Anführungszeichen vor dem Vergleich wieder entfernt.

Ach ja, die Ersetzung des SQL Codes solltest du besser rückgängig machen, das wird unter Garantie wieder Fehler verursachen.
EDIT: Hast du überhaupt Änderungen gemacht?? Das sah irgendwie auf den ersten Blick so aus... Wenn nicht ist alles ok.

EDIT: Und die Abfragen ob die Felder gefüllt waren werden so auch nicht funktionieren! Da kannst du besser die "Originale" Prüfen, also $_POST['xxx'].
Zuletzt geändert von gn#36 am 05.12.2006 19:45, 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 »

ja das mit der wortart kommt


und danke wenn ihr mir alle helfen wollt, aber jetzt bin ich total verwirrt, ihr meint es ja gut und ich bin euch dankbar, aber erst soll ichs so ändern, dann dies dann das dann hier dann dort, jetzt weiß ich gar ncihts mehr, kann vllt. irgendwer mal den code so wie er nach seiner meinung richtig ist komplett posten?
Benutzeravatar
StarWolf3000
Mitglied
Beiträge: 1019
Registriert: 25.07.2005 10:20
Wohnort: Stolpen
Kontaktdaten:

Beitrag von StarWolf3000 »

um den Post kurz zu halten, verlinke ich den Code:
latein.txt

Ein Fehler lag im SQL-Query:

Code: Alles auswählen

`perfekt_a, pvp` ist nicht korrekt
stattdessen: perfekt_a, pvp
Allerdings sollte man, wenn es nicht unbedingt erforderlich ist, die Backticks ` vermeiden.
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
Antworten

Zurück zu „Coding & Technik“