Benötige Hilfe bei php

  • Ich schreibe momentan gerade eine Seite, die den aktuellen Status der Server und Services wiedergibt. Die Daten holt er sich über eine API von Icinga (ähnlich wie Nagios).


    Kurzer Aufbau der Tabelle (spalten)


    Code
    1. Host Service Status Icinga Status User Commit
    2. mail.kit.local exchange WARNING OK Speichern
    3. ssh OK OK Speichern


    Status User: Dropdown mit OK (0), WARNING(1), CRITICAL(2)
    d.h. der User hat den Status auf 0 (ok) gestellt und drückt auf Speichern, da der Service funktioniert, aber nur der Eingangserver (als Beispiel)


    Nun zu meinem Punkt. Die Tabelle wird dynamisch aufgebaut (foreach).
    Nun möchte ich irgendwie gerne der "Status User" auch in die Tabelle speichern, damit, wenn anderen Administrator oder die vom 1st lvl Support die Seite aufrufen sehen können, was gerade los ist.
    Nur, wie mache ich das?
    Irgendwie die Variablen einbauen und lauter verschiedene Forms haben.. aber dann müsste ich doch irgendwie lauter verschiedene "actions=x.php" haben?!
    Service variable: $apiHandleService->SERVICE_NAME
    Host variable: $apiHandleHost->HOST_NAME


    Hier ein Auszug vom Code, sollte eigentlich reichen.
    [php]
    foreach [...]


    // Set Status
    echo "<td>";
    echo "<form action=\"index.php\" method=\"POST\">";
    echo "<select>";
    echo "<option value=\"0\">OK</option>";
    echo "<option value=\"1\">WARNING</option>";
    echo "<option value=\"2\">CRITICAL</option>";
    echo "<option value=\"2\">UNKNOWN</option>";
    echo "</select>";
    echo "</td>";


    // Commit
    echo "<td>";
    echo "<input type=\"submit\" value=\"Speichern\" />";
    echo "</form>";
    echo "</td>";
    echo "</tr>";
    [...]
    [/php]

    Gaming: AMD Ryzen 5 2600X, MSI B450M, 32GB RAM, Sapphire RX6900XT Nitro+ SE, 4TB SSD, 10TB HDD, Win11, Samsung Odyssey G7 32" 1440p@165Hz
    Server: AMD Ryzen 5 3600, Gigabyte B450M4, Quadro P400, 16Gb RAM, 500GB SSD, Plex Encoder

    Storage: Intel i3 3220T, ASRock Z77 Pro4, 4Gb RAM, 111 TB Storage (Seagate Exos), Plex Storage

    Einmal editiert, zuletzt von CruSher ()

  • Was noch rein sollte, ist eine eindeutig identifizierbare ID, die über ein hidden-Feld übergeben werden kann. Also am Besten mit dem foreach noch gleich eine ID generieren, die dann über $ID eingefügt werden kann.
    [php]
    foreach [...]


    // Set Status
    echo "<td>";
    echo "<form action=\"index.php\" method=\"POST\">";
    echo "<input type=\"hidden\" value=\"".$ID."\">";
    echo "<select>";
    echo "<option value=\"0\">OK</option>";
    echo "<option value=\"1\">WARNING</option>";
    echo "<option value=\"2\">CRITICAL</option>";
    echo "<option value=\"2\">UNKNOWN</option>";
    echo "</select>";
    echo "</td>";


    // Commit
    echo "<td>";
    echo "<input type=\"submit\" value=\"Speichern\" />";
    echo "</form>";
    echo "</td>";
    echo "</tr>";
    [...]
    [/php]

    TOWER i7 3930K | 7970 3GB | 32GB | GA-X79A-UD5 | 250GB Vertex 3 | Lian-Li V1200B-Plus | Eizo 24" | cooled w/ H2O
    FILER A6 5400K | 8GB | 120GB EVO Basic | RAID5 w/ 22TB usable | Lian Li PC-Q25
    NBOOK Lenovo ThinkPad W530 | i7-3720QM | Quadro K2000M | 24GB | 500GB OCZ Vector 180 | 15" WUXGA
    CINE Yamaha A-S1000+CD-S1000 | Marantz SR-6003 | Focal Chorus 725+706V, Cobalt SR 800 | Nubert nuLine CS-72+AW-560 | Panasonic TX-P65ST50J
    photosmusicinsta

    Einmal editiert, zuletzt von stim0r0l ()

  • Ich wuerde nur einen Form machen um die ganze Tabelle, dann kannst du naemlich auch mehrere Hosts aendern und alles in einmal abspeichern.


    Dann muss du die selects im Form dynamisch benennen, also etwa so (Ist wohl nicht ganz funktionierende PHP Syntax):



    So sind auch gleich immer die richtigen selektiert und du kannst mit css noch die Klassen
    hoststatus0 - hoststatus3 definieren und gleich farblich hinterlegen. In der DB musst du dann mit 3 Initialisieren, damit alle von anfang an den status 'unknown' haben, daher vllt besser unknown=0 machen ;-)


    Beim Submit schauen ob der Status wert gleich ist in der DB, falls nein in der DB die Aenderung speichern.


    Vielleicht ists ja nur Pseudocode, aber Critical und Unknown haben beide den Wert 2 ;-)


    Lg
    hitch

    Media: Synology 2x2TB , Popcorn v8, Sonos ZP120, ZP90, 2 Play5, 4 Play1
    Laptop: Thinkpad X220 - I7 , IPS, 16GB DDR3, 256GB SSD + PE4H + GTX580
    Coffee: DC Mini / 2x Vario v2 / Gene CBR-101

  • Danke für den Input an beide.


    Habe jedoch das von stimorol zuerst gelesen und auch weitergeführt und da sind dann mal schnell 3h vergangen.



    Nun funktionierts wunderbar :)

    Gaming: AMD Ryzen 5 2600X, MSI B450M, 32GB RAM, Sapphire RX6900XT Nitro+ SE, 4TB SSD, 10TB HDD, Win11, Samsung Odyssey G7 32" 1440p@165Hz
    Server: AMD Ryzen 5 3600, Gigabyte B450M4, Quadro P400, 16Gb RAM, 500GB SSD, Plex Encoder

    Storage: Intel i3 3220T, ASRock Z77 Pro4, 4Gb RAM, 111 TB Storage (Seagate Exos), Plex Storage