Seite 2 von 2

Verfasst: 05.12.2006 18:22
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']) . "'"; 

Verfasst: 05.12.2006 18:39
von langeweile
danke jetzt hab ichs verstanden

Verfasst: 05.12.2006 18:47
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";
}
}
?>

Verfasst: 05.12.2006 18:50
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.

Verfasst: 05.12.2006 18:51
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')";

Verfasst: 05.12.2006 18:53
von gn#36
Das wäre doppelt gemoppelt. Die Anführungsstriche werden bereits in die Variablen mit eingebaut.

Verfasst: 05.12.2006 18:56
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

Verfasst: 05.12.2006 19:37
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'].

Verfasst: 05.12.2006 19:43
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?

Verfasst: 06.12.2006 09:51
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.