Zeichenkette in HTML Box schreiben

Hallo zusammen,

ich würde gerne aus einen SMTP Modul Festplattenwerte über 39 Grad in einer HTML Box anzeigen.
Wenn ich mir das Ergebnis mit print_r ausgebe, schaut es auch ok aus, jedoch schreibt er immer nur den ersten Wert in Variable mit dem HTML Profil.

Was mache ich falsch…

(Beispiel ist mit 36 Grad)


<?
	//DiskTempaeratur
	$ID_Var = 39412 /*[Module\SNMP\Synology\Warnung Festplatten Temperatur\Warnung Festplatten Temperatur]*/; // HTML Profil

	//Warnun bei größer n Grad
	$ValueGrad = 36;
	
	//Festplatten IDs aus SNMP Modul hier rein
	$ArrayStatus = array
		(
			47074 /*[Module\SNMP\Synology\IPS SNMP Client\1.3.6.1.4.1.6574.2.1.1.6.0 -- Disk 1 Temperatur]*/
			,19877 /*[Module\SNMP\Synology\IPS SNMP Client\1.3.6.1.4.1.6574.2.1.1.6.1 -- Disk 2 Temperatur]*/
			,56450 /*[Module\SNMP\Synology\IPS SNMP Client\1.3.6.1.4.1.6574.2.1.1.6.2 -- Disk 3 Temperatur]*/
			,32509 /*[Module\SNMP\Synology\IPS SNMP Client\1.3.6.1.4.1.6574.2.1.1.6.3 -- Disk 4 Temperatur]*/
			,11961 /*[Module\SNMP\Synology\IPS SNMP Client\1.3.6.1.4.1.6574.2.1.1.6.4 -- Disk 1 Ext Temperatur]*/
			,53498 /*[Module\SNMP\Synology\IPS SNMP Client\1.3.6.1.4.1.6574.2.1.1.6.5 -- Disk 2 Ext Temperatur]*/
			,51124 /*[Module\SNMP\Synology\IPS SNMP Client\1.3.6.1.4.1.6574.2.1.1.6.6 -- Disk 3 Ext Temperatur]*/
			,26959 /*[Module\SNMP\Synology\IPS SNMP Client\1.3.6.1.4.1.6574.2.1.1.6.7 -- Disk 4 Ext Temperatur]*/
			,35372 /*[Module\SNMP\Synology\IPS SNMP Client\1.3.6.1.4.1.6574.2.1.1.6.8 -- Disk 5 Ext Temperatur]*/
			,57551 /*[Module\SNMP\Synology\IPS SNMP Client\1.3.6.1.4.1.6574.2.1.1.6.9 -- Disk SSD Cache Temperatur]*/
		);
	
	
	foreach ($ArrayStatus as $key)
	{
		$VarName = IPS_GetName($key);
		$Value = GetValue($key);
		
		IF($Value > $ValueGrad)
		{
			$Data = "";
			$Data.= "<font color=\"#FF0000\">";
			$Data.= substr($VarName,strpos($VarName,"--",0)+3,100) ." " . $Value . " Grad";
			$Data.= "</font>"."<br>";
			print_r($Data);
			SetValueString($ID_Var, $Data);
		}
	}
?>

Das bekomme ich mit einem print_r raus:
Disk 1 Ext Temperatur 37 GradDisk 2 Ext Temperatur 38 GradDisk 3 Ext Temperatur 37 GradDisk 4 Ext Temperatur 37 Grad

Du setzt in der Schleife $Data wieder zurück.
Besser VOR dem foreach $Data="" zu setzen, in der Schleife nur anhängen und das setValueString($id,$Data) erst NACH der Schleife zu platzieren, wenn alle Werte in $DATA sind.

Tommi

Die Schleife wird ja mehrmals durchlaufen, dabei setzt Du jedes mal wieder


$Data = "";

wenn der Wert größer ist als 36, Du überschrebst dadurch alles was vorher schon in Data stand.
Daher muss Data = „“ außerhalb der foreach Schleife und innerhalb der Schleife nur $Data .= …
um Werte zu ergänzen.

Oh man… wie blöd. :banghead:
Vielen Dank