komische fehlrmeldung
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abhilfe
beitrag
daten
deswegen
dummerweise
erfolgreich echo
error
event
falsches passwort
fehler
fehlermeldung
gen
insert
login
moment
monat
pawort
skript
test
zeile
-
Parse error: parse error, unexpected $ on line 41
Diese Fehlermeldung kommt bei mir immer bei einer php datei. was daran halt komisch ist, ist dass zeile 41 die letzt zeile meines skripts ist und sich deswegen dort nur ein ?> befindet.
In den Zeilen davor befindet sich auch kein $...
wei? einer woran das liegt und wie ichs ?ndern kann??
thx
Beitrag ge?ndert am 24.02.2006 13:40 von raphael10a -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Am besten w?re es, wenn du uns mal den Quellcode postest, damit k?nnen wir mehr anfangen, als mit einer Fehlermeldung.
-
das ist normalerweise ein vergessenes ; guck mal in die zeile zuvor ans ende
-
<?php
echo '<html><head><title>Editierbereich f?r die Events</title><link rel="stylesheet" href="style.css" type="text/css"></head><body><div align="center">';
if ($todo == write)
{
echo "Datum: ".$_POST['tag'].". ".$_POST['monat'].".<br>Art: ".$_POST['what']."<br>Fach: ".$_POST['fach']."";
include "config.php";
mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die("Verbindung konnte nicht aufgebaut werden<br>");
mysql_select_db(MYSQL_DATABASE) OR die("Die Datenbank ".MYSQL_DATABASE." ist im Moment leider nicht verf?gbar!");
$tag = $_POST['tag'];
$monat = $_POST['monat'];
$fach = $_POST['fach'];
if ($_POST['what'] == "Arbeit") {
mysql_query('INSERT INTO Arbeiten (Tag,Monat,Fach) VALUES ($tag, $monat, $fach)');
}
if ($_POST['what'] == "Test") {
mysql_query('INSERT INTO Tests (Tag,Monat,Fach) VALUES ($tag, $monat, $fach)');
}
}
else {
if ($todo == add)
{
echo "Was m?chten Sie hinzuf?gen?<br><br>";
echo '<form name="what_to_add" action="eventedit.php?todo=write" method="post">Arbeit<input type="radio" name="what" CHECKED value="Arbeit"> <input type="radio" name="what" value="Test">Test';
echo '<br>wann? <input type="text" name="tag" length="3" maxlength="2">';
echo '<input type="text" name="monat" length="3" maxlength="2">';
echo '<br>Fach: <input type="text" name="fach" length="20" maxlength="20">';
echo '<input type="submit">';
echo "</form>";
}
else {
$richtig = ($_POST['passwort'] == '........');
if (!$richtig)
{die("Falsches Passwort verwendet!</div></body></html>");}
echo "Login erfolgreich!";
echo "<br><br>";
echo '<a href="eventedit.php?todo=add"><u>Neues Event hinzuf?gen</u></a>';
echo "</div></body></html>";
}
?>
F?r den Sinn dieses Skripts: Es ist f?r eine Klassenhomepage, und da soll man eben die M?glichkeit haben, Klassenarbeitstermine einzutragen...
Falls ihr sonst noch irgendwelche Fehler entdeckt oder so, dann sagt das bitte auch, ich kann PHP noch net so lang und kann deswegen noch ne menge lernen... -
Du machst mehr geschweifte Klammern auf als du wieder zu machst. ?berpr?fe nochmal alle Bl?cke! Tipp: Ein Editor mit Syntaxhighlighting sowie die Einr?ckung von untergeordneten Codezeilen erleichtern das erheblich!
MfG,
thw -
So ich habe 2 Fehler behoben, zum einen hast du die todo get Abfrage vergessen und zum anderen fehlte die else Endklammer.
Hier der korrekte Quellcode:
<?php
echo '<html><head><title>Editierbereich f?r die Events</title><link rel="stylesheet" href="style.css" type="text/css"></head><body><div align="center">';
$todo = $_GET['todo'];
if ($todo == write)
{
echo "Datum: ".$_POST['tag'].". ".$_POST['monat'].".<br>Art: ".$_POST['what']."<br>Fach: ".$_POST['fach']."";
include "config.php";
mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die("Verbindung konnte nicht aufgebaut werden<br>");
mysql_select_db(MYSQL_DATABASE) OR die("Die Datenbank ".MYSQL_DATABASE." ist im Moment leider nicht verf?gbar!");
$tag = $_POST['tag'];
$monat = $_POST['monat'];
$fach = $_POST['fach'];
if ($_POST['what'] == "Arbeit") {
mysql_query('INSERT INTO Arbeiten (Tag,Monat,Fach) VALUES ($tag, $monat, $fach)');
}
if ($_POST['what'] == "Test") {
mysql_query('INSERT INTO Tests (Tag,Monat,Fach) VALUES ($tag, $monat, $fach)');
}
}
else
{
if ($todo == add)
{
echo "Was m?chten Sie hinzuf?gen?<br><br>";
echo '<form name="what_to_add" action="eventedit.php?todo=write" method="post">Arbeit<input type="radio" name="what" CHECKED value="Arbeit"> <input type="radio" name="what" value="Test">Test';
echo '<br>wann? <input type="text" name="tag" length="3" maxlength="2">';
echo '<input type="text" name="monat" length="3" maxlength="2">';
echo '<br>Fach: <input type="text" name="fach" length="20" maxlength="20">';
echo '<input type="submit">';
echo "</form>";
}
else {
$richtig = ($_POST['passwort'] == '........');
if (!$richtig) {
die("Falsches Passwort verwendet!</div></body></html>");
}
echo "Login erfolgreich!";
echo "<br><br>";
echo '<a href="eventedit.php?todo=add"><u>Neues Event hinzuf?gen</u></a>';
echo "</div></body></html>";
}
}
?> -
vielen Dank erstmal, jetzt funktionierts wieder...
Jetzt hat sich dummerweise ein weiteres Problem aufgetan:
Und zwar soll des Skript dann ja die Daten in dir Datenbank schreiben, aber als ich dann in PHPMyAdmin geschaut hab, stand das immer noch 0 Zeilen...
a) Was hab ich falsch gemacht? Warum funkitioniert das nicht?
b) Kann man das direkt nach dem schreiben irgendwie ?berpr?fen, ob die Daten richtig in die Datenbank geschrieben wurden...? -
raphael10a schrieb:
a) Was hab ich falsch gemacht? Warum funkitioniert das nicht?
M?gliche Ursache daf?r w?re, dass das Dollarzeichen zu den Sonderzeichen geh?rt und somit einen Fehler ausl?st. Um dem Abhilfe zu schaffen, schreibe den Query wie folgt:
mysql_query('INSERT INTO Arbeiten (Tag,Monat,Fach) VALUES ('. $tag .', '. $monat .', '. $fach .')');
b) Kann man das direkt nach dem schreiben irgendwie ?berpr?fen, ob die Daten richtig in die Datenbank geschrieben wurden...?
Jep, mysql_query() gibt im Erfolgsfall true, ansonsten false zur?ck. Daraus l?sst sich folgende ?berpr?fungsmethode basteln:
$abfrage = mysql_query('Blablubb'); if($abfrage == false) { print('Fehler: Der Query konnte nicht ausgef?hrt werden, Mysql meldet: '. mysql_error() .'<br />'); } else { print('Erfolgreich in Datenbank geschrieben! *freu*'); }
-
stimmt, strings m?ssen auch als soche in die sql abfrage ?bergeben werden. also sowas immer in anf?hrungszeichen schreiben....
-
also ich hab den code jetzt angepasst aber einmal hat der query false und einmal true zur?ckgegeben...
aber auch nach dem true war nix in der datenbank gespeichert... -
Versuche es mal damit:
<html>
<head>
<title>Editierbereich f?r die Events</title>
<body>
<div align="center">
<?php
$todo = $_GET['todo'];
if (!$_POST['passwort'] == '........')
{
die("Falsches Passwort verwendet!</div></body></html>");
}
else
{
if(!isset($HTTP_POST_VARS['ABGESENDET']))
{
echo "Was m?chten Sie hinzuf?gen?<br><br>";
echo '<form name="what_to_add" action="eventedit.php" method="post">Arbeit<input type="radio" name="what" CHECKED value="Arbeit"> <input type="radio" name="what" value="Test">Test';
echo '<br>wann? <input type="text" name="tag" length="3" maxlength="2">';
echo '<input type="text" name="monat" length="3" maxlength="2">';
echo '<br>Fach: <input type="text" name="fach" length="20" maxlength="20">';
echo '<input type="submit" name="ABGESENDET">';
echo "</form>";
}
else
{
echo "Datum: ".$_POST['tag'].". ".$_POST['monat'].".<br>Art: ".$_POST['what']."<br>Fach: ".$_POST['fach']."";
include "config.php";
mysql_connect('$mysql_host','$mysql_user','$mysql_pass') OR die("Verbindung konnte nicht aufgebaut werden<br>");
mysql_select_db('$mysql_db') OR die("Die Datenbank ".$mysql_db." ist im Moment leider nicht verf?gbar!");
$tag = $_POST['tag'];
$monat = $_POST['monat'];
$fach = $_POST['fach'];
if ($_POST['what'] == "Arbeit") {
mysql_query("INSERT INTO Arbeiten (Tag,Monat,Fach) VALUES ('$tag', '$monat', '$fach')");
}
if ($_POST['what'] == "Test") {
mysql_query("INSERT INTO Tests (Tag,Monat,Fach) VALUES ('$tag', '$monat', '$fach')");
}
}
?>
</div>
</body>
</html>
?brigens kann man die Abfrage des Passwortes ganz einfach ?bergehen, indem man mit der GET-Variable aufruft
Beitrag ge?ndert am 26.02.2006 09:41 von kai008 -
habs mit deinem probiert, aber da kommt dann leider wieder die fehlermeldung unexpected $ on line 44...
dass man die passwortabfrage ziemlich leicht ?bergehen kann, ist mir auch bewusst, allerdings ist das bei diesem Einsatzweck, zu dem ich das brauche, nicht sooo wichtig, und au?erdem muss man dazu erstmal die werte der Variablen kennen. Nat?rlich kann man raten, aber wenn ich da dann irgendwelche schwachsinnigen variablenwerte (z.B. unfg93h389l3zfn), dann ist es nich mehr ganz so leicht, weil man das dann ja erst mal wissen muss, dass das dann unfg93h389l3zfn is... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage