Urlaub - Datum im Webfron eingeben

Die Profile braucht es für die grundsätzliche Funktion erst mal nicht. Muss halt bei der Eingabe berücksichtigt werden (z.B. Stunde 25 gibt es nicht).

Wenn ihr aber per PN weitermachen wollt, gerne. Bin dann raus.

Ich möchte mich nicht weiter blamieren. :smiley: Bin halt wirklich blutiger Anfänger. Ich glaube ich bekomme das nie in meinen Kopf.

Ne Quatsch. Ich weiß echt nicht wo mein Fehler ist. Fakt ist ja wenn ich das Urlaub und Countdown_Timer_Urlaub Skript manuell ausführe, dürfen keine Fehlermeldungen erscheinen.

Es macht keinen Sinn, die Skripte per Hand auszuführen. Da fehlen die Werte, also wird das auch nicht funktionieren. Oder hast Du die Variablen entsprechend „befüllt“?

In Deinem Screenshot sind nur Nullen, von daher vermute ich mal nicht.
Urlaub - Datum im Webfron eingeben - Seite 4

Erstell Dir im Webfront eine Seite, Kategorie auf Dein „Urlaub eintragen“ (23191). Dann hast Du auf einer Seite mal die Eingabemöglichkeiten und den Speichern-Button.

Keine Ahnung, wie man im Forum eine Runde Mitleid erbettelt … in großer Runde machen halt alle Mal „Ooohhh“ und weiter geht es. :smiley: :smiley:

Habe im Webfront die Kategorie angelegt. Kann aber im Webfront nichts eintragen.

Die Daten habe ich jetzt in der Konsole eingegeben.

Dann kannst Du ja mal das Skript Urlaub von Hand ausführen, dann sollte der CountDown loslaufen (ähm … hast Du ja wohl schon).

Wenn Du im Webfront nix eintragen kannst, hast Du bei den Variablen kein Aktionsskript hinterlegt. Geht so, wie Du es auf S. 1 beschrieben hast … :wink:

Bin dann mal weg …

bei mir funktioniert es auch nicht.
wenn ich das Jahr oder Monat eingebe und bestätige kommt gleich wieder die null.

Guten Morgen allerseits,

Wenn Du im Webfront nix eintragen kannst, hast Du bei den Variablen kein Aktionsskript hinterlegt. Geht so, wie Du es auf S. 1 beschrieben hast …

Hatte ich auch schon, aber dann habe ich das gleiche Problem wie Heinzzuhaus. Wenn ich was eingebe, wird das nicht übernommen bzw. kommt immer wieder die Null oder wie in meinem Fall die 2018.

Wert eingeben und die Returntaste betätigen

Ja klar,
Aber das geht halt nicht.
Aktion Urlaub Skript starten

Hallo Stefan71,
Hallo Heinzzuhaus,

vielleicht kann einer von euch beiden mal Schritt für Schritt beschreiben, was ihr gemacht habt. Kann ja nicht sein das es bei Powerfreddy und mir funktioniert.

Dann finden wir vielleicht den Fehler.

Besten Dank
Kai

Hallo,
also ich habe deine Skripte mit den passenden Variablen angelegt und zugeordnet.
das war es auch schon.

sehr unscharf die Screenshots
muss ich Abend noch mal in ruhe machen.

hier mal meine Skripte


das Script Urlaub hat bei „Eigene Aktion“ nix verloren!

Du kannst dort ein Aktionsscript ablegen um die Variablen übers Webfront zu ändern. Für IPSView wird dies nicht benötigt!
Versuch mal dieses Script bei „Eigene Aktion“ zu hinterlegen.

if($_IPS["SENDER"] == "WebFront")
	{
    SetValue($_IPS["VARIABLE"], $_IPS["VALUE"]);
	}

Das machst du dann bei allen Integer Variablen welche du über das Webfront schalten willst.
Sollte dann so aussehen.

Gruß Kai

Hallo Kai,
so sieht meine Konfig aus:

Skript Urlaub

<? 

// Urlaub 
$VAR_Urlaub = 51836 /*[Software\Spielwiese\Urlaub eintragen\Urlaub\Urlaub]*/; 
$VAR_Sind_Dann_Mal_Weg = 31289 /*[Software\Spielwiese\Urlaub eintragen\Urlaub\Sind dann mal Weg!]*/; 
$VAR_Dauer_des_Urlaubs = 58843 /*[Software\Spielwiese\Urlaub eintragen\Urlaub\Dauer des Urlaubs]*/; 

// Integer Variablen um Tag, Monat, Jahr in IPSView einzutragen 
$VAR_Beginn_Minute = GetValue(19543 /*[Software\Spielwiese\Urlaub eintragen\Urlaub\Beginn Minute]*/); 
$VAR_Beginn_Stunde = GetValue(35871 /*[Software\Spielwiese\Urlaub eintragen\Urlaub\Beginn Stunde]*/); 
$VAR_Beginn_Tag = GetValue(36967 /*[Software\Spielwiese\Urlaub eintragen\Urlaub\Beginn Tag]*/); 
$VAR_Beginn_Monat = GetValue(30188 /*[Software\Spielwiese\Urlaub eintragen\Urlaub\Beginn Monat]*/); 
$VAR_Beginn_Jahr = GetValue(50350 /*[Software\Spielwiese\Urlaub eintragen\Urlaub\Beginn Jahr]*/); 

$VAR_Ende_Minute = GetValue(35096 /*[Software\Spielwiese\Urlaub eintragen\Urlaub\Ende Minute]*/); 
$VAR_Ende_Stunde = GetValue(37356 /*[Software\Spielwiese\Urlaub eintragen\Urlaub\Ende Stunde]*/); 
$VAR_Ende_Tag = GetValue(13045 /*[Software\Spielwiese\Urlaub eintragen\Urlaub\Ende Tag]*/); 
$VAR_Ende_Monat = GetValue(53394 /*[Software\Spielwiese\Urlaub eintragen\Urlaub\Ende Monat]*/); 
$VAR_Ende_Jahr = GetValue(48316 /*[Software\Spielwiese\Urlaub eintragen\Urlaub\Ende Jahr]*/); 

$VAR_StartTime = 55652 /*[Software\Spielwiese\Urlaub eintragen\Countdown_Timer_Urlaub\StartTime]*/; 

$startTime = mktime($VAR_Beginn_Stunde, $VAR_Beginn_Minute, 0, $VAR_Beginn_Monat, $VAR_Beginn_Tag, $VAR_Beginn_Jahr); //Stunde, Minute, Sekunde, Monat, Tag, Jahr; 
$endTime = mktime($VAR_Ende_Stunde, $VAR_Ende_Minute, 0, $VAR_Ende_Monat, $VAR_Ende_Tag, $VAR_Ende_Jahr); 
SetValue($VAR_StartTime, $startTime); 

$Urlaub_Beginn = "$VAR_Beginn_Jahr-$VAR_Beginn_Monat-$VAR_Beginn_Tag"; 
$Urlaub_Ende = "$VAR_Ende_Jahr-$VAR_Ende_Monat-$VAR_Ende_Tag"; 


$Tage = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"); 
$VAR_Urlaub_Beginn = $Tage[date("w", $startTime)] .", ".date("d.m.Y", $startTime); 
$VAR_Urlaub_Ende = $Tage[date("w", $endTime)] .", ".date("d.m.Y", $endTime); 

$DateNow = strtotime("now"); 


    IF ($DateNow <= $startTime) 
    { 
        SetValue($VAR_Urlaub, $VAR_Urlaub_Beginn ." - " .$VAR_Urlaub_Ende); 
        SetValue($VAR_Sind_Dann_Mal_Weg, ""); 
        SetValue($VAR_Dauer_des_Urlaubs,Dauer($Urlaub_Beginn, $Urlaub_Ende)); 
         
        IPS_SetEventActive(38625 /*[Software\Spielwiese\Urlaub eintragen\Countdown_Timer_Urlaub\Alle 1 Tag(e) alle 1 Sekunden]*/, true); 
    } 
    ELSEIF ($DateNow > $startTime and $DateNow < $endTime) 
    { 
        SetValue($VAR_Sind_Dann_Mal_Weg, "Wir sind dann mal weg!"); 
         
        IPS_SetEventActive(38625 /*[Software\Spielwiese\Urlaub eintragen\Countdown_Timer_Urlaub\Alle 1 Tag(e) alle 1 Sekunden]*/, false); 
    } 
    ELSEIF ($DateNow > $endTime) 
    { 
        SetValue($VAR_Urlaub, "Kein Urlaub geplant"); 
        SetValue($VAR_Sind_Dann_Mal_Weg, ""); 
        SetValue($VAR_Dauer_des_Urlaubs, ""); 
    } 


function Dauer($Urlaub_Beginn, $Urlaub_Ende) 
{ 
    // Urlaubsdauer berechnen 
    $durationtime1 = date_create($Urlaub_Beginn); 
    $durationtime2 = date_create($Urlaub_Ende); 
    $durationdiff = date_diff($durationtime1, $durationtime2); 
     
    $Dauer = $durationdiff -> format('%a Tage'); 
    #echo $durationdiff -> format('%R%a Tage'); 
         
    return $Dauer; 
} 

?>

Skript Countdown_Timer_Urlaub

<? 
     
// Integer Variablen um Tag, Monat, Jahr in IPSView einzutragen 
$VAR_Minute_Start = GetValue(19543 /*[Software\Spielwiese\Urlaub eintragen\Urlaub\Beginn Minute]*/); 
$VAR_Stunde_Start = GetValue(35871 /*[Software\Spielwiese\Urlaub eintragen\Urlaub\Beginn Stunde]*/); 
$VAR_Tag_Start = GetValue(36967 /*[Software\Spielwiese\Urlaub eintragen\Urlaub\Beginn Tag]*/); 
$VAR_Monat_Start = GetValue(30188 /*[Software\Spielwiese\Urlaub eintragen\Urlaub\Beginn Monat]*/); 
$VAR_Jahr_Start = GetValue(50350 /*[Software\Spielwiese\Urlaub eintragen\Urlaub\Beginn Jahr]*/); 

$VAR_Countdown = 11378 /*[Software\Spielwiese\Urlaub eintragen\Countdown_Timer_Urlaub\Countdown]*/; 

$startTime = GetValue(55652 /*[Software\Spielwiese\Urlaub eintragen\Countdown_Timer_Urlaub\StartTime]*/); 


    include "include_Countdown_Timer.ips.php"; 
     
?>

Skript include_Countdown_Timer.ips.php

<? 

// Countdown Timer 
// include_Countdown_Timer.ips.php 

SetValue($VAR_Countdown,Countdown($startTime)); 


    function Countdown($startTime) 
    {     
        // Countdown berechnen 
        //Aktuellezeit des microtimestamps nach PHP5, für PHP4 muss eine andere Form genutzt werden. 
        $timeNow = microtime(true); 
         
        //Berechnet differenz von der Endzeit vom jetzigen Zeitpunkt aus. 
        $diffTime = $startTime - $timeNow; 
        SetValue(52720 /*[Software\Spielwiese\Urlaub eintragen\Countdown_Timer_Urlaub\DiffTime]*/, $diffTime); 
         
        //Zerlegt $diffTime am Dezimalpunkt, rundet vorher auf 2 Stellen nach dem Dezimalpunkt und gibt diese zurück. 
        $milli = explode(".", round($diffTime, 2)); 
        $millisec = round($milli[1]); 
         
        //Berechnung für Tage, Stunden, Minuten 
        $day = floor($diffTime / (24*3600)); 
        $diffTime = $diffTime % (24*3600); 
        $hours = floor($diffTime / (60*60)); 
        $diffTime = $diffTime % (60*60); 
        $minutes = floor($diffTime / 60); 
        $seconds = $diffTime % 60; 
         
        $Countdown = $day." Tag(e) " .$hours." Stunde(n) " .$minutes." Minute(n) " .$seconds." Sekunde(n)"; 
                                 
        IF ($diffTime > 0) 
        { 
            return $Countdown; 
        } 
    } 

?>

Screenshots:

Objektbaum

Hatte auch das Skript Urlaub als Aktionsskript. Aber bekomme immer noch die Fehlermeldung:

08.10.2018 15:29:24 | PHP | Error: Notice: Undefined offset: 1
   Error in Script C:\IP-Symcon\scripts\include_Countdown_Timer.ips.php on Line 21
  134 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger.inc.php (call IPSLogger_Out)
   44 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err)
   21 in scripts\include_Countdown_Timer.ips.php (call IPSLogger_PhpErrorHandler)
    6 in scripts\include_Countdown_Timer.ips.php (call Countdown)
   15 in scripts\Countdown_Timer_Urlaub.ips.php (call include)

Urlaub 02.JPG

Sieht soweit richtig aus…

08.10.2018 15:29:24 | PHP | Error: Notice: Undefined offset: 1
   Error in Script C:\IP-Symcon\scripts\include_Countdown_Timer.ips.php on Line 21
  134 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger.inc.php (call IPSLogger_Out)
   44 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err)
   21 in scripts\include_Countdown_Timer.ips.php (call IPSLogger_PhpErrorHandler)
    6 in scripts\include_Countdown_Timer.ips.php (call Countdown)
   15 in scripts\Countdown_Timer_Urlaub.ips.php (call include)

Vielleicht hängt es mit der IPSLibrary zusammen!? Die hab ich bei mir nicht installiert.

Beste Grüße
Kai

Mit der Library hat das nix zu tun, da sind irgendwelche Fehler sonst gemacht worden.

@Heinz
Das eingeschaltete Logging macht bei den einzelnen Variablen auch keinen Sinn.

Also nochmal von vorn …
Sämtliche Variablen der Eingabefelder (Begin_…, Ende_…) erhalten das Aktionsskript, siehe hier
Urlaub - Datum im Webfron eingeben - Seite 6
bei Aktion hinterlegt. Bei den Profilen erst mal „Kein Profil“ einstellen. Das kann später erfolgen, wenn alles läuft.

Die Variable Speichern bekommt das Skript Urlaub als Aktion. Hier ein Profil mit einer Zeile eingeben

Dann über das gestaltete Webfront sämtliche Daten eingeben (aufpassen, daß kein sinnloser Tag/Monat/Jahr/… eingegeben wird) . Der letzte Klick geht auf die Schaltfläche Speichern.

Jetzt sollten sich die Felder Urlaub, … füllen und der CountDown sollte loslaufen.

Habe alles so gemacht und die Felder füllen sich jetzt und sobald der Countdown läuft kommt die o.g. Meldung.

Habe jetzt ein paar Sachen probiert, finde aber keinen Weg das Erscheinen des Fehlers nachzustellen. Mir fehlt der php-Hintergrund um hier eine Lösung zu zeigen. Pardon.

@Heinzzuhaus

Hast du auch die Library bei dir installiert? Irgendwas müssen wir gleich haben was Kai und Powerfreddy nicht haben.

Die Library habe ich auch installiert, hatte oben doch schon erwähnt, daß es nicht daran liegt. Zumal das Ding nur Fehler loggt.

Laut php-xxx wird da irgendwas falsch übergeben/zugeordnet.

Wenn ich das ganze mit Profilen mache, rechnet er falsch aus. Scheint wohl an meinen angelegten Profilen zu hängen, keine Ahnung.

Ausgewählt habe ich ja 11 November bis 26 Dezember