Hab mal mit folgendem Code einen Entscheidungshelfer programmiert jezt ist da aber ein Fehler drin
<form action="pfad.php">
<input type="submit" name="aktiviere"
value="Los" />
</form>
<br />
<?php
if(isset($_GET["aktiviere"]))
{
$zufall = rand(1,3);if ($zufall=="1")
{
echo "Ja";
}
else
{
if ($zufall=="2")
{
echo "Nein";
}
else
{
echo "Vielleicht, klicke nochmal";
}
}
?>Jetzt kommt aber folgender Fehler
Parse error: syntax error, unexpected $end in C:\xampp\htdocs\pfad.php on line 26
heisst etwa "eine kontrollstruktur die beginnt, endet in zeile 26, sollte sie aber nicht"
Ich hab mal nen weng im Archiv geschaut und habe auch was gefunden.
Irg. soll wohl ein Punktstrich oder eine Klammer fehlen.
das ist löblich und auch schon ganz richtig
im grunde genommen sehr einfach
zähle die klammern, jede öffnende klammer muss auch wieder geschlossen sein - eine ungerade anzahl an gleichartigen klammern kann es nicht geben
gleichartige klammern sind { und }, ( und ) oder [ und ]
in sonderfällen gibts natürlich ausnahmen, aber üblich ist es nicht
Ich programmiere erst seit ein paar tagen (Daher der etwas verwunderliche Style) und finde diesen Fehler einfach nicht.
ein grund gleich etwas zu lernen
elseif ist besser geeignet als deine if -> else if verschachtelung - tut in deinem fall das selbe nur mit weniger code und ist übersichtlicher (weniger klammern) - es gibt nur wenige fälle wo eine konstruktion in wie in deinem fall sinnvoll ist
http://at2.php.net/manual/en/control-structures.elseif.php
dürfte für dich noch interessanter sein, funktioniert so ähnlich wie if/elseif-konstrukte nur spart bei mehrfachauswahl viel code
http://at2.php.net/switch
Wäre nett wenn ihr mir sagen könntet wo der fehler ist.
den wirst du sicher jetzt selbst finden
noch ein anreiz
http://at.php.net/rand
rand() liefert int als datentyp - du machst aber folgendes
$zufall = rand(1,3);
if ($zufall=="1")
== vergleicht 2 variablen typenunabhängig miteinander, "1" wird als string, nicht als zahl interpretiert
=== hingegen vergleicht datentyp und wert
das ist besonders bei boolschen werten true/false und 0/1 bzw bei strings und zahlen in anderen zahlensystemen gefährlich
zb ergibt (10 == "A") unter gewissen vorausetzungen true, aber (10 === "A") defintiv false, da 10 ohne nähere defintion vom datentyp int sein wird und "A" als string behandelt wird