if else geht nicht
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
benutzername
besucher
code
datei
empfehlen
fehler
folgender fehler
gewinner
gewinnspiel
gewonnen code
index
mache
ordner
schau
semikolon
stunt
suche
syntax
tollsten gewinne
zeile
-
HI,
bin PHP Anfänger und bekomme immer einen Fehler, seitdem ich diese If else Befehle eingebaut habe, kann mir einer sagen warum?
Du bist Besucher Nummer <?php echo \"$visits\" ?>
<?php if($visits == \"1\") { echo \"Yeah, Du hast gewonnen\"} else { echo \"Leider nicht gewonnen, versuchs doch einfach später nochmal!\" } ?>
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
So muss das lauten:
<?php if ($visits == \"1\") { echo \"Yeah, du hast gewonnen!\"; } else { echo \"Leider nicht gewonnen!\"; } ?>
Du hast die Semikolon vergessen!
Edit: Ach ja, noch was! Nur die Anweisungen in einem Anweisungsblock werden mit Semikolon abgeschlossen! Nach der Anweisung \'echo\' kommt ein \';\', hingegen nach
if (Bedingung) \'kein semikolon\' !
Beitrag geändert: 25.3.2008 18:32:01 von x-black -
Für sowas gibt es dann auch noch den sog. Trinitätsoperator...
<?php echo ($visits == 1)?\'Yeah, du hast gewonnen!\':\'Leider nicht gewonnen!\'; ?>
-
Für sowas gibt es dann auch noch den sog. Trinitätsoperator...
<?php
echo ($visits == 1)?\'Yeah, du hast gewonnen!\':\'Leider nicht gewonnen!\';
?>
Ja, den kann man auch benutzen!
Aber ich gehe jetzt mal davon aus, dass stunts recht neu in diesem Gebiet ist...
Deshalb denke ich, es ist besser, wenn er erstmal IF-ELSE beherrscht, anstatt gleich den Trinitätsoperator ^^
Beitrag geändert: 25.3.2008 18:55:57 von x-black -
guck dir auch direkt mal elseif an
guck mal in dem Buch \"PHP und MySQL für Kids\"
nicht nur für kinder!
mfg -
So, das haut ja alles soweit gut hin, aber wie mache ich das, wenn ich nicht nur ein echo ausgeben will sondern noch php code da drin haben will?
Jetzt siehts so aus, und es kommt wieder ein Fehler, suche schon den ganzen Nachmittag den Fehler....
if ($visits == \"1\") {
echo \"Yeah, du hast gewonnen!\";
<?php include(\"connect.inc.php\");?>
<? if ($submit == \"Speichern\") {
$sql = \"INSERT INTO gewinner (mail) VALUES(\'$mail\')\";
mysql_query($sql,$db);}?>
<form method=\"post\" action=\"<?echo $PHP_SELF;?>\">
<TABLE width=\"100%\" height=\"0%\" bgcolor=\"white\" align=\"center\">
<TR>
<TD>
<font size=\"1\" face=\"Verdana\"><b>
Mail:
</TD>
<TD>
<input type=\"text\" name=\"mail\" value=\"\" size=\"30\">
</TD>
</TR>
<TR>
<TD>
</TD>
<TD>
<input type=\"submit\" name=\"submit\" value=\"Speichern\">
</TD>
</TR>
</TABLE>
</form>
}
else {
echo \"Leider nicht gewonnen!\";
}
}
?>
-
bitte in code/php tags fassen.
<?php if ($visits == \"1\") { echo \"Yeah, du hast gewonnen!\"; include(\"connect.inc.php\"); if ($_REQUEST[\'SpeichernK\'] == 1) { mysql_connect(\"mysql.lima-city.de\", \"Benutzername\", \"Passwort\"); mysql_slect_db(\"DBNAME\"); $sql = \"INSERT INTO gewinner (mail) VALUES(\'$mail\')\"; mysql_query($sql,$db);}?> <form method=\"post\" action=\"<?echo $PHP_SELF;?>\"> <TABLE width=\"100%\" height=\"0%\" bgcolor=\"white\" align=\"center\"> <TR> <TD> <font size=\"1\" face=\"Verdana\"><b> Mail: </TD> <TD> <input type=\"text\" name=\"mail\" value=\"\" size=\"30\"> <input type=\"checkbox\" name=\"SpeichernK\" value=\"Speichern?\"> </TD> </TR> <TR> <TD> </TD> <TD> <input type=\"submit\" name=\"submit\" value=\"Speichern\"> </TD> </TR> </TABLE> </form> } else { echo \"Leider nicht gewonnen!\"; } } ?> Spam melden
So müsste es eigentlich gehen.
man kann keine submit buttons abfragen, schalte dein Register globals off
submit buttons sind nur für den browser gedacht damit er das formular abschickt.
mfg
(hoffe, der beitrag war hilfreich) -
HI,
es geht leider immernoch nicht:
so sieht jetzt der Code aus:
<code>
Du bist der <?php echo \"$visits\" ?>. Besucher
<br><br>
<?php
if ($visits > \"5\") {
echo \"Leider geht das Gewinnspiel nur bis zum 5. Besucher, <br>aber schau doch bald wieder vorbei, das nächste Gewinnspiel startet bald!\";
}
else {
if ($visits == \"1\") {
echo \"Yeah, du hast gewonnen!\";
include(\"connect.inc.php\");
if ($_REQUEST[\'SpeichernK\'] == 1) {
mysql_connect(\"mysql.lima-city.de\", \"Benutzername\", \"Passwort\");
mysql_slect_db(\"DBNAME\");
$sql = \"INSERT INTO gewinner (mail) VALUES(\'$mail\')\";
mysql_query($sql,$db);}?>
<form method=\"post\" action=\"<?echo $PHP_SELF;?>\">
<TABLE width=\"100%\" height=\"0%\" bgcolor=\"white\" align=\"center\">
<TR>
<TD>
<font size=\"1\" face=\"Verdana\"><b>
Mail:
</TD>
<TD>
<input type=\"text\" name=\"mail\" value=\"\" size=\"30\">
<input type=\"checkbox\" name=\"SpeichernK\" value=\"Speichern?\">
</TD>
</TR>
<TR>
<TD>
</TD>
<TD>
<input type=\"submit\" name=\"submit\" value=\"Speichern\">
</TD>
</TR>
</TABLE>
</form>
}
else {
echo \"Leider nicht gewonnen!\";
}
}
?>
<code>
es kommt folgender fehler:
Parse error: syntax error, unexpected $end in /var/www/web420/html/win-o-mania/index.php on line 120
wie mache ich die Code Tags?
Beitrag geändert: 25.3.2008 20:46:02 von stunts -
Die Code Tags setzt man mit [ code] Hier ist das Script. [ /code] jeweils ohne das Freizeichen.
Gruß
m062
-
Du bist der <?php echo \"$visits\" ?>. Besucher <br><br> <?php if ($visits > \"5\" ;) { echo \"Leider geht das Gewinnspiel nur bis zum 5. Besucher, <br>aber schau doch bald wieder vorbei, das nächste Gewinnspiel startet bald!\"; } else { if ($visits == \"1\" ;) { echo \"Yeah, du hast gewonnen!\"; include(\"connect.inc.php\" ;); if ($_REQUEST[\'SpeichernK\'] == 1) { mysql_connect(\"mysql.lima-city.de\", \"Benutzername\", \"Passwort\" ;); mysql_slect_db(\"DBNAME\" ;); $sql = \"INSERT INTO gewinner (mail) VALUES(\'$mail\')\"; mysql_query($sql,$db);}?> <form method=\"post\" action=\"<?echo $PHP_SELF;?>\"> <TABLE width=\"100%\" height=\"0%\" bgcolor=\"white\" align=\"center\"> <TR> <TD> <font size=\"1\" face=\"Verdana\"><b> Mail: </TD> <TD> <input type=\"text\" name=\"mail\" value=\"\" size=\"30\"> <input type=\"checkbox\" name=\"SpeichernK\" value=\"Speichern?\"> </TD> </TR> <TR> <TD> </TD> <TD> <input type=\"submit\" name=\"submit\" value=\"Speichern\"> </TD> </TR> </TABLE> </form> } else { echo \"Leider nicht gewonnen!\"; } } ?>
Hab mal reingemacht damit man überhaupt was versteht...
*räusper* bei mir geht der Code nur bis 70...
Parse error: syntax error, unexpected $end in /var/www/web420/html/win-o-mania/index.php on line 120
Beitrag geändert: 25.3.2008 22:07:13 von nikic -
bah pfui !
<?php
(...) echo \"$visits\" ; ?>. Besucher /* hier fehlts */
if ($visits > \"5\" ;) { /* hier isset zu viel*/
echo \"Leider geht das Gewinnspiel nur bis zum 5. Besucher, <br>aber schau doch bald wieder vorbei, das nächste Gewinnspiel startet bald!\";
}
else {
if ($visits == \"1\" ;) { /* hier isset zu viel*/
echo \"Yeah, du hast gewonnen!\";
include(\"connect.inc.php\" ;); /* hier isset zu viel*/
if ($_REQUEST[\'SpeichernK\'] == 1) {
mysql_connect(\"mysql.lima-city.de\", \"Benutzername\", \"Passwort\" ;); /* hier isset zu viel*/
mysql_slect_db(\"DBNAME\" ;); /* hier isset zu viel*/
$sql = \"INSERT INTO gewinner (mail) VALUES(\'$mail\')\";
mysql_query($sql,$db);}?>
<form method=\"post\" action=\"<?echo $PHP_SELF;?>\">
<TABLE width=\"100%\" height=\"0%\" bgcolor=\"white\" align=\"center\">
<TR>
<TD>
<font size=\"1\" face=\"Verdana\"><b>
Mail:
</TD>
<TD>
<input type=\"text\" name=\"mail\" value=\"\" size=\"30\">
<input type=\"checkbox\" name=\"SpeichernK\" value=\"Speichern?\">
(...)
</form>
}
else {
echo \"Leider nicht gewonnen!\";
}
}
?>
fürs erste. werd dir den quelltext mal überarbeiten
mh mist eigentlich sollten die ; jeweils vor der klammer markiert sein, die sind nämlich zu viel
Du bist der <?php echo \"$visits\"; ?>. Besucher <br><br> <?php if ($visits > \"5\" ) { echo \"Leider geht (...)!\"; } else { if ($visits == \"1\" ;) { echo \"Yeah, du hast gewonnen!\"; include(\"connect.inc.php\" ); if ($_REQUEST[\'SpeichernK\'] == 1) { mysql_connect(\"mysql.lima-city.de\", \"Benutzername\", \"Passwort\"); mysql_slect_db(\"DBNAME\"); $sql = \"INSERT INTO gewinner (mail) VALUES(\'$mail\')\"; mysql_query($sql,$db); } ?> <form method=\"post\" action=\"<?echo $PHP_SELF;?>\"> <TABLE width=\"100%\" height=\"0%\" bgcolor=\"white\" align=\"center\"> <TR> <TD> <font size=\"1\" face=\"Verdana\"><b> Mail: </b></font> </TD> <TD> <input type=\"text\" name=\"mail\" value=\"\" size=\"30\"> <input type=\"checkbox\" name=\"SpeichernK\" value=\"Speichern?\"> </TD> </TR> <TR> <TD> </TD> <TD> <input type=\"submit\" name=\"submit\" value=\"Speichern\"> </TD> </TR> </TABLE> </form> <?php } else { echo \"Leider nicht gewonnen!\"; } } ?>
Beitrag geändert: 26.3.2008 0:56:26 von h-brand -
du musst auch noch die definition für $visits hinschreiben
<?php setcookie(\"visit\", \"yes\", time() + 86400); ?> Du bist der <?php echo \"$visits\"; ?>. Besucher <br><br> <?php $visits = file_get_contents(\"visits.txt\"); if (isset($_COOKIE[\'visit\']) { Du hast schon am Gewinnspiel teilgenommen! } else { $visits++; file_put_contents(\"visits.txt\", $visits); if ($visits > \"5\" ) { echo \"Leider geht (...)!\"; } else { if ($visits == \"1\" ;) { echo \"Yeah, du hast gewonnen!\"; include(\"connect.inc.php\" ); if ($_REQUEST[\'SpeichernK\'] == 1) { mysql_connect(\"mysql.lima-city.de\", \"Benutzername\", \"Passwort\"); mysql_select_db(\"DBNAME\"); $sql = \"INSERT INTO gewinner (mail) VALUES(\'$mail\')\"; mysql_query($sql,$db); } ?> <form method=\"post\" action=\"<?echo $PHP_SELF;?>\"> <TABLE width=\"100%\" height=\"0%\" bgcolor=\"white\" align=\"center\"> <TR> <TD> <font size=\"1\" face=\"Verdana\"><b> Mail: </b></font> </TD> <TD> <input type=\"text\" name=\"mail\" value=\"\" size=\"30\"> <input type=\"checkbox\" name=\"SpeichernK\" value=\"Speichern?\"> </TD> </TR> <TR> <TD> </TD> <TD> <input type=\"submit\" name=\"submit\" value=\"Speichern\"> </TD> </TR> </TABLE> </form> <?php } else { echo \"Leider nicht gewonnen!\"; } } } ?>
niemand kann an einem tag mehrmals teilnehmen(außer cookies deaktiviert) und der aktuelle visit stand wird in einer datei notiert.
mfg -
HI,
erstmal vielen Dank für die ganzen Antworten, aber es will immernoch nicht
so sieht jetzt meine Seite aus:
<?php setcookie(\"visit\", \"yes\", time() + 86400); ?> Du bist der <?php echo \"$visits\"; ?>. Besucher <br><br> <?php $visits = file_get_contents(\"visits.txt\"); if (isset($_COOKIE[\'visit\']) { Du hast schon am Gewinnspiel teilgenommen! } else { $visits++; file_put_contents(\"visits.txt\", $visits); if ($visits > \"5\" ) { echo \"Leider geht!\"; } else { if ($visits == \"1\" ;) { echo \"Yeah, du hast gewonnen!\"; if ($_REQUEST[\'SpeichernK\'] == 1) { mysql_connect(\"localhost\", \"User\", \"Passwort\"); mysql_select_db(\"DB-Name\"); $sql = \"INSERT INTO gewinner (mail) VALUES(\'$mail\')\"; mysql_query($sql,$db); } ?> <form method=\"post\" action=\"<?echo $PHP_SELF;?>\"> <TABLE width=\"100%\" height=\"0%\" bgcolor=\"white\" align=\"center\"> <TR> <TD> <font size=\"1\" face=\"Verdana\"><b> Mail: </b></font> </TD> <TD> <input type=\"text\" name=\"mail\" value=\"\" size=\"30\"> <input type=\"checkbox\" name=\"SpeichernK\" value=\"Speichern?\"> </TD> </TR> <TR> <TD> </TD> <TD> <input type=\"submit\" name=\"submit\" value=\"Speichern\"> </TD> </TR> </TABLE> </form> <?php } else { echo \"Leider nicht gewonnen!\"; } } } ?>
die MYSql Zugangsdaten habe ich jetzt rausgenommen. Das hier oben ist jetzt meine komplette Seite und es kommt folgender Fehler:
Parse error: syntax error, unexpected \'{\' in /var/www/web420/html/win-o-mania/index2.php on line 10
Inzwischen verstehe ich garnicht mehr -
oh, noch garnicht beantwortet... also:
es fehlt ein echo ganz oben in der Zeile..
2 ich geb dir den Tipp alles nach einem { mit Tabs einzurücken. Ich hab leider keine Zeit zu schauen aber es könnte sein, dass eine } fehlt nach dem else.. -
HI,
also das echo habe ich schon eingefügt...
Aber es kommt trotzdem noch der gleiche Fehler.... -
ja wuerd dir auch empfehlen erst mal deinen quelltext zu formatieren ist echt hilfreich, vorallem bei der fehler suche. da gibt es so nen PEAR standard... musst einfach mal im web suchen.
auf jeden fall kann ich dir einruecken empfehlen und lieber mal ne neue zeile anfangen und nicht so viel in eine quetschen. -
Aus Orginal aus zeile neun
if (isset($_COOKIE[\'visit\'])
richtig:
if (isset($_COOKIE[\'visit\']))
Achte mal bitte wie du Klammern schliesst und die Semikolonsetztung, am besten nimmst du dir irgend ein Programm mit Syntaxhighliting und Klammerhilfe -
So, jetzt hab ich die größten Fehler glaubich raus. Es kommt nur wenn jemand die seite auf ruft folgender Text:
Warning: Cannot modify header information - headers already sent by (output started at /var/www/web420/html/win-o-mania/index2.php:14) in /var/www/web420/html/win-o-mania/index2.php on line 25
Du bist der 2. Besucher
Du hast schon am Gewinnspiel teilgenommen!
Zudem Zählt er auch die Besucher nicht weiter....
Der Quelltext sieht jetzt so aus:
<head> <title>Win-o-Mania -> Kostenlos und Blitzschnell die tollsten Gewinne abstauben <-</title> </head> <body bgcolor=\"#ffd553\"> <div align=\"center\"> <table width = 800 border=\"10\" bordercolor=\"#8a0e1f\" cellspacing=\"0\" cellpadding=\"0\"> <tr border=\"0\"> <td height=\"100\" bgcolor= \"#8a0e1f\" border=\"0\" align=center> <b><font color=\"white\" size=\"7\" face=arial>WIN-O-MANIA</font></b> </td> </tr> <tr border=\"0\"> <td height=\"20\" bgcolor=\"#8a0e1f\" border=\"10\" bordercolor=\"ffe36f\" > <b><font color=\"white\" size=\"3 face=Arial\">Kostenlos und Blitzschnell die tollsten Gewinne abstauben</font></b> </td> </tr> <tr> <td height=\"500\" bgcolor= \"ffe36f\" border=\"0\" align=center> <b><font color=\"black\" size=\"3\" face=arial> <?php setcookie(\"visit\", \"yes\", time() + 86400); ?> Du bist der <?php $visits = file_get_contents(\"visits.txt\"); echo \"$visits\"; ?>. Besucher <br><br> <?php if (isset($_COOKIE[\'visit\']) ) { echo \"Du hast schon am Gewinnspiel teilgenommen!\"; } else { $visits++; file_put_contents(\"visits.txt\", $visits); if ($visits > \"5\" ) { echo \"Leider geht!\"; } else { if ($visits == \"1\" ) { echo \"Yeah, du hast gewonnen!\"; if ($_REQUEST[\'SpeichernK\'] == 1) { mysql_connect(\"localhost\", \"xxxxxxx\", \"xxxxxx\"); mysql_select_db(\"xxxxxxx\"); $sql = \"INSERT INTO gewinner (mail) VALUES(\'$mail\')\"; mysql_query($sql,$db); } ?> <form method=\"post\" action=\"<?echo $PHP_SELF;?>\"> <TABLE width=\"100%\" height=\"0%\" bgcolor=\"white\" align=\"center\"> <TR> <TD> <font size=\"1\" face=\"Verdana\"><b> Mail: </b></font> </TD> <TD> <input type=\"text\" name=\"mail\" value=\"\" size=\"30\"> <input type=\"checkbox\" name=\"SpeichernK\" value=\"Speichern?\"> </TD> </TR> <TR> <TD> </TD> <TD> <input type=\"submit\" name=\"submit\" value=\"Speichern\"> </TD> </TR> </TABLE> </form> <?php } else { echo \"Leider nicht gewonnen!\"; } } } ?> </font></b> </td> </tr> <tr> <td height=\"20\" border=\"0\"> Powered by www.wow-glider.de </td> </tr> </table> </body> </html>
Vielleicht sollte ich noch erwähnen, das ich die \"2\" die angezeigt wird selbst in die visits.txt geschrieben hab. Die visits.txt hat den CHMOD 777 und liegt im gleichen Ordner
Beitrag geändert: 26.3.2008 20:05:25 von stunts
Beitrag geändert: 26.3.2008 20:08:54 von stunts -
set cookie genauso wie später SESSION START ganz an den anfang machen.
Dann ist denke ich auch der Fehler weg. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage