Fehler in Script

wenn ich nachfolgendes Script ausführe, bekomme ich die Fehlermeldung (rote Klammer):

Parse error: syntax error, unexpected ‚{‘ in [Szenen\alles aus] on line 10

<?
$fenster = GetValue(IPS_GetStatusVariableID(21464 /*[Fenster\Bad]*/, "StatusVariable"));

	if($fenster >0)
{
	IPS_RunScript(35164 /*[Hinweise\Fenster Bad]*/);
}
	else($fenster =0)
{	
             IPS_RunScript(33293 /*[Hinweise\alles aus]*/);
}

IPS_Sleep(190);
FS20_SwitchMode(19780 /*[Allgemein\Licht Korridor]*/, false);

hab das mit den Klammern auch noch nicht richtig begriffen. Kann mich jemand bei meinem Lehrgang unterstützen? Das Script geht danach noch weiter, aber vor einfügen dieses Parts problemlos.

Was, bitte soll das werden.

stimmt, sieht ein bisschen verwirrlich aus mit „der roten Klammer“. Ist aber nur hier im Forum so. Habs aber inzwischen selbst bemerkt, was falsch war.

also PHP-Experte bin ich noch lange nicht, demzufolge fällt mir das Lesen fremder Scripte auch nicht leicht. Aber ich sinniere nun schon ein paar Minuten über oben stehendes, mir fällt dazu nur ein Schluss ein: ich glaube, Rainer meint zwischen den Zeilen sowas wie sieht nicht komisch aus sondern ist totaler Unfug

und Papa macht jetzt den Kondensstreifen…(gaaaanz schnell wech…):D:D:D

und hier noch das Originalscript:

<?

$fenster = GetValue(IPS_GetStatusVariableID(21464 /*[Fenster\Bad]*/, "StatusVariable"));

	if($fenster >0)
{
	IPS_RunScript(35164 /*[Hinweise\Fenster Bad]*/);
}
	else
{
	IPS_RunScript(33293 /*[Hinweise\alles aus]*/);
}

IPS_Sleep(190);
FS20_SwitchMode(19780 /*[Allgemein\Licht Korridor]*/, false);

und nochmals meine „Hauptfrage“. Was hat es mit den Klammern auf sich?

welche Klammern meinst Du?

diese { und diese }

Die fassen die entsprechende Aktionen der IF / Else Bedingungen die Du erfüllen willst und sind Pflicht.

Zwischen diesen Klammern sagst du was das script tun soll wenn die jeweilige bedingung erfüllt ist.

Gruss
B71

mal Laienhaft erklärt (ich hoffe, die grobe Frau aus Sarkwitz schlägt mich jetzt nicht): in einer if-Bedingung werden mit den geschweiften Klammern die auszuführenden Befehlsfolgen eingeschlossen

If (Bedingung == irgendwas) // Kommentar: wenn Bedingung erfüllt dann->
{
mach gefälligst was;
}

aber hier hilft schon sehr Lektüre wie PHP für Dummies (liegt bei mir neben dem Kopfkissen)

Nachtrag: Hockenheim liegt mal wieder vorn:D

Wenn Du nur einen Befehl innerhalb einer Bedingung ausführen willst, kannst Du die Klammern weglassen. Bei mehr wie einem Befehl, sind sie Pflicht.

hab mir „Einstieg in PHP 5 und My SQL“ von Galileo Computing besorgt, ist aber auf DVD, daher nicht so praktisch. Werde demnächst mal deinen Tip befolgen.

Hier steht alles, was man wissen muss und will.

PHP: PHP-Handbuch - Manual

ich paluder mal aus dem Nähkästchen: ich hab im November angefangen mit IPS. Bis dahin überhaupt nichts mit Programmierung zu tun gehabt. Allein die Syntax zu verstehen war mir ein Graus, ich bin ganz schön ins Schwitzen gekommen. Um so mehr half mir beim Einstieg Lektüre wie „PHP für Dummies“ - ist wirklich zu empfehlen wenn man völlig neu in dem Thema ist. Also: keine falsche Scham und zuschlagen…:wink:

ich lass es jetzt mal in eine PHP-Lern-Orgie ausarten.

@RWN
Hab mir den Link angeschaut, ermuntert und motiviert mich nicht zum durchlesen (irgendwie kalte Materie)

@Raketenschnecke
Schon der Titel hört sich für mich ansprechend an (eben für Dummies)

und ich selbst lerne am besten am praktischen Beispiel (was zwar manche dämliche Frage in den Raum wirft), anderseits hat mal ein Lehrer von mir gesagt „es gibt keine dummen Fragen - es gibt nur dumme Leute, die nicht fragen“. Aber dies nervt wahrscheinlich wiederum einige hier im Forum, was ich auch verstehe.

Früher oder später, wirst Du um diesen Link nicht drumrum kommen. Das ist die Befehlsreferenz von PHP.

Beispiele gibt es dort Tausende. Außerdem ist zu jedem Befehl die Syntax angegeben.

Um nochmal auf die Anfangfrage zurückzukommen. Der Fehler ist nicht die Klammer sondern die Zeile darüber:

   else($fenster =0) 

Bedeutet: wenn die Bedingung nicht erfüllt wurde Ordne der Variablen $fenster den Wert „0“ zu. Dieser Befehl ist mit einem „;“ abzuschließen. Da aber keines kam , sondern als nächstes die Klammer, markiert er dies als Fehler. Deswegen

Merke: Bei einer Fehlermeldung ab der angegebenen Zeile nach oben weg suchen!

PS: Du wolltest sicher nicht $fenster die „0“ zuordnen sondern einen weiteren Vergleich durchführen. Da sind doppelte „=“ Pflicht. Im Ganzen:

<?
$fenster = GetValue(IPS_GetStatusVariableID(21464 /*[Fenster\Bad]*/, "StatusVariable"));

if($fenster >0)
   {
    IPS_RunScript(35164 /*[Hinweise\Fenster Bad]*/);
    //mach was
   }
elseif ($fenster == 0)
   {    
   IPS_RunScript(33293 /*[Hinweise\alles aus]*/);
   // tu noch was anderes schönes
   }
else
   {
   //noch was anderes
   }
IPS_Sleep(190);
FS20_SwitchMode(19780 /*[Allgemein\Licht Korridor]*/, false); 

aber solange Fragen kommen wie {? oder so sehe ich es noch als ein Buch mit 7 Siegeln;)

Auf jedenfall ist der Link gespeichert.

Ich hab damit angefangen: PHP-Einfach.de - PHP Tutorial

Gruß

Hier kannst Du umsonst lernen.

PHP: PHP 4.3

würde ich nicht überbewerten. Ich selbst hab hier früher ähnliche Fragen gestellt, bekam immer Hilfe. Ob das auf manche Leute genervt wirkt: ich würd’s nicht überbewerten, eher nein. Kommt ja immer auf die Tagesform beider Parteien an (Sender und Empfänger). Da wird schnell mal was reininterpretiert was gar nicht so gemeint war… alle haben mal schlechte Tage. Aber solange noch jemand auf Deine Fragen antwortet ist alles grün:D