suit: Ich finde einfach den Fehler nicht

Beitrag lesen

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