Hilfe bei Php Script für Serverabfrage

  • Hiho werte Community


    Ich habe seid längerem nach einer Möglichkeit gesucht das auf unserem Board angezeigt wird ob der Spiele-Server Online ist!


    Da Bioware dafür selber keine Scripts stellt oder die Ip rausgibt oder gar eine API worauf man was aufbauen könnte wurde mal ein Php Script geschrieben indem einfach die Seite ausgelesen wird.


    Nach dem Einrichten ( Php Noob) habe ich es zum laufen gebracht!


    Css für das Aussehen war kein Problem!


    Nun habe ich eben gesehen das der Server in Wartung ist! Also sprich Offline! Dieses wird auch angezeigt ABER ich bekomme trotzdem ein Fehler!


    Und deswegen wende ich mich damit an euch!.


    Der Fehler "PHP notice in file /var/www/vhosts/xxxxx/xxxxx/serverstatus/swtor-server-widget.php (72): Undefined index: population"


    Dieses Script Zeigt an welchen Server man gewählt hat und daraus liest er dann aus!


    Offline / Online erkennt er richtig und wirft den Wert auch aus! Auch um was für einen Server es sich handelt (PVE,PVP,RP etc.)
    Bei der Population erkennt er es auch richtig ABER wenn der Server Down ist gibt es ja keine Spieler und da hakt es!


    Dort bekomme ich den Fehler!


    Ich weiß nun das im Grunde zwar abgefragt wird was auf der Seite steht aber er weiß nicht was er ausgeben soll wenn der Server nicht vorhanden ist!


    Sprich Offline = Population nicht vorhanden!
    In der Php gibt es die Wert von Population Leicht - Voll.


    Ich weiss nicht wie ich da ansetzten soll um das zu richten!


    So schaut es aus wenn alles richtig läuft


    und das passiert wenn der Server Offline ist


    Hier mal die "swtor-server-widget.php"



    und die dazu gehörige "simple_html_dom.php" Umbenannt in txt als Anhang da mir nur 10000 Zeichen zur Verfügung standen und Php als Anhang nicht erlaubt ist.


    simple_html_dom.txt



    Wie gesagt ich bin was Php angeht ein Absoluter Neuling und weiß nicht wie ich es umsetzten kann das dann einfach Angezeigt wird Population "Leer" oder nicht vorhanden.


    Ich habe auch per Tante Google nach einer Lösung gesucht!


    Es wird ja wie gesagt abgefragt Server On/Offline. Das wird ausgegeben mit Up oder Down
    Population wird Abgefragt und dann durch die Werte "Leicht bis Voll" angegeben.


    Aber wie Frage ich in dieser Php ab "Offline = Population Null" ?


    Ich bin über jede Hilfe Dankbar. Jede Erklärung ist auch Willkommen aber habt Nachsicht mit mir ^^ Ich brauche Verständliches Deutsch zum Umsetzten!



    Ich will hier auch keine Lösung auf dem Silberteller haben!



    Ich Danke schonmal für jede Hilfe die hier kommt




    Gruß mcburn

  • Als erstes wäre es gut wenn die Zeilenangaben stimmen würden. Lt. Fehler tritt dieser in Zeile 72 in der swtor-server-widget.php auf. In deinem Post ist das Ende bei Zeile 68 erreicht.
    Undefined index sagt, dass du versuchst auf einen Index in deinem Array zuzugreifen, den es nicht gibt.


    In deinem Fall wird das Problem sein, dass du in deiner Switch Case Anweisung keinen Treffer auf $serverElm->getAttribute('data-population') im vergleich mit dem Wert 1-5 haben wirst, da dieser Wert scheinbar auch nicht gesetzt wird, sobald der Server nicht mehr Online ist. An der Stelle solltest du deiner Switch Case Anweisung noch eine default-Anweisung hinzufügen, die dann ausgeführt wird, wenn 1-5 nicht zutrifft. Lesestoff dazu findest du hier: http://php.net/manual/de/control-structures.switch.php


    Würde in einem Fall heißen bei Zeile 57 so etwas wie:

    PHP
    default:
    $server["population"] = 'Leer';
  • Ja wie gesagt er kann mit dem Wert nicht umgehen wenn der Server Offline ist!
    Da weiß er nicht was er da angeben soll da es nicht Definiert ist! Soweit habe ich das auch verstanden.


    Definiert ist nur "Leicht -Voll" Aber nicht der Wert den er haben soll wenn Leer!



    Also wenn ich es dann richtig Verstehe , muss ich angeben
    was Angezeigt bzw. was ausgeführt wird wenn KEINE "population" da ist!


    Da die Datei im Moment ja nicht weiß was sie angeben soll!


    Und da weiss ich nicht wie ich das Umsetzten soll bzw. kann!


    Wie gesagt ich habe da nicht wirklich Ahnung von!


    Aber habe ich das so Richtig verstanden?


    Wert Server Online = Population entweder Leicht,Mittel etc. (Wird ja korrekt Abgefragt)


    Wert Server Offline = Population nicht Vorhanden = Leer oder Anzeige Deaktiviert da keiner da. (Wird nicht verarbeite da garnicht Definiert was in dem Zustand geschehen soll)

  • Im Grunde bedeutet es dann wenn 1-5 NICHT zutrifft greift der Wert "default" und das bedeutet in dem Fall "Leer"


    Da diese Anweisung fehlt kann er auch keinen Wert zuordnen! Und somit kommt es zu dem Fehler.


    Habe ich das so richtig verstanden?


    Denn dann weiss ich wo ich ansetzten könnte!


    Und danke für den Link! Dort werde ich mich dann mal durch wuseln!


    Gruß mcburn

  • So nun ein kleines Feedback meinerseits!


    Soeben sind die Server Down und das Script funktioniert einwandfrei!



    Danke nochmals an dich @[FFW] Patric


    Ich werde noch ein wenig an der Optik feilen aber wie gesagt es macht genau das was es soll vorallem nun auch wenn die Server Down sind.




    LG mcburn