Die Liste wird nun im Browser angezeigt und ich kann über die Suchfunktion des Browsers auch nach Druckern suchen.
Funktionell, aber unschön. Suchfelder wären schöner.
Im Netz bin dann auf ein Javaskript gestoßen, welches HTML-Tabellen durchsuchbar macht.
Aussderdem wurde die Ausgabe noch um die Anzahl der Drucker pro Server erweitert und die IP-Adressen in Links umgewandelt.
Das Skript kann man hier herunter laden und legt es einfach im Ordner der Intranetseite am Webserver ab.
Man muss das Javaskrpit natürlich noch einbinden.
1 2 |
<script language="javascript" type="text/javascript" src="tablefilter.js" > </script> |
Den eigentlichen Aufruf setzt man dann an des Ende der HTML-Tabelle.
Allerdings muss man die HTML-Tabelle noch mit dem Parameter „id“ erweitern (oder „labeln“ – wenn man es so nennen möchte).
Ersetzen der Zeile „<table>“ durch
1 |
<table id=table1 border=1 cellspacing=0 cellpadding=3> |
und nach „</table>“ kommt der Aufruf des Java-Skriptes
1 2 3 |
<script language="javascript" type="text/javascript" > setFilterGrid("table1"); </script> |
Und schon hat man über der HTML-Tabelle Suchfelder.
Es gibt noch weitere Parameter, wie das Definieren der durchsuchbaren Spalten, oder der Erzeugung von Drop-Down-Feldern, anstatt von Suchfeldern.
Die komplette Parameter und Beispiele findet Ihr hier
Weiter geht’s:
Eine große Hilfe ware es, wenn man die IP-Adressen der Drucker anklicken könnte und man so auf das Webinterface des Druckers kommt.
Ich ändere die Abfrage wie folgt ab:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
while (($line = fgetcsv($f)) !== false) { echo "<tr>"; foreach ($line as $cell) { $ip = explode('.',$cell); if ( $ip[0]<=255 && $ip[1]<=255 && $ip[2]<=255 && $ip[3]<=255 && preg_match("!^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$!",$cell)) { echo "<td> <a href=http://$cell target=_blank >" . htmlspecialchars($cell) . "</a></td>"; } else { echo "<td>" . htmlspecialchars($cell) . "</td>"; } } echo "</tr>\n"; } |
Das wars.
Ein weiteres Hilfsmittel, wäre die Angabe der Drucker pro Server, um evtl. entscheiden zu können, wo neue Drucker installiert werden sollten.
Dies löse ich ebenfalls durch ein PHP-Skript, das ich allerdings so im Netz gefunden habe (leider weiß ich das Forum nicht mehr).
Das Skript durchsucht die CSV-Datei und legt ein 3 dimensionales Array mit jedem Suchtreffer pro Spalte an. Wird ein Begriff eingelesen, der noch nicht exisiert, wird er im Array angelegt und erhält die Anzahl 1. Existiert der Eintrag schon, wird die Trefferzahl um 1 erhöht.
Somit könnte das komplette Skript – mit allen Funktionen – wie folgt aussehen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
<html> <head> <script language="javascript" type="text/javascript" src="tablefilter.js" > </script> </head> <body> <h1>Druckerübersicht</h1> <!-- ######################################## Auflisten der Anzahl der Drucker pro Server ######################################## --> <?php $filename = 'C:\___skript\komplett.csv'; $datei = file($filename); foreach ($datei as $zeile) { $entry = explode(",", $zeile); foreach ($entry as $key => $actual_value) { if (isset($value_array[$key][$actual_value])) { $value_array[$key][$actual_value]++; } else { $value_array[$key][$actual_value] = 1; } if (isset($value_array_complete[$actual_value])) { $value_array_complete[$actual_value]++; } else { $value_array_complete[$actual_value] = 1; } } } echo "Anzahl Drucker pro Server.<br>"; echo "| "; $column = 4; foreach ($value_array[$column] as $key => $value) { echo str_replace('"', '', $key)." = ".$value." | "; } echo "<br><br>"; ?> <!-- ######################################## Auslesen des Zeitstempels der CSV-Datei ######################################## --> <?php if (file_exists($filename)) { echo "Liste wurde zuletzt aktualisiert am " . date ("d.m.Y ", filemtime($filename)) . " um " . date ("H:i.", filemtime($filename)); // echo "<br><br>"; } ?> <!-- ######################################## Erzeugen der HTML-Tabelle aus CSV-Datei ######################################## --> <table id=table1 border=1 cellspacing=0 cellpadding=3> <tr><th>Druckername</th><th>Druckerport</th><th>Freigabename</th><th>Ort</th><th>Servername</th></tr> <?php $f = fopen($filename, "r"); while (($line = fgetcsv($f)) !== false) { echo "<tr>"; foreach ($line as $cell) { $ip = explode('.',$cell); if ( $ip[0]<=255 && $ip[1]<=255 && $ip[2]<=255 && $ip[3]<=255 && preg_match("!^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$!",$cell)) { echo "<td> <a href=http://$cell target=_blank >" . htmlspecialchars($cell) . "</a></td>"; } else { echo "<td>" . htmlspecialchars($cell) . "</td>"; } } echo "</tr>\n"; } fclose($f); ?> </table> <script language="javascript" type="text/javascript" > setFilterGrid("table1"); </script> </body> </html> |
Passt, wackel, hat Luft.
Ist jetzt nicht die schönste Intranetseite, aber sie ist funktioniell und bietet alle „wichtigen“ Informationen und eine Suchfunktion.
Möchte man die Intranetseite demnach lokal auf einem Druckserver publizieren, so kann man natürlich auch den windowseigenen Webserver verwenden, den IIS, oder wie in diesem Beispiel den Xampp.
Es gibt aber noch eine weitere Lösung: erzeugen einer html-Datei mit Powershell und diese z.B.: auf einer „ReadOnly“-Freigabe bereitstellen.
Wie das geht, lest Ihr im nächsten Beitrag.