Fehler im Code, den ich nicht ausmachen kann

Zimtgruen

Erfahrenes Mitglied
hab hier folgenden code:

PHP:
<?php

	include("db.php");
	include("functions.inc.php");
	if(isset($_REQUEST["submit"])) { // Wenn Formular abgeschickt
		if(exist("test WHERE name = '".strip_tags($_REQUEST["name"])."' AND h-bssalat = 0") || ('".strip_tags($_REQUEST["loesung"])."' == 'loesung')) { // Wenn Mitglied mit dem Namen existiert, Rätsel noch nicht gelöst und Lösungswort richtig
			$eintragen = mysql_query("UPDATE test SET h-bssalat = 1, punkte = punkte+10 WHERE name = '".strip_tags($_REQUEST["name"])."');} // Eintrag in User
			if($eintragen == true)
   			{
   				echo "Herzlichen Glueckwunsch! Dir wurden 10 Punkte gutgeschrieben.";
  			 }
				else
   			{
   				echo mysql_error() . "\n";
  			 }
			
			

		else if (exist("test WHERE name = '".strip_tags($_REQUEST["name"])."' AND h-bssalat = 1")) 
			{ echo "Du hast dieses Rätsel bereits gelöst!"; }
		else if ('".strip_tags($_REQUEST["loesung"])."' != 'loesung')
			{ echo "Dein Wort ist falsch!"; }
			?>

			<?php
		}
	} else { // Formular ->
		?>
		<form action=h-bssalat.php method=post>
			<table width=90%>
				<tr>
					<td width=50%>
						<b>Name:</b>
					</td>
					<td width=50%>
						<input type="text" name="name">
					</td>
				</tr>
				<tr>
					<td width=50%>
						<b>Lösung:</b>
					</td>
					<td width=50%>
						<input type="text" name="loesung">
					</td>
				</tr>
				<tr>
					<td width=100% colspan=2>
						<input type="submit" value="Abschicken" name="submit">
					</td>
				</tr>
			</table>
		</form>
		<?php
	}

?>

und dann wird mir folgender fehler angezeigt:

Code:
Parse error: parse error, unexpected T_STRING in /var/www/web87/html/MV/h-bssalat.php on line 23

Zeile 23 ist diese hier:

PHP:
   				echo "Herzlichen Glueckwunsch! Dir wurden 10 Punkte gutgeschrieben.";

Kann mir da jemand helfen?
 
In dieser Zeile fehlt ein Anführungszeichen

PHP:
$eintragen = mysql_query("UPDATE test SET h-bssalat = 1, punkte = punkte+10 WHERE name = '".strip_tags($_REQUEST["name"])."');} // Eintrag in User
            if($eintragen == true)

so sollte es gehen:

PHP:
$eintragen = mysql_query("UPDATE test SET h-bssalat = 1, punkte = punkte+10 WHERE name = '".strip_tags($_REQUEST["name"])."'");} // Eintrag in User
            if($eintragen == true)
 
Hi,

da sind gleich mehrere Fehler drin. Neben dem fehlenden Anführungszeichen, ist Deine Klammerung vermurkst. Füge mal Zeilenumbrüche und entsprechende Einrückungen ein, dann siehst Du das.

LG
 
erstmal danke, der fehler ist behoben nur jetzt kommt folgende fehlermeldung

Parse error: parse error, unexpected T_ELSE in /var/www/web87/html/MV/h-bssalat.php on line 32

daraus interpretiere ich jetzt, dass er mit folgendem else
PHP:
else if (exist("test WHERE name = '".strip_tags($_REQUEST["name"])."' AND h-bssalat = 1")) // Wenn falsch eingeloggt
			{ echo "Du hast dieses Rätsel bereits gelöst!"; }
nicht zurechtkommt. Liegt das daran, dass ich vorher ein if und dann ein else habe? Wenn ja wie löse ich das dann?
Also das soll ein Quiz sein, bei dem man ein Lösungswort bekommt, welches man dann in ein Formular eingibt. Dann soll erst geprüft werden, ob derjenige überhaupt registriert ist und ob er das Quiz nicht schon einmal gemacht hat ( -> h-bssalat = 0 ) und natürlich, ob das Lösungswort richtig ist, falls das alles zutrifft, soll in eine datenbank eingetragen werden, dass derjenige das Rätsel gelöst hat also h-bssalat = 1 und ihm sollen punkte eingetragen werden. Falls beim Eintragen irgendwas schief läuft, soll eine Fehlermeldung kommen.

Falls er jetzt das Quiz aber schon gelöst hat, kann er das nicht mehr machen und das soll ihm auch gesagt werden und falls er das falsche lösungswort hat, soll ihm das auch gesagt werden. Das habe ich eben versucht mit den ganzen if und else if usw. zu lösen....geht aber anscheinend nich ganz =) Warum?
 
Hi,

ich habe nicht gezählt, es ist ja auch die Schachtelung wichtig.
Erstmal musst Du doch sehen, dass vor Deinem "else if" die schließende Klammer zum "if" fehlt. Die hast Du nämlich schon hinter der Zeile, wo das Anführungszeichen fehlte. Das geht so natürlich nicht...

Den Rest findest Du jetzt aber. Sowas sollte bei ordentlich formatiertem Code eigentlich gar nicht auftauchen.

LG
 
tut mir leid, das verstehe ich nicht, wo sollte die klammer denn sonst hin, die if-bedingung ist doch nach $eintragen also nach dem ehemals fehlenden Anführungszeichen zu ende, dann muss da doch auch die geschweifte klammer hin.
Und wenn du die normale Klammer meinst, die muss da doch auch hin, weil da ja die beschreibung für $eintragen zu ende ist...
 
Du hast in der MySQ " vergessen :)

Vorher:
PHP:
$eintragen = mysql_query("UPDATE test SET h-bssalat = 1, punkte = punkte+10 WHERE name = '".strip_tags($_REQUEST["name"])."');} // Eintrag in User

Nachher:
PHP:
$eintragen = mysql_query("UPDATE test SET h-bssalat = 1, punkte = punkte+10 WHERE name = '".strip_tags($_REQUEST["name"])."' ");} // Eintrag in User

So ist es ohne Fehler ;)
PHP:
<?php

    include("db.php");
    include("functions.inc.php");
    if(isset($_REQUEST["submit"])) { // Wenn Formular abgeschickt
        if(exist("test WHERE name = '".strip_tags($_REQUEST["name"])."' AND h-bssalat = 0") || ('".strip_tags($_REQUEST["loesung"])."' == 'loesung')) { // Wenn Mitglied mit dem Namen existiert, Rätsel noch nicht gelöst und Lösungswort richtig
            $eintragen = mysql_query("UPDATE test SET h-bssalat = 1, punkte = punkte+10 WHERE name = '".strip_tags($_REQUEST["name"])."'");} // Eintrag in User
            if($eintragen == true)
               {
                   echo "Herzlichen Glueckwunsch! Dir wurden 10 Punkte gutgeschrieben.";
               }
                else
               {
                   echo mysql_error() . "n";
               }
            
            

        else if (exist("test WHERE name = '".strip_tags($_REQUEST["name"])."' AND h-bssalat = 1")) 
            { echo "Du hast dieses Rätsel bereits gelöst!"; }
        else if ('".strip_tags($_REQUEST["loesung"])."' != 'loesung')
            { echo "Dein Wort ist falsch!"; }
            ?>

            <?php
        }
    } else { // Formular ->
        ?>
        <form action=h-bssalat.php method=post>
            <table width=90%>
                <tr>
                    <td width=50%>
                        <b>Name:</b>
                    </td>
                    <td width=50%>
                        <input type="text" name="name">
                    </td>
                </tr>
                <tr>
                    <td width=50%>
                        <b>Lösung:</b>
                    </td>
                    <td width=50%>
                        <input type="text" name="loesung">
                    </td>
                </tr>
                <tr>
                    <td width=100% colspan=2>
                        <input type="submit" value="Abschicken" name="submit">
                    </td>
                </tr>
            </table>
        </form>
        <?php
    }

?>
 
ne du hast doch jetzt nur die anführungszeichen geändert, und die hab ich schon geändert, aber der fehler mit dem T-ELSE ist ja trotzdem noch da ;)
 
Zurück