Fehler Darstellung

Hallo Leute,

bin im Moment auf der Arbeit an einem Projekt dran „Serverraum Überwachung mit IPS Deluxe Edition :D“

Habe mehrere Bool Variable die ich überwache und in eine Integer Variable schreibe.

Quasi Anzahl Fehler.

Ich möchte jetzt aber auch die Fehlermeldungen in eine String Variable schreiben.
Alle anstehenden Meldungen auf einmal mit Zeitstempel :o
Wenn keine Meldungen anstehen, soll zb. „Keine Fehler“ stehen.

Irgendwie stehe ich auf dem Schlauch zwecks Realisierung.

Ich könnte rein mit „IF / ELSE“ arbeiten, es sind aber einige Variablen. Gibt es eventuell eine einfachere Lösung?

Gruß

Du könntest dir z.B. ein Array definieren mit allen Idents der zu überwachenden Variablen. Dieses Array gehst du dann in einer foreach Schleife durch…

Du kannst auch eine HTMLBox benutzen mit deinen Jetzt vorhanden Skript eine Tabelle erstellen in HTML Format.

Kannst du mir ein Beispiel geben? Habe bis jetzt noch nie mit Schleifen gearbeitet.

Acer90
Du kannst auch eine HTMLBox benutzen mit deinen Jetzt vorhanden Skript eine Tabelle erstellen in HTML Format.

Wie meist du das?

Gruß

Nur so dahin getippt:


$Fehlervariablen = [12345, 11111, 22222]; //alle ObjektIds deiner zu überwachenden Boolean Variablen

$Fehlertext = '';

foreach ($Fehlervariablen as $Fehler) {
    if (GetValueBoolean($Fehler)) {
        $Fehlertext = $Fehlertext . 'Fehler bei ' . $Fehler . PHP_EOL;
    } 
}

Hi bumaas,

danke für den Beispiel. Bin auf jeden fall weitergekommen :slight_smile:

Eine Frage habe ich aber :o

Ich habe dein Beispiel für mein vorhaben angepasst

<?

//Test Script

$Fehlervariablen[29415] = "Klimagerät 1"; 
$Fehlervariablen[25900] = "Klimagerät 2";
$Fehlervariablen[34739] = "USV 1";



$Fehlertext = 'Achtung! '; 

foreach ($Fehlervariablen as $Fehler => $Beschreibung) { 
    if (GetValueBoolean($Fehler)) { 
        echo $Fehlertext . 'Störung ' . $Beschreibung . PHP_EOL; 
    }  
}  


?>

Wie mache ich das mir dem Zeitstempel?
Das ist in meinem Fall die Zeit wo die Variable den Zustand ändert.

Gruß

Schau dir das mal an:
PHP 5 Multidimensional Arrays

Bsp.


$Fehlervariablen = Array();

$Fehlervariablen[29415]["Name"] = "Klimagerät 1";
$Fehlervariablen[29415]["Zeit"] = "08.02.2018 - 12:35";
$Fehlervariablen[29415]["Beschreibung"] = "Oh Gott es brennt :-D";

foreach ($Fehlervariablen as $Key => $Value) {  
    if (GetValueBoolean($Key)) {  
        echo $Fehlertext . 'Störung am '.$Value["Zeit"].' => ' . $Value["Beschreibung"] . PHP_EOL;  
    }   
}   

Jetzt noch eine schöne HTML Tabelle erstellen und fertig ist es.
HTML Tables

Swen

P.s. Möchtest du das Array Zwischenspeichern nutze am besten json_encode und json_decode
PHP: json_encode - Manual
PHP: json_decode - Manual

Hi,

Danke für’s Beispiel.
Ich möchte aber die Zeit von der Variable haben.

IPS_GetVariable(29415)["VariableUpdated"];

Wie Integriere ich das :confused:

Gruß

irgendwie stelle ich mich blöd an :confused:

ich bekomme mit „echo“ alle Meldungen Angezeigt.
Sobald ich anstatt „echo“ SetValue mache (also alles in eine String Variable schreiben), Bekomme ich nur eine Meldung rein.

Und alles in eine schöne Tabelle Packen in Kombination mit „foreach & Array“ :eek: Kein Plan.

Gruß

Weil Du jedesmal die Variable neu beschreibst? Und nicht anhängst?

Mal ein kleines Beispiel als Anregung:

$Fehlervariablen[12345] = "Klimagerät 1"; 
$Fehlervariablen[23456] = "Klimagerät 2";
$Fehlervariablen[34567] = "USV 1";


$HTML ='<body><style type="text/css">table.liste { width: 100%; border-collapse: true;} table.liste td { border: 1px solid #444455; } table.liste th { border: 1px solid #444455; }</style>';
$HTML.='<table frame="box" class="liste">';
$HTML.='<tr>';
$HTML.='<th>Fehler</th>';
$HTML.='<th>Variable</th>';
$HTML.='<th>Datum / Zeit</th>';
$HTML.='<th>Text</th>';
$HTML.='</tr>';


foreach ($Fehlervariablen as $Fehler => $Beschreibung) { 
    if (GetValueBoolean($Fehler)) { 
        echo $Fehlertext . 'Störung ' . $Beschreibung . PHP_EOL; 
		
		$HTML.=	'<tr align="center"><td>'	. 'Fehler irgendwas'. '</td>';
  		$HTML.=	'<td>'						. 'ID ' . $Fehler 	. '</td>';
   		$HTML.=	'<td>'						. date('d M Y H:i',IPS_GetVariable($Fehler)["VariableUpdated"])	. '</td>';
		$HTML.='<td>'						. $Beschreibung		. '</td></tr>';
    }  
}  
$HTML.= $HTML  . "</table></body>";
SetValue(10065 /*[Tabelle]*/, $HTML);


Hi Attain,

Vielen Dank für dein Script.
Ist genau das was ich wollte :slight_smile:

Jetzt weis ich für die Zukunft zwecks HTML in eine String Variable :smiley:

Gruß & Danke

Hallo,

ich habe noch eine Frage wo ich nicht weiterkomme.

Ich habe jetzt eine Tolle Fehler Auflistung als Tabelle in einer String Variable.
Jetzt möchte ich auch die Liste per Mail versenden.

Mir ist bewusst wenn ich die Variableninhalt verschicke, bekomme ich auch nur den Inhalt (Code).
Gibt es eine andere Möglichkeit?

Gruß

Wir verschicken leider die Mails nur als Text. Du müsstest z.B. die Mails per PHPMailer/CURL versenden, dann wäre auch ein Versand mit HTML möglich, was du vermutlich möchtest?

paresy

Hier ein link: :stuck_out_tongue:
GitHub - PHPMailer/PHPMailer: The classic email sending library for PHP
oder noch einfacher:
GitHub - eoghanobrien/php-simple-mail: Provides a simple, chainable wrapper for creating and sending emails using the PHP mail() function.

Swen