Jakiś czas temu stworzyłem taką tabelę na swoim forum. Nie znam się za bardzo na PHP, więc prawdopodobnie mój sposób nie należy do najlepszych ale spełnia funkcje, które chciałem.
Chciałem, aby tabelka wyświetlała się na stronie głównej forum, więc zgodnie z tym tutorialem:
http://forum.invisionize.pl/topic/7506-wlasna-tabela-na-stronie-glownej/
utworzyłem tabelę w HTMLu w bicie boardindexTemplate w edycji stylu na forum.
Potem znalazłem skrypt na internecie, który musiałem lekko przerobić:
http://www.forums.wiaderko.com/poradniki-do-hlds/159988-status-serwera-na-www-wszystkie-dane-47-48-a.html
Ostatecznie, doszedłem do takiej zawartości plików jak w tej paczce:
http://www.onlinegamers.pl/pliki/status.zip
status1.php i status2.php to odpowiednio statusy pierwszego i drugiego serwera (można byłoby użyć tylko jednego pliku, ale ja nie potrafię php na tyle dobrze). Są to też pliki, które edytujesz.
<?php
$ip = "91.204.161.25:27030"; // IP:PORT serwera
require_once("class_PQ.php");
$pq_data = PQ::Create(Array());
$data = $pq_data->query_info($ip);
$out = $data["totalplayers"]; // pobiera liczbę graczy online
$out2 = $data["maxplayers"]; // pobiera maksymalną liczbę graczy
$map1 = $data["map"]; // pobiera nazwę mapy
?>
Te informacje wyciągane są z pliku \PQ\halflife.php, więc jeśli chcesz aby skrypt wyciągał jeszcze jakieś inne dane, to dodajesz to do status1/status2.php
Przykładowo, jeśli chcesz aby skrypt pobrał nazwę serwera, to w status1/status2.php dodajesz przed ?> takie coś:
$name1 = data["name"];
I tak dalej.
Zawartość status.zip wrzucasz do głównego katalogu forum.
Teraz wracamy do bitu boardindexTemplate.
Na samym początku kodu dodaj:
<php>
require_once('status1.php');
require_once('status2.php');
</php>
A teraz do naszej tabelki. Zakładam, że już ją zrobiłeś (w HTMLu, sama tabelka bez żadnej treści), a jeśli nie to poczytaj to:
http://www.kurshtml.edu.pl/html/struktura_tabeli,tabele.html
W odpowiednich wierszach i kolumnach tabeli parsujesz dane z plików status1.php i status2.php (lub więcej/mniej w zależności od serwerów).
Przykładowo w określonym wierszu pod kolumną "Mapa" wpisujesz:
{$map1}
I w tym miejscu pojawi się nazwa mapy na danym serwerze. Identycznie robisz z innymi polami.
Jeżeli chcesz zrobić bardziej rozbudowany status, to będziesz musiał się wgłębić w zawartość podesłanych przeze mnie plików.
Co do statusu Online/Offline (na zielono i czerwono), to w moim przypadku po użyciu $fsockopen, który był opisywany w kilku poradnikach, zawsze wyświetlał się status Offline, więc wymyśliłem trochę inny sposób.
Utworzyłem warunek, który w zależności od tego czy nazwa mapy wyświetla się w tabelce, będzie określał czy serwer jest włączony czy wyłączony. Wygląda to tak:
<if test="$map1"><span style="color: green; font-weight: bold;">Online</span><else /><span style="color: red; font-weight: bold;">Offline</span></if>
Dodam, że gdy serwer padnie, to pole z nazwą mapy jest puste więc jest on na 99% prawidłowy.
U mnie tabelka ostatecznie wygląda tak:
http://www.onlinegamers.pl/pliki/przyklad.jpg
Mam nadzieję, że w jakimś stopniu Ci pomogłem