Undefined Variable

Hallo zusammen

Wie kann ich für ein Script den Fehleroutput abschalten? Also beispielsweise folgende Meldung?


Notice: Undefined variable: WD_1 in C:\Programme\IP-Symcon\scripts\settime_dani.ips.php on line 11

Hintergrund: Die Variable ist nicht immer gesetzt. Wenn sie aber nicht gesetzt ist, soll es nicht zu einer solchen Fehlermeldung im Webinterface kommen.

Vielen Dank & Gruss

Dani

Hallo Dani,

es ist tatsächlich in PHP möglich Fehlermeldungen bei Ausführung einer Funktion zu unterdrücken.

Dies ist aber nur in sehr seltenen Fällen wirklich nötig.

Die Meldung „Undefined variable“ besagt nicht, dass die Variable nicht gesetzt ist, sondern dass sie schlichtweg nicht existiert. Eine in PHP existierende Variable ist immer gesetzt. Andere Programmiersprachen, wie z.B. C, erzwingen die Deklaration von Variablen. In C würde dieses Problem also gar nicht erst auftreten.

Was hindert Dich nun daran die Variable zu Beginn des Skripts mit einem Dummy-Wert vorzubelegen? Damit wäre sie existent und natürlich auch gesetzt.

Fehlermeldungen zu unterdrücken zeugt von schlechtem Programmierstil.

Ich kenne Dein Skript nicht und kann daher nicht ausschließen, dass es vielleicht doch zu den „seltenen Fällen“ gehört.
Hier also die Lösung: Der betreffende Funktionsname muss mit „@“ beginnen.

Gruß
HJH

Vielen Dank für die Info! Ist leider nicht ganz einfach, oder empfinde es zumindest nicht so. Die Variabeln werden über ein Formular übergeben. Und da es sich um Checkboxes handelt, welche bei deren Aktivierung einen Wert 1 haben, kann ich diese meiner Meinung nach nicht vorher definieren und beibehalten. Habe nun den schlechten Stil gewählt. :wink:

Werde gleich die Daten mal packen und reinstellen.

Also, anbei sende ich euch meinen kleinen Wecker. Wie gesagt, bin kein Profi-Programmierer und habe vermutlich einige Dinge gemacht, bei denen Profis Schreikrämpfe haben. :wink:

Zu den einzelnen Files:

Wecker_dani: Dieses Skript muss mit dem Timer minütlich ausgeführt werden. Es prüft, ob es Weckzeit ist. Wenn ja, wird die definierte Playlist oder das MP3 gespielt.

wecker_dani: PHP-Skript, das im Webinterface aufgerufen wird. Es zeigt die aktuelle Einstellung an, an welchen Tagen geweckt werden soll. Dort kann man die Zeiten gleichzeitig anpassen.

gettime / settime: Hilfsdateien, um die Weckzeiten auszulesen oder neu zu definieren. Gehören auch in den Ordner des Webinterface.

Habe gerade bemerkt, dass ich ja ein Skript gleich benannt habe, wie ein PHP-File für den Browser. Sollte aber klar sein, welches wofür steht.

Da ich erst ein anderes System reinbringen wollte, habe ich die Variabeln „WD_1“ biw „WD_7“ als String in IPSymcon definiert. Ist an sich nicht schön, aber da es erst komplett anders geplant war, habe ich’s so belassen. Diese müssen bei euch auch noch so definiert werden, damit diese beständig sind.

Also, vielleicht gibt dieses Skript dem einen oder anderen einen Gedankenanstoss (oder Kopfweh, weil so schlecht programmiert)… :wink:

Gruss

Dani

Wecker.zip.zip (2.03 KB)

schreib einfach ganz oben als aller erstes in deinem Script „if (!isset($WD_1)) $WD_1=NULL;“ oder sowas. In dem Moment ist sie nicht mehr undefiniert und der Fehler ist weg.

Gruß,

Toni

hast du bei der Variable ‚die laut Fehlermeldung nicht existieren soll‘ auch pingelig auf Gross/Kleinbuchstaben geachtet?

mfG Franz