Seite 1 von 2

woher kommt diese fehlermeldung?

Verfasst: 03.12.2006 21:12
von langeweile
ich habe einen code geschrieben, um lateinvokabeln abzufragen.
dieser klappt jetzt auch, jetzt habe ich einen admin bereich erstellt (wird nachher noch passwortgeschützt. hiermit kann man lateinvokabeln hinzufügen, hier erstmal der code:

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 or adjektiv or pronomen or verb or adverb or praeposition or konjunktion or 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";
}
}
?>


aber wenn ich die seite aufrufe kommt folgende fehlermeldung:

Code: Alles auswählen

Parse error: parse error, unexpected T_VARIABLE in /var/www/web12/html/latein/admin.php on line 37



dies liegt also eindeutig an diesem codeteil:

Code: Alles auswählen

$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");

aber wo ist denn da der fehler? ich habe doch alle variblen voher definiert, oder?


vielen dank im vorraus
langeweile

Verfasst: 03.12.2006 21:25
von Dr.Death
Du hast vergessen die " Zeichen zu maskieren.... oder benutze einfache Hochkommatas.

Entweder:

Code: Alles auswählen

[...]
VALUES ('$latein', '$deutsch', '$wortart', '$genitiv', [...]
Oder:

Code: Alles auswählen

[...]
VALUES (\"$latein\", \"$deutsch\", \"$wortart\", \"$genitiv\", [...]

Verfasst: 03.12.2006 21:39
von Jojoponn139
Thema geklärt... ich hab ihm per ICQ geholfen...

Verfasst: 03.12.2006 21:41
von Jojoponn139
Dr.Death hat geschrieben:Du hast vergessen die " Zeichen zu maskieren.... oder benutze einfache Hochkommatas.

Entweder:

Code: Alles auswählen

[...]
VALUES ('$latein', '$deutsch', '$wortart', '$genitiv', [...]
Oder:

Code: Alles auswählen

[...]
VALUES ("$latein", "$deutsch", "$wortart", "$genitiv", [...]
FALSCH!!! ----Der Fehler liegt überhaupt nicht an der MySQL-Abfrage, sondern in der IF-Abfrage darüber!!!

PS: Syntaktisch ABSOLUT korrekter SQL-Code würde so aussehen:

Code: Alles auswählen

$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");
NIX HOCHKOMMA!!! -Eine Maskierung der Anführungszeichen würde nur bewirken, dass in die Datenbank nicht die tatsächlichen Inhalte der Variablen geschrieben würden, sondern die Namen der Variablen...

Im übrigen darf man sich nicht immer auf die Fehlerangaben des Server verlassen: Jedes PHP-Kind sollte wissen, dass eine IF-Abfrage mit mehreren Bedingungen nicht so aussehen darf:

Code: Alles auswählen

if($var1 == $var2 or $var3)
sondern so aussehen muss:

Code: Alles auswählen

if($var1 == $var2 or $var1 == $var3)

Verfasst: 04.12.2006 06:40
von langeweile
vielen dank, jetzt gehts, ich entwickle den code mal weiter und wenn wieder ein problem auftaucht, frage ich nochmal :wink:

Verfasst: 04.12.2006 13:10
von fanrpg
FALSCH!!! ----Der Fehler liegt überhaupt nicht an der MySQL-Abfrage, sondern in der IF-Abfrage darüber!!!
Und du bist sicher das du PHP kannst? :lol:

Er beginnt die Abfrage mit " am Anfang als String, also muss auch jedes ihm String vorkommende " maskiert werden ( \" )
Würde mich wundern wenn der Parser da so akzeptieren würde :roll:

Verfasst: 04.12.2006 13:22
von Dr.Death
Ich wollte es nicht erneut erwähnen....

Verfasst: 04.12.2006 15:07
von Jojoponn139
ROFL!! --JA ich bin sicher! -Diese Syntax ist korrekt und jemand, der das bezweifelt hat schlicht und einfach keine Ahnung.

PS: Mit dieser Syntax arbeite ich seit den gesamten 4Jahren meiner PHP_Erfahrung.... -.... Und olle "langeweile" sagt auch, dass es geht :::: und ich habe auch bereits komplette Datenbankbasierte Besucherstatistikscripte gemacht, die mit dieser Syntax arbeiten.

Außerdem arbeitet das komplette Ajax und MySQL-Basierte Newssystem als MOD für phpBB2 von GFX-United (uns) auf diese Art u. Weise.

Also kommen wir wieder zu meinem Motto:
"Wenn man keine Ahnung hat; einfach mal Fresse halten"

PS: Ich habe diese Syntax aus einer Schulung in MySQL mit PHP!

Falls ihr noch was zu dem Thema zu sagen habt, erzählt das "langeweile"; denn er ist "der lebende Beweis", dass es geht!

ACH UND:
fanrpg hat geschrieben:
FALSCH!!! ----Der Fehler liegt überhaupt nicht an der MySQL-Abfrage, sondern in der IF-Abfrage darüber!!!
Und du bist sicher das du PHP kannst? :lol:

Er beginnt die Abfrage mit " am Anfang als String, also muss auch jedes ihm String vorkommende " maskiert werden ( " )
Würde mich wundern wenn der Parser da so akzeptieren würde :roll:
-- Die doppelten Anführungsstriche Bedeuten für PHP, dass es dort den Inhalt der Variablen einfügen soll ;;; man hätte sie warscheinlich auch weglassen können aber es geht auch so! -Denn wenn die Variablen ersetzt sind, sieht der MYSQL-Parser die Striche garnicht mehr, sondern den Variableninhalt! ---Mit einer Maskierung oder einfachen Anführunsstrichen würde ich dann in der Datenbank nicht den WERT der Variable stehen haben, sondern schlicht den NAMEN der Variable! ...

IM ÜBRIGEN beweist die Frage, ob ich überhaupt PHP kann deine Dummheit! .... Denn dieser Abschnitt der Abfrage ist reines MySQL und hat bis auf das Variablenersetzen nichts mit PHP zu tun! ...--- aber du denkst sicherlich, dass die If-Abfragen darüber korrekt sind....

Den Rest denke ich mir lieber nur --> Währe zu persönlich...

Verfasst: 04.12.2006 15:16
von langeweile
ich muss dir zustimmen, es geht

Verfasst: 04.12.2006 15:17
von Jojoponn139
DANKE! --->>> Tja also wer kann hier gleich KEIN PHP???
Würde mich wundern wenn der Parser da so akzeptieren würde
TJA fanrpg oder wie du heißt ::: dann wundere dich mal!