HighchartsPHP

Hallo Gemeinde,

ich hätte mal zum Thema Highcharts eine generelle Verständnisfrage :

In folgender Zeile kann ich doch bestimmen, in welchem Raster er das Archiv ausliest und darstellt…also stündlich, minütlich usw.

Aber wie genau ?

IPS_Array_to_HCData($RoundedValue, array_reverse(AC_GetAggregatedValues(AC_HANDLER_ID, 30334, 1, $ts_vj, $te_vj, 1500)), 60*60*24*365);

Ich denke, die „1“ nach der ID und die 1500 haben damit etwas zu tun…

Kann mir das jemand erklären ? Ich finde dazu nichts passendes (oder gebe die falschen Suchbegriffe ein)

Lieben Dank und bei Antworten meinen Anfängerstatus bitte miteinbeziehen :slight_smile:

LG
Sascha

http://www.ip-symcon.de/service/dokumentation/modulreferenz/archive-control/ac-getaggregatedvalues/

Reicht das?

Sonst weiter fragen.

… sehr interessant was ihr da gezaubert habt!

Ich hätte mal eine Frage zur Gauge Darstellung: ich würde gerne dynamisch die Bereichsanzeigen (Plot Band => from / to) anpassen, das heißt mit jedem neuen angezeigten Wert möchte ich gegebenenfalls die farblich markierten Bereich anpassen:
Zeiger zeigt den aktuellen Stromverbrauch, die farblichen Markierungen werden der aktuellen Leistung der PV Anlage angepasst.Somit soll das Gauge auch zeigen wie viel Leistung noch (theoretisch) für den Eigenverbrauch zur Verfügung steht.

Hat da jemand eine Idee?

Gruß, Michael

Hallo Michael,

Du kannst die statischen Werte einfach durch Variablen die Dir dynamisch Deinen aktuellen PV Ertrag zeigen ersetzen.

    'plotBands' => array(
        array(
            'from' => 0,
            'to' => 19,
            'color' => '#2E2EFE'
        ),
        array(
            'from' => 19,
            'to' => getvalue($varId),
            'color' => '#FACC2E'
        ),
        array(
            'from' => getvalue($varId),
            'to' => 40,
            'color' => '#FE2E2E'
        )

Danke für den Vorschlag … das hatte ich bereits probiert, die Plotbands werden dann aber nur bei erneutem Aufruf (anklicken) des Charts im Webfront neu übernommen, nicht wie es gerne hätte synchron mit dem Zeiger…

Gruß, Michael

Dann setze doch einfach einen Event deines PV-Zählers auf das Config des HC.

Oder zyklisch alle paar Minuten

gute Idee, manchmal sieht man den Wald vor Bäumen nicht - klappt.

Aaabeeer, eigentlich ist das etwas unschön da sich das Gauge dann jedesmal komplett neu aufbaut. Man kann eben nicht alles haben, die Lösung ist pragmatisch und funktioniert.

Gruß, Michael

Huhu,

find die Spielwiese Supergeil :slight_smile: fummel gerade etwas damit rum.
Hat jemand ein Beispielscript für nen ganz einfachen Chart ohne SchnickSchnack :slight_smile: ?

Grüße

<?
 ##### Project Exporter Comment: Script Version Stand 28.04.2014 21:26 #####


################## User-Konfig #############################################################

    $IPS_Strom_VarID = 57244 /*[Logisch\Verbrauche\Strom\YouLess\AuswertungLaufend\YouLess01 aktueller Verbrauch]*/ ;



################## IPS-Konfig ##############################################################

   // HighCharts PHP includen
    include                                                                          "12413.ips.php";

    // Zeitraum
    $ts                                                                = mktime(0,0,0, date("m"), date("d"), date("Y"));
    $te                                                                = mktime(23,59,59, date("m"), date("d"), date("Y"));
    $ts_yet                                                                  = date("(D) d.m.Y H:i", $ts);
    $te_yet                                                                  = date("(D) d.m.Y H:i", $te);
    $Filename                                                              = $_IPS['SELF'].".hc.php";
    $Path                                                                  = "user/RS_HighCharts/tmp/";
    $HC_Content_ID                                           = 19303 /*[Test\HighChartsPHP\RS HighChartsPHP\StromverbrauchAktuell\StromverbrauchAktuell]*/;


    // AC-Handler definieren
   define("AC_HANDLER_ID", IPS_GetInstanceListByModuleID('{43192F0B-135B-4CE7-A0A7-1475603F3060}')[0]);

################## HC-Konfig ###############################################################
   $chart                                                                     = new Highchart();

    // Chart-Titel
    $chart->title->text                                                     = "Stromverbrauch aktuell";
    $chart->title->style->color                                         = 'rgba(255,255,255, 1.0)';
    $chart->title->style->fontSize                                     = '16px';
    $chart->subtitle->text                                                 = 'Zeitraum: '.$ts_yet.' - '.$te_yet;
    $chart->subtitle->style->color                                     = 'rgba(255,255,255, 0.7)';

    // Chart Config I
    $chart->chart->type                                                     = "column";


################### Chart Series ##################################################################################################
    $S_ID                                                     = 0;                 // Series-ID
    // Aktueller Stromverbrauch Youless
    $RoundedValue                                            = 0;
    $chart->series[$S_ID]->name                                        = "Strom gesamt";
    $chart->series[$S_ID]->data                                         = IPS_Array_to_HCData($RoundedValue, array_reverse(AC_GetLoggedValues(AC_HANDLER_ID, $IPS_Strom_VarID, $ts, $te, 10000 /*[Objekt #10000 existiert nicht]*/)));
//    $chart->series[$S_ID]->zIndex                                     = 160;
    $chart->series[$S_ID]->type                                         = "line";
    $chart->series[$S_ID]->step                                         = true;
    $chart->series[$S_ID]->yAxis                                         = 0;
    $chart->series[$S_ID]->visible                                     = true;
    $chart->series[$S_ID]->showInLegend                             = true;
    $chart->series[$S_ID]->enableMouseTracking                     = true;
//    $chart->series[$S_ID]->color                                         = '#FF7B00';
    $chart->series[$S_ID]->shadow                                     = true;
    $chart->series[$S_ID]->marker->enabled                         = false;

    // Achsen-Definitionen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    // y-Axis

    // y-Axis 0
    $yAxID                                                    = 0;
    $chart->yAxis[$yAxID]->title->text                                 = "Watt";
    $chart->yAxis[$yAxID]->title->style->color                     = 'rgba(255,255,255, 0.2)';
   $chart->yAxis[$yAxID]->unit                                         = "W";
//    $chart->yAxis[$yAxID]->opposite                                     = true;
    $chart->yAxis[$yAxID]->allowDecimals                             = true;
//    $chart->yAxis[$yAxID]->min                                         = NULL;
    $chart->yAxis[$yAxID]->tickInterval                             = 200;
//    $chart->yAxis[$yAxID]->max                                         = NULL;
    $chart->yAxis[$yAxID]->gridLineWidth                      = 0;
    $chart->yAxis[$yAxID]->gridLineColor                      = 'rgba(255,255,255, 0.1)';
    $chart->yAxis[$yAxID]->labels->style->color                     = 'rgba(255,255,255, 0.8)';

    // x-Axis
    $chart->xAxis->type                                        = 'datetime';
    $chart->xAxis->labels->style->color                      = 'rgba(255,255,255, 0.6)';
    $chart->xAxis->gridLineWidth                               = 1;
    $chart->xAxis->gridLineColor                               = 'rgba(255,255,255, 0.1)';

    // Legend
    $chart->legend->align                                       = 'center';
    $chart->legend->backgroundColor                            = 'rgba(255,255,255, 0.0)';
    $chart->legend->itemStyle->color                              = 'rgba(255,255,255, 0.8)';
    $chart->legend->itemStyle->fontWeight                      = 'normal';
    $chart->legend->itemHiddenStyle->color                    = 'rgba(255,255,255, 0.3)';
    $chart->legend->itemHoverStyle->color                      = 'rgba(255,255,255, 1.0)';

    // Chart-Config "Credits" by RS
    $chart->credits->enabled                                   = true;
   $chart->credits->href                                       = 'http://www.raketenschnecke.net';
    $chart->credits->text                                       = 'www.raketenschnecke.net';
    $chart->credits->position->align                              = "right";
    $chart->credits->position->x                                  = -10;
    $chart->credits->position->verticalAlign                   = 'top';
    $chart->credits->position->y                                  = 15;

    // plotOptions
    $chart->plotOptions->series->states->hover->brightness     = 0.1;
//    $chart->plotOptions->column->stacking                            = 'normal';
//    $chart->plotOptions->column->borderColor                        = '#EFEFEF';
//    $chart->plotOptions->column->borderWidth                        = 1;
//    $chart->plotOptions->column->shadow                                = false;
//    $chart->plotOptions->column->pointPadding                        = -0.05;
//    $chart->plotOptions->column->groupPadding                        = 0.2;
//    $chart->plotOptions->series->states->hover->brightness    = 0.2;
//    $chart->plotOptions->series->lineColor->linearGradient    = '0, 0, 0, 200';
//    $chart->plotOptions->series->lineColor->stops                = array(0=>'red',1=>'yellow');
//    $chart->plotOptions->series->lineColor->stops->'0'            = 'red';
//    $chart->plotOptions->series->lineColor->stops->'1'            = 'yellow';

    // exporting
    $chart->exporting->enabled                                         = false;
    $chart->navigation->enabled                                         = true;

    // Tooltip
   $chart->tooltip->useHTML                                   = true;
   $chart->tooltip->backgroundColor                         = 'rgba(0,0,0, 0.1)';
   $chart->tooltip->shared                                       = true;
   $chart->tooltip->crosshairs[0]                             = false;
//    $chart->tooltip->crosshairs[0]                             = array('width' =>1,'color' =>'grey','dashStyle'=>'longdash' );
    $chart->tooltip->crosshairs[1]                             = false;
//    $chart->tooltip->crosshairs[1]                             = array('width' =>1,'color' =>'grey','dashStyle'=>'longdash' );
   $chart->tooltip->style->color                              = 'rgba(255,255,255, 0.9)';
   $chart->tooltip->style->fontSize                           = '10px';
   $chart->tooltip->style->padding                              = '8px';
//    $chart->tooltip->formatter                                         = new HighchartJsExpr(formatter_String());

    // Chart Config II
    $chart->chart->renderTo                                             = "container";
    $chart->chart->backgroundColor                                     = "rgba(255,255,255, 0.0)";
    $chart->chart->plotBorderWidth                            = 1;
    $chart->chart->plotBorderColor                            = "rgba(255,255,255, 0.5)";
    $chart->chart->marginBottom                                         = 70;
    $chart->chart->height                                                 = 310;

// HC-Options (global, lang)
   $option                                                                     = new HighchartOption();
    $option->global->useUTC                                             = false;
   $option->lang->decimalPoint                                         = ',';
   $option->lang->thousandsSep                                        = ".";
   $option->lang->months                                                 = array('Januar', 'Februar','Mrz', 'April','Mai', 'Juni','Juli', 'August','September', 'Oktber','November', 'Dezember');
   $option->lang->shortMonths                                         = array('Jan', 'Feb','Mrz', 'Apr','Mai', 'Jun','Jul', 'Aug','Sep', 'Okt','Nov', 'Dez');
   $option->lang->weekdays                                             = array('Sonntag','Montag', 'Dienstag','Mittwoch', 'Donnerstag','Freitag', 'Samstag');

################################ Ausgabe ##############################################################
// HC-Content in String umformen (für Einbau in HTML-Content)
    $HC_Option                                                             = Highchart::setOptions($option);
    $HC_Chart                                                                 = $chart->render("chart");

// Pfadangaben für .js-Scripte (jquery, Highcharts). Die .js-Scripte sollten nur dann geladen werden, wenn sie wirklich im Chart benötigt werden (Performance im WFE!)
    $js_Scripts[]                                                           = '/user/RS_HighCharts/jquery/2.1.0/jquery.js';
    $js_Scripts[]                                                           = '/user/RS_HighCharts/js/highcharts.js';
    $js_Scripts[]                                                          = '/user/RS_HighCharts/js/highcharts-more.js';
//    $js_Scripts[]                                                           = '';

// HTML-Content in Variable schreiben
    $Content                                                               = HTML_Content($js_Scripts, $HC_Chart, $HC_Option);
    setValue($HC_Content_ID ,  '<iframe src="./'.$Path.$Filename.'" width="100%" height="300" name="HighChart" scrolling="no" marginheight="0" marginwidth="0" frameborder="0">');
    write_content($Path, $Filename, $Content);

################################ Functions #############################################################

function formatter_String()
{
global $WeekDay;

$s =
"function() {
    var s     = '<b>' + Highcharts.dateFormat('%H Uhr', this.x) +'</b>';

    s += '<table cellspacing=\"0\" cellpadding=\"0\" width=\"195px\" style=\" font-size:12px; color:rgba(255,255,255, 0.9);\">';
    s += '<tr><td style=\"width:15px; height:5px;\"> </td><td style=\"width:100px;\"> </td><td style=\"width:80px;\"> </td></tr>';

    $.each(this.points, function(i, point) {
    [this.series.name];
    if((point.series.name == 'Strom gesamt') || (point.series.name == 'Temperatur'))
    {

       s += '<tr><td colspan=\"2\">' + '<span style=\"color:' + point.series.color + '\">' + point.series.name +': </span></td><td align=right style=\"color:' + point.series.color + '\">' + point.y.toFixed(1) + ' kWh</td></tr>';
    }
    else
    {
       s += '<tr><td colspan=\"2\">' + '<span style=\"color:' + point.series.color + '\">' + point.series.name +': </span></td><td align=right style=\"color:' + point.series.color + '\">' + point.y.toFixed(1) + ' °C</td></tr>';
    }

    });
    s += '</table>';
    return s;
    }";

return $s;
}


// Function write_content, schreibt das fertige HC als ID.hc.php auf die Platte
function write_content($Path, $Filename, $Content)
{
    $Path       = IPS_GetKernelDir()."webfront/".$Path;

    // Ordner anlegen, wenn nicht vorhanden
    if (!is_dir($Path))
        mkdir ($Path  , 0777, true);

    // File schreiben
    $handle = fopen($Path.$Filename,"w");
    fwrite($handle, utf8_encode($Content));
    fclose($handle);
}



// Function IPS_Array_to_HCData, wandelt ein Datenarray in Array mit Wertepaaren [Timestamp, Value] um
function IPS_Array_to_HCData($RoundValue, $Array)
{
    $result        = array();
    foreach($Array as $key=>$rs)
    {

       $result[$key][]   = $rs['TimeStamp']*1000;                                 // Timestamp für JS (*1000)
       if(isset($rs['Value']))
            $result[$key][]   = round($rs['Value'], $RoundValue);
        if(isset($rs['Avg']))
           $result[$key][]   = round($rs['Avg'], $RoundValue);
    }
    $result1    = array_values($result);

    return $result1;
}

// Function HTML_Content, erzeugt aus Eingabedaten einen vollständigen HTML/PHP-String für HC-File
function HTML_Content($js_Scripts, $HC_Content, $HC_Option)
{

    // 1. Teil
    $s = '<html>
    <head>
    <title>RS HighChartsPHP</title>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <!-- 2. Add the JavaScript to initialize the chart on document ready -->';

    //  js-Scripte
    foreach($js_Scripts as $key=>$rs)
    {
      $s = $s.'
        <script type="text/javascript" src="'.$rs.'"></script>';
    }

    // 2. Teil
    $s = $s.'
        <script type="text/javascript">

            $(document).ready(function() {
               '.$HC_Option.'
                '.$HC_Content.'
            });
        </script>
    </head>
    <body>
        <div id="container"></div>
    </body>
</html>';

return $s;
}

?>


Hallo Flobo,
ist bis auf weniges original RS.
Sieht bei mir so aus:

Supi, Danke dir !

Neue Frage : Wie bekomme ich die Kreise und Kästchen weg beim Mouseover ?
Finde die Scheußlich :slight_smile:

$chart->series[$S_ID]->enableMouseTracking                     = false;

Dann ist aber auch der Tooltipp weg.
An sosnten mal in der HC-Doku schauen. Du kannst glaub ich den Kreis so verkleinern dass man ihn nicht mehr sieht.

Kann mir jemand sagen warum:
$chart->series[$S_ID]->step = ‚left‘;

nicht funktioniert?

Hallo disaster123,

an Hand Deiner Syntax gehe ich davon aus, dass Du die RS-Variante verwendest.

Ich habs bei mir versucht nachzustellen. Funktioniert.

Script? Screenshot?

Das stimmt.

Hier das Script:

<?

require_once 'myconfig.ips.php';
require_once 'HM_Heizung_Konfig.ips.php';
// HighCharts PHP includen
require_once "HighChartPHP.ips.php";

################## HC-Konfig ###############################################################
$chart 																	= new Highchart();

// Chart-Titel
$chart->title->text			 										= "Thermostate";
$chart->title->style->color			 							= 'rgba(255,255,255, 1.0)';
$chart->title->style->fontSize			 						= '16px';
$chart->subtitle->text			 									= 'Zeitraum: '.$hc_php_ts_yet.' - '.$hc_php_te_yet;
$chart->subtitle->style->color			 						= 'rgba(255,255,255, 0.7)';

// Chart Config I
$chart->chart->type 													= "column";

################### Chart Series ##################################################################################################
$S_ID                                                 	= -1;                 // Series-ID
$colorid                                                 = 0;
$interested_childs = array("ACTUAL_TEMPERATURE", "SET_TEMPERATURE", "VALVE_STATE");

foreach ($Zimmer as $key=> $Raum) {
	if (preg_match("/^EG/", $Zimmer[$key]) == 0) {
	   continue;
	}
	$regler = IPS_GetObject($IPS_HM_DeviceID[$key]);
	$color = $hc_php_colors[$colorid];
	$colorid++;

	foreach ($interested_childs as $childkey => $childname) {
		$childid = IPS_GetObjectIDByName($childname, $IPS_HM_DeviceID[$key]);
		$child = IPS_GetObject($childid);
		if ($child["ObjectIdent"] == "ACTUAL_TEMPERATURE") {
			$name = "$Zimmer[$key] Temp (ist)";
			$yaxis= 0;
			$marker_symbol = 'diamond';
			$step = NULL;

		} else if ($child["ObjectIdent"] == "SET_TEMPERATURE") {
			$name = "$Zimmer[$key] Temp (soll)";
			$yaxis= 0;
			$marker_symbol = 'circle';
			$step = 'left';

		} else if ($child["ObjectIdent"] == "VALVE_STATE") {
			$name = "$Zimmer[$key] Valve";
			$yaxis= 1;
			$marker_symbol = 'square';
			$step = 'left';

		} else {
		   continue;
		}

		$S_ID++;
		$RoundedValue                                            = 1;
		$chart->series[$S_ID]->name										= $name;
		$chart->series[$S_ID]->data 										= IPS_Array_to_HCData($RoundedValue, array_reverse(AC_GetAggregatedValues(AC_HANDLER_ID, $childid, 0, $hc_php_ts, $hc_php_te, 100)));
		$chart->series[$S_ID]->stack 										= 'yesterday';
//		$chart->series[$S_ID]->zIndex 									= 90;
		$chart->series[$S_ID]->type 										= "spline";
		$chart->series[$S_ID]->step 										= $step;
		$chart->series[$S_ID]->yAxis 										= $yaxis;
		$chart->series[$S_ID]->visible 									= true;
		$chart->series[$S_ID]->showInLegend 							= true;
		$chart->series[$S_ID]->enableMouseTracking 					= true;
		$chart->series[$S_ID]->color 										= $color;
		$chart->series[$S_ID]->shadow 									= false;
		$chart->series[$S_ID]->dashStyle 								= NULL;
		$chart->series[$S_ID]->lineWidth 								= 1;
		$chart->series[$S_ID]->states->hover->lineWidth 			= 2;
		$chart->series[$S_ID]->states->lineColor 						= 'rgba(255,255,255,1.0)';
		$chart->series[$S_ID]->marker->enabled 						= true;
		$chart->series[$S_ID]->marker->symbol 							= $marker_symbol;
		$chart->series[$S_ID]->marker->radius 							= 6;
		$chart->series[$S_ID]->marker->lineWidth 						= 0;
		$chart->series[$S_ID]->marker->states->hover->enabled 	= true;
//		$chart->series[$S_ID]->marker->states->hover->symbol 		= 'circle';
		$chart->series[$S_ID]->marker->states->hover->radius 		= 6;
		$chart->series[$S_ID]->marker->states->hover->lineWidth	= 1;
		$chart->series[$S_ID]->marker->states->hover->lineColor	= 'rgba(255,255,255,1.0)';
	}
}

// Achsen-Definitionen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// y-Axis

// y-Axis 0
$yAxID                                                	= 0;
$chart->yAxis[$yAxID]->title->text 								= "Temp (°C)";
$chart->yAxis[$yAxID]->title->style->color 					= 'rgba(255,255,255, 0.8)';
$chart->yAxis[$yAxID]->unit 										= NULL;
$chart->yAxis[$yAxID]->opposite 									= false;
$chart->yAxis[$yAxID]->allowDecimals 							= true;
$chart->yAxis[$yAxID]->tickInterval 							= NULL;
$chart->yAxis[$yAxID]->min 										= 17;
$chart->yAxis[$yAxID]->max 										= 26;
$chart->yAxis[$yAxID]->gridLineWidth                  	= 1;
$chart->yAxis[$yAxID]->gridLineColor                  	= 'rgba(255,255,255, 0.1)';
$chart->yAxis[$yAxID]->labels->style->color 					= 'rgba(255,255,255, 0.8)';

// y-Axis 1
$yAxID++;
$chart->yAxis[$yAxID]->title->text 								= "Valve (%)";
$chart->yAxis[$yAxID]->title->style->color 					= 'rgba(255,255,255, 0.8)';
$chart->yAxis[$yAxID]->unit 										= NULL;
$chart->yAxis[$yAxID]->opposite 									= true;
$chart->yAxis[$yAxID]->allowDecimals 							= true;
$chart->yAxis[$yAxID]->min 										= 0;
$chart->yAxis[$yAxID]->tickInterval 							= NULL;
$chart->yAxis[$yAxID]->max 										= NULL;
$chart->yAxis[$yAxID]->gridLineWidth                  	= 1;
$chart->yAxis[$yAxID]->gridLineColor                  	= 'rgba(255,255,255, 0.1)';
$chart->yAxis[$yAxID]->labels->style->color 					= 'rgba(255,255,255, 0.8)';

// x-Axis
$chart->xAxis->type                                		= 'datetime';
//$chart->xAxis->max                       						= $hc_php_te*1000;
$chart->xAxis->labels->style->color                      = 'rgba(255,255,255, 0.6)';
$chart->xAxis->gridLineWidth                       		= 1;
$chart->xAxis->gridLineColor                       		= 'rgba(255,255,255, 0.1)';
// Legend
$chart->legend->align                           			= 'center';
$chart->legend->backgroundColor                    		= 'rgba(255,255,255, 0.0)';
$chart->legend->itemStyle->color                  			= 'rgba(255,255,255, 0.8)';
$chart->legend->itemStyle->fontWeight                  	= 'normal';
$chart->legend->itemHiddenStyle->color                	= 'rgba(255,255,255, 0.3)';
$chart->legend->itemHoverStyle->color                  	= 'rgba(255,255,255, 1.0)';

// plotOptions
$chart->plotOptions->series->states->hover->brightness 	= 0.1;
$chart->plotOptions->column->stacking							= 'normal';
$chart->plotOptions->column->borderColor						= '#EFEFEF';
$chart->plotOptions->column->borderWidth						= 1;
$chart->plotOptions->column->shadow								= false;
$chart->plotOptions->column->pointPadding						= -0.05;
$chart->plotOptions->column->groupPadding						= 0.2;
$chart->plotOptions->series->states->hover->brightness	= 0.2;

// exporting
$chart->exporting->enabled 										= false;
$chart->navigation->enabled 										= true;

// Tooltip
$chart->tooltip->useHTML                           		= false;
$chart->tooltip->backgroundColor                         = 'rgba(0,0,0, 0.7)';
$chart->tooltip->shared                           			= false;
$chart->tooltip->crosshairs[0]                     		= false;
$chart->tooltip->crosshairs[1]                     		= array('width' =>1,'color' =>'grey','dashStyle'=>'longdash' );
$chart->tooltip->style->color                      		= 'rgba(255,255,255, 0.9)';
$chart->tooltip->style->fontSize                   		= '10px';
$chart->tooltip->style->padding                  			= '8px';

// Chart Config II
$chart->chart->renderTo 											= "container";
$chart->chart->backgroundColor 									= "rgba(255,255,255, 0.0)";
$chart->chart->plotBorderWidth                        	= 1;
$chart->chart->plotBorderColor                        	= "rgba(255,255,255, 0.5)";
$chart->chart->marginBottom 										= 70;
$chart->chart->height 												= $hc_php_Chart_Height;
$chart->chart->zoomType		 										= 'x';

// HC-Options (global, lang)
$option 																	= new HighchartOption();
$option->global->useUTC 											= false;
$option->lang->decimalPoint 										= ',';
$option->lang->thousandsSep										= ".";
$option->lang->months 												= array('Januar', 'Februar','Mrz', 'April','Mai', 'Juni','Juli', 'August','September', 'Oktber','November', 'Dezember');
$option->lang->shortMonths 										= array('Jan', 'Feb','Mrz', 'Apr','Mai', 'Jun','Jul', 'Aug','Sep', 'Okt','Nov', 'Dez');
$option->lang->weekdays 											= array('Sonntag', 'Montag', 'Dienstag','Mittwoch', 'Donnerstag','Freitag', 'Samstag');

################################ Ausgabe ##############################################################
// HC-Content in String umformen (für Einbau in HTML-Content)
$HC_Option     														= Highchart::setOptions($option);
$HC_Chart 																= $chart->render("chart");

// Pfadangaben für .js-Scripte (jquery, Highcharts). Die .js-Scripte sollten nur dann geladen werden, wenn sie wirklich im Chart benötigt werden (Performance im WFE!)
$js_Scripts[]   														= '/user/RS_HighCharts/jquery/2.1.0/jquery.min.js';
$js_Scripts[]       													= '/user/RS_HighCharts/js/highcharts.js';

// HTML-Content in Variable schreiben
$Content       														= HTML_Content($js_Scripts, $HC_Chart, $HC_Option);
setValue($hc_php_HC_Content_ID ,  '<iframe src="./'.$hc_php_Path.$hc_php_Filename.'" width="100%" height="'.$hc_php_Chart_Height.'" name="HighChart" scrolling="no" marginheight="0" marginwidth="0" frameborder="0">');
write_content($hc_php_Path, $hc_php_Filename, $Content);

################################ Functions #############################################################

function formatter_String()
{
global $WeekDay;
$s =
"function() {
	var s 	= '<b>' + Highcharts.dateFormat('%H Uhr', this.x) +'</b>';

	s += '<table cellspacing=\"0\" cellpadding=\"0\" width=\"195px\" style=\" font-size:12px; color:rgba(255,255,255, 0.9);\">';
	s += '<tr><td style=\"width:15px; height:5px;\"> </td><td style=\"width:100px;\"> </td><td style=\"width:80px;\"> </td></tr>';

	$.each(this.points, function(i, point) {
	[this.series.name];
	if((point.series.name == 'Strom1') || (point.series.name == 'Temperatur'))
	{

	   s += '<tr><td colspan=\"2\">' + '<span style=\"color:' + point.series.color + '\">' + point.series.name +': </span></td><td align=right style=\"color:' + point.series.color + '\">' + point.y.toFixed(1) + ' kWh</td></tr>';
	}
	else
	{
	   s += '<tr><td colspan=\"2\">' + '<span style=\"color:' + point.series.color + '\">' + point.series.name +': </span></td><td align=right style=\"color:' + point.series.color + '\">' + point.y.toFixed(1) + ' °C</td></tr>';
	}

	});
	s += '</table>';
	return s;
	}";

return $s;
}


?>

Danke!

Die Linien mit den Kreisen sind die soll Temperaturen dort setze ich step auf left - somit sollten Temp Änderungen „eckig“ sein.

Stefan

hallo disaster123,

hab das mit dem step-Value über eine Variable mal mit einer Linie nachgestellt. Funitioniert.
hab das mit dem step-Value über eine Variable mal mit zwei Linien und verschiedenen steps nachgestellt. Funitioniert.

Evtl hat Du in deinen for-schleifen einen Bug (warum das dann mit den MarkerSymbolen funktioniert weiss ich auch nicht).

Versuch doch mal einen Chart mit zwei Linien mit seperaten (ohne for-Schleifen) serie-Configs zu erstellen und schau was dann passiert. Wenns da geht, liegts definitiv an deinem Script.

Oder in den require_once ?

Hallo zusammen,

da HighChartsPHP mit MySQL-Daten bisher wohl niemand verwendet, hab auf meine Anfrage in Post #12 zumindet keine Antwort bekommen, hier meine Lösung die ich nach langem suchen gefunden habe. Für diejenigen dies interssiert.

  1. im Vergleich zur „alten“ Version ist es jetzt notwendig das DatenArray das an HC übergeben wird zu ändern.
    alt: array(„Value“=>$data[‚temp_max‘], „TimeStamp“=>$DateY, „TimeStampHuman“=>date(„d.m.Y h:i“,strtotime($data[‚DateX‘])))
    dabei war der TimeStampHuman nur zur Kontrolle und wurde in der Auswertung ignoriert. Die Werte in Value kommen 1:1 aus der MySQL.
    neu: array(„0“=>$DateY*1000, „1“=>$data[‚temp_max‘]*1);
    Es ist zuwingend, dass der Timestamp an erster Stelle steht und „0“ heisst. Der Value steht an 2. Stelle und heisst „1“.

Edit:Weitere Daten wie (TimeStampHuman) müssen auch nummeriert werden: „2“=>… .

  1. wie in o.g. Beisspiel muss der Timestamp, wie gehabt noch mit 1000 multipliziert werden.

  2. wie in o.g. Beispiel hab ich value noch mit 1 multipliziert. Hintergrund ist, dass obwohl der Wert in der MySQL Float ist, er wenn er in das Array geschrieben wird, als Sting übergeben wird. Herausgefunden durch vergleichen von generierten HC-Scripts mit verschiedenen Erstellmethoden. Durch die Multiplikation wirds wohl wieder ein Zahlenwert.

Damit sollte es dann auch mit MySQL gehen.

Bsp: Alles entfernt was mit Daten aus IPS zusammenhängt. Der Rest ist „neu MySQL“ oder original RS

<?
################## Zeitraum #############################################################

    // Zeitraum
    $ts                                                                = GetValue(45329 /*[Logisch\Wetter\InternetWetter\HC\Monatswerte\ZeitraumA\ZeitraumA\Startzeit]*/ );
    $te                                                                = GetValue(35703 /*[Logisch\Wetter\InternetWetter\HC\Monatswerte\ZeitraumA\ZeitraumA\Endzeit]*/ );
    $ts_yet                                                                  = date("(D) d.m.Y H:i", $ts);
    $te_yet                                                                  = date("(D) d.m.Y H:i", $te);

    $SQLStart = "'".date("Y-m-d H:i:s",$ts)."'";
    $SQLEnd = "'".date("Y-m-d H:i:s",$te)."'";
//    Print_r($SQLStart." - ".$SQLEnd."
");


If ($ts>time())
    {echo "Zeitauswahl liegt mit StartDatum in der Zukunft. Bitte wählen Sie einen Zeitraum in der Vergangenheit.";
    exit();}

################## User-Konfig #############################################################
//    MySQL DB-Daten:
    $MySQLConn=mysql_connect($MySQLIP.$MySQLPort, $MySQLAdmin, $MySQLAdminPW);
    $db = $IPS_DB;
    $SQLTable1 = $TBL_Wetter_Internet_Monat; // Monatswerte
    $db_selected = mysql_select_db($db, $MySQLConn);
//------------------------------------------------------------------------------
// MySQL Daten holen
    //Aussentemperaturen
        $sql_Ergebnis1 = mysql_query("SELECT DateX, temp_max
                                                FROM " . $SQLTable1 ."
                                                WHERE DateX >= ".$SQLStart." AND DateX <= ".$SQLEnd."
                                                ORDER BY DateX;")
                                                OR die("'".$sql_Ergebnis1."':".mysql_error());
               $TempMax      = "";
            $i = 0;
                while($data = mysql_fetch_array($sql_Ergebnis1, MYSQL_ASSOC))
                {
                $DateY = mktime(12,0,0,date("m",strtotime($data['DateX'])),date("d",strtotime($data['DateX'])),date("Y",strtotime($data['DateX'])));
//                     $TempMax[]  = array("Value"=>$data['temp_max'], "TimeStamp"=>$DateY, "TimeStampHuman"=>date("d.m.Y h:i",strtotime($data['DateX']))); // alt
                     $TempMax[]  = array("0"=>$DateY*1000,        "1"=>$data['temp_max']*1); // neu
                     }
            $i++;

//------------------------------------------------------------------------------
//MySQL Verbindung beenden
mysql_close($MySQLConn);

//print_r($TempMax);

################## IPS-Konfig ##############################################################

   // HighCharts PHP includen
    include                                                                          "12413.ips.php";


    $Filename                                                              = $_IPS['SELF'].".hc.php";
    $Path                                                                  = "user/RS_HighCharts/tmp/";
    $HC_Content_ID                                           = 30871 /*[Test\HighChartsPHP\RS HighChartsPHP\WetterMonatMinMax\WetterMonatMinMax]*/ ;

################## HC-Konfig ###############################################################
   $chart                                                                     = new Highchart();
    // Chart-Titel
    $chart->title->text                                                     = "Max Temp Monate";
    $chart->title->style->color                                         = 'rgba(255,255,255, 1.0)';
    $chart->title->style->fontSize                                     = '16px';
    $chart->subtitle->text                                                 = 'Zeitraum: '.$ts_yet.' - '.$te_yet;
    $chart->subtitle->style->color                                     = 'rgba(255,255,255, 0.7)';

################### Chart Series ##################################################################################################

    $S_ID                                                     = 0;                 // Series-ID
//   $RoundedValue                                            = 1;
   $chart->series[$S_ID]->name                                        = "Temperatur";
    $chart->series[$S_ID]->data                                         = $TempMax;
//    $chart->series[$S_ID]->stack                                         = 'yesterday';
    $chart->series[$S_ID]->zIndex                                     = 90;
    $chart->series[$S_ID]->type                                         = "line";
//    $chart->series[$S_ID]->step                                         = true;
    $chart->series[$S_ID]->yAxis                                         = 0;
    $chart->series[$S_ID]->visible                                     = true;
    $chart->series[$S_ID]->showInLegend                             = true;
    $chart->series[$S_ID]->enableMouseTracking                     = true;
    $chart->series[$S_ID]->color                                         = 'rgba(255,255,255, 0.9)';
    $chart->series[$S_ID]->shadow                                     = false;
    $chart->series[$S_ID]->dashStyle                                 = NULL;
    $chart->series[$S_ID]->lineWidth                                 = 1;
    $chart->series[$S_ID]->states->hover->lineWidth             = 2;
    $chart->series[$S_ID]->states->lineColor                         = 'rgba(255,255,255,1.0)';
    $chart->series[$S_ID]->marker->enabled                         = true;
    $chart->series[$S_ID]->marker->symbol                             = 'circle';
    $chart->series[$S_ID]->marker->lineWidth                         = 0;
    $chart->series[$S_ID]->marker->states->hover->enabled     = true;
    $chart->series[$S_ID]->marker->states->hover->symbol         = 'circle';
    $chart->series[$S_ID]->marker->states->hover->radius         = 4;
    $chart->series[$S_ID]->marker->states->hover->lineWidth    = 1;
    $chart->series[$S_ID]->marker->states->hover->lineColor    = 'rgba(255,255,255,1.0)';

    // Achsen-Definitionen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    // y-Axis

    // y-Axis 0
    $yAxID                                                    = 0;
    $chart->yAxis[$yAxID]->title->text                                 = "Temperatur (°C)";
    $chart->yAxis[$yAxID]->title->style->color                     = 'rgba(255,255,255, 0.8)';
   $chart->yAxis[$yAxID]->unit                                         = NULL;
    $chart->yAxis[$yAxID]->opposite                                     = false;
    $chart->yAxis[$yAxID]->allowDecimals                             = true;
    $chart->yAxis[$yAxID]->min                                         = NULL;
    $chart->yAxis[$yAxID]->tickInterval                             = 5;
    $chart->yAxis[$yAxID]->max                                         = NULL;
    $chart->yAxis[$yAxID]->gridLineWidth                      = 1;
    $chart->yAxis[$yAxID]->gridLineColor                      = 'rgba(255,255,255, 0.1)';
    $chart->yAxis[$yAxID]->labels->style->color                     = 'rgba(255,255,255, 0.8)';

    // x-Axis
    $chart->xAxis->type                                        = 'datetime';
    $chart->xAxis->labels->style->color                      = 'rgba(255,255,255, 0.6)';
    $chart->xAxis->gridLineWidth                               = 1;
    $chart->xAxis->gridLineColor                               = 'rgba(255,255,255, 0.1)';

    // Legend
    $chart->legend->align                                       = 'center';
    $chart->legend->backgroundColor                            = 'rgba(255,255,255, 0.0)';
    $chart->legend->itemStyle->color                              = 'rgba(255,255,255, 0.8)';
    $chart->legend->itemStyle->fontWeight                      = 'normal';
    $chart->legend->itemHiddenStyle->color                    = 'rgba(255,255,255, 0.3)';
    $chart->legend->itemHoverStyle->color                      = 'rgba(255,255,255, 1.0)';

    // Chart-Config "Credits" by RS
    $chart->credits->enabled                                   = false;
   $chart->credits->href                                       = 'http://www.raketenschnecke.net';
    $chart->credits->text                                       = 'www.raketenschnecke.net';
    $chart->credits->position->align                              = "right";
    $chart->credits->position->x                                  = -10;
    $chart->credits->position->verticalAlign                   = 'top';
    $chart->credits->position->y                                  = 15;

    // plotOptions
    $chart->plotOptions->series->states->hover->brightness     = 0.1;
    $chart->plotOptions->column->stacking                            = 'normal';
    $chart->plotOptions->column->borderColor                        = '#EFEFEF';
    $chart->plotOptions->column->borderWidth                        = 1;
    $chart->plotOptions->column->shadow                                = false;
    $chart->plotOptions->column->pointPadding                        = -0.05;
    $chart->plotOptions->column->groupPadding                        = 0.2;
    $chart->plotOptions->series->states->hover->brightness    = 0.2;

    // exporting
    $chart->exporting->enabled                                         = false;
    $chart->navigation->enabled                                         = false;

    // Tooltip
   $chart->tooltip->useHTML                                   = true;
   $chart->tooltip->backgroundColor                         = 'rgba(0,0,0, 0.7)';
   $chart->tooltip->shared                                       = true;
   $chart->tooltip->crosshairs[0]                             = false;
   $chart->tooltip->crosshairs[1]                             = array('width' =>1,'color' =>'grey','dashStyle'=>'longdash' );
   $chart->tooltip->style->color                              = 'rgba(255,255,255, 0.9)';
   $chart->tooltip->style->fontSize                           = '10px';
   $chart->tooltip->style->padding                              = '8px';
//    $chart->tooltip->formatter                                         = new HighchartJsExpr(formatter_String());

    // Chart Config II
    $chart->chart->renderTo                                             = "container";
    $chart->chart->backgroundColor                                     = "rgba(255,255,255, 0.0)";
    $chart->chart->plotBorderWidth                            = 1;
    $chart->chart->plotBorderColor                            = "rgba(255,255,255, 0.5)";
    $chart->chart->marginBottom                                         = 70;
    $chart->chart->height                                                 = 310;

// HC-Options (global, lang)
   $option                                                                     = new HighchartOption();
    $option->global->useUTC                                             = false;
   $option->lang->decimalPoint                                         = ',';
   $option->lang->thousandsSep                                        = ".";
   $option->lang->months                                                 = array('Januar', 'Februar','Mrz', 'April','Mai', 'Juni','Juli', 'August','September', 'Oktber','November', 'Dezember');
   $option->lang->shortMonths                                         = array('Jan', 'Feb','Mrz', 'Apr','Mai', 'Jun','Jul', 'Aug','Sep', 'Okt','Nov', 'Dez');
   $option->lang->weekdays                                             = array('Montag', 'Dienstag','Mittwoch', 'Donnerstag','Freitag', 'Samstag','Sonntag');

################################ Ausgabe ##############################################################
// HC-Content in String umformen (für Einbau in HTML-Content)
    $HC_Option                                                             = Highchart::setOptions($option);
    $HC_Chart                                                                 = $chart->render("chart");

// Pfadangaben für .js-Scripte (jquery, Highcharts). Die .js-Scripte sollten nur dann geladen werden, wenn sie wirklich im Chart benötigt werden (Performance im WFE!)
    $js_Scripts[]                                                           = '/user/RS_HighCharts/jquery/2.1.0/jquery.js';
    $js_Scripts[]                                                           = '/user/RS_HighCharts/js/highcharts.js';
    $js_Scripts[]                                                          = '/user/RS_HighCharts/js/highcharts-more.js';
//    $js_Scripts[]                                                           = '';

// HTML-Content in Variable schreiben
    $Content                                                               = HTML_Content($js_Scripts, $HC_Chart, $HC_Option);
    setValue($HC_Content_ID ,  '<iframe src="./'.$Path.$Filename.'" width="100%" height="300" name="HighChart" scrolling="no" marginheight="0" marginwidth="0" frameborder="0">');
    write_content($Path, $Filename, $Content);

################################ Functions #############################################################

function formatter_String()
{
global $WeekDay;
$s =
"function() {
    var s     = '<b>' + Highcharts.dateFormat('%H Uhr', this.x) +'</b>';

    s += '<table cellspacing=\"0\" cellpadding=\"0\" width=\"195px\" style=\" font-size:12px; color:rgba(255,255,255, 0.9);\">';
    s += '<tr><td style=\"width:15px; height:5px;\"> </td><td style=\"width:100px;\"> </td><td style=\"width:80px;\"> </td></tr>';

    $.each(this.points, function(i, point) {
    [this.series.name];
    if((point.series.name == 'Strom1') || (point.series.name == 'Temperatur'))
    {

       s += '<tr><td colspan=\"2\">' + '<span style=\"color:' + point.series.color + '\">' + point.series.name +': </span></td><td align=right style=\"color:' + point.series.color + '\">' + point.y.toFixed(1) + ' kWh</td></tr>';
    }
    else
    {
       s += '<tr><td colspan=\"2\">' + '<span style=\"color:' + point.series.color + '\">' + point.series.name +': </span></td><td align=right style=\"color:' + point.series.color + '\">' + point.y.toFixed(1) + ' °C</td></tr>';
    }

    });
    s += '</table>';
    return s;
    }";

return $s;
}


// Function write_content, schreibt das fertige HC als ID.hc.php auf die Platte
function write_content($Path, $Filename, $Content)
{
    $Path       = IPS_GetKernelDir()."webfront/".$Path;

    // Ordner anlegen, wenn nicht vorhanden
    if (!is_dir($Path))
        mkdir ($Path  , 0777, true);

    // File schreiben
    $handle = fopen($Path.$Filename,"w");
    fwrite($handle, utf8_encode($Content));
    fclose($handle);
}


// Function HTML_Content, erzeugt aus Eingabedaten einen vollständigen HTML/PHP-String für HC-File
function HTML_Content($js_Scripts, $HC_Content, $HC_Option)
{

    // 1. Teil
    $s = '<html>
    <head>
    <title>RS HighChartsPHP</title>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <!-- 2. Add the JavaScript to initialize the chart on document ready -->';

    //  js-Scripte
    foreach($js_Scripts as $key=>$rs)
    {
      $s = $s.'
        <script type="text/javascript" src="'.$rs.'"></script>';
    }

    // 2. Teil
    $s = $s.'
        <script type="text/javascript">

            $(document).ready(function() {
               '.$HC_Option.'
                '.$HC_Content.'
            });
        </script>
    </head>
    <body></body>
</html>';

return $s;
}

?>


Hallo zusammen,

ich brech mir seit Stunden einen ab um im Tooltipp eine Zeitausgabe in Stunden und Minuten hinzubekommen. Die ermittelten Daten im Chart sind Sekunden.

Genutzt wird eine Vorlage aus der RS-Spielwiese.

Dazu gabs bisher (ohne HighChartsPHP) die Möglichkeit im Tooltipp auf einen anderen als den Value-Wert zu verweisen.
Genau das bekomm ich mit HighChartsPHP nicht mehr hin.
Ist das überhaupt implementiert?

So wird das DatenArray erstellt:

$downtime[]        = array("0"=>$DateY*1000,  "1"=>$data['downtime1']*1,  "2"=>$data['downtime2']);

so sieht die Ausgabe aus:

Array
(
    [0] => Array
        (
            [0] => 1356908400000
            [1] => 0
            [2] => 00:00:00
        )

    [1] => Array
        (
            [0] => 1359586800000
            [1] => 47520
            [2] => 13:12:00
        )

und so hab ich zuletzt versucht das in den Tooltipp zu bekommen:

s += '<tr><td colspan=\"2\">' + '<span style=\"color:' + point.series.color + '\">' + point.series.name +': </span></td><td align=right style=\"color:' + point.series.color + '\">' + point.2 + ' Std</td></tr>';

Dann hab ich einen leeren Chart.

  1. Möglichkeit die ich in der HC-Doku gefunden hab, ist in den Series einen zusätzlichen Wert zu definieren:
$downtime2[]    = array("0"=>$DateY*1000,  "1"=>$data['downtime2']);
Array
(
    [0] => Array
        (
            [0] => 1356908400000
            [1] => 00:00:00
        )

    [1] => Array
        (
            [0] => 1359586800000
            [1] => 13:12:00
        )
    $chart->series[$S_ID]->data                                         = $downtime;
    $chart->series[$S_ID]->Y2                                = $downtime2;
s += '<tr><td colspan=\"2\">' + '<span style=\"color:' + point.series.color + '\">' + point.series.name +': </span></td><td align=right style=\"color:' + point.series.color + '\">' + point.Y2 + ' Std</td></tr>';

Dann hab ich eine Chart, einen Tooltipp und als Wert undefined.

Auch mit im Web gefundenen möglichkteiten wie: point.config[2] gehts nicht.

Die in der HC-Doku aufgeführte Formatierung der Sekunden in ein Stunden:Minuten-Format direkt im TT-String hab ich nicht hinbekommen. (blick nicht wie) auch nicht wenn ich die Sekunden x1000 nehme.

Kann mir bitte jemand auf die Sprünge helfen?

Oder sagen: das geht z.Z. oder mit dieser Version nicht.

Komplettes Script folgt bei Bedarf.

Nur für den Fall, dass ich mich im letzten Post undeutlich ausgedrückt hab. Ich möchte in den ToolTipps im Prinzip sowas wie hier:

http://jsfiddle.net/6tc6T/3/

Geht das? Wenn ja wie?

Erst mal Danke für die super Spielwiese,

Ich mache gerade meine ersten Versuche.
Im Beispiel der HighStocks kommt es zu einer Fehlermeldung:

Notice:  Undefined offset: 0 in C:\IP-Symcon\scripts\38732.ips.php on line 66

Notice:  Undefined offset: 0 in C:\IP-Symcon\scripts\38732.ips.php on line 66

Notice:  Undefined offset: 0 in C:\IP-Symcon\scripts\38732.ips.php on line 66

Notice:  Undefined offset: 0 in C:\IP-Symcon\scripts\38732.ips.php on line 66

Notice:  Undefined offset: 0 in C:\IP-Symcon\scripts\38732.ips.php on line 66

Notice:  Undefined offset: 0 in C:\IP-Symcon\scripts\38732.ips.php on line 66

Notice:  Undefined offset: 0 in C:\IP-Symcon\scripts\38732.ips.php on line 66

Notice:  Undefined offset: 0 in C:\IP-Symcon\scripts\38732.ips.php on line 66

Notice:  Undefined offset: 0 in C:\IP-Symcon\scripts\38732.ips.php on line 66

Notice:  Undefined offset: 0 in C:\IP-Symcon\scripts\38732.ips.php on line 66
Abort Processing during exceed of maximal ErrorCount: Undefined offset: 0
   Error in Script C:\IP-Symcon\scripts\38732.ips.php on Line 66

Entsprechende Zeile in 38732 (=RS IPS Functions.php):

        // Ausgabe-Array OHLC zusammenkleben
        $result[$i][]                    = $TimeStamp * 1000;                                                    // TimeStamp (JS-TimeStamp)
        $result[$i][]                     = array_pop($day)['Value'];                              // open
        $result[$i][]                     = $Array[$i]['Max'];                                          // high
        $result[$i][]                     = $Array[$i]['Min'];                                          // low
        $result[$i][]                    = $day[0]['Value'];                                           // Close   <======================== Zeile 66
        unset($day);

Hat da jemand ne Idee woran das liegen kann?

Gruß
hardlog

Noch ne Frage,

wie kann ich die Vergleichswerte des Vorjahres neben den Aktuellen (hier mit balken) darstellen? Im Sinnes eines time-„offsets“?

habs mal so versucht, ohne erfolgt

	
// column 1
$ts1         	= mktime(0,0,0, date("m"), date("d"), date("Y"));
$te1              = mktime(23,59,59, date("m"), date("d"), date("Y"))
// column 2
$ts2         	= mktime(0,0,0, date("m"), date("d"), date("Y"))-31536000;
$te2              = mktime(23,59,59, date("m"), date("d"), date("Y"))-31536000;

Danke
hardlog