Auto Refresh für einen einzelnen Abschnitt
dms281
- php
Hallo Zusammen,
ich habe nun nach Stundenlangem Suchen im Internet aufgegeben und hoffe hier kann mir jemand weiterhelfen. Ich habe kaum Ahnung von PHP und HTML. Ich habe es mittlerweile geschafft folgende Server Übersicht zu erstellen...
http://www.gft-funclan.de/whazzup/server_info2.php
Das PHP Script dazu sieht wie folgt aus:
<div id="map">
<center>
<iframe width='600' height='300' frameborder='0' scrolling='no' marginheight='0' marginwidth='0' src='http://maps.google.de/maps?f=q&source=s_q&hl=de&geocode=&q=http:%2F%2Fwww.gft-funclan.de%2Fgestats%2Fgestats.kmz&sll=53.121281,8.894892&sspn=0.040022,0.132093&ie=UTF8&t=p&ll=46.073231,14.0625&spn=142.311988,61.875&z=1&output=embed'></iframe>
</center>
</div>
<div id="link">
<center>
<table width="600" border="0">
<tr align="center">
<td align="right" valign="right" width="600"><?php echo "<small><a href='http://maps.google.de/maps?f=q&source=embed&hl=de&geocode=&q=http:%2F%2Fwww.gft-funclan.de%2Fgestats%2Fgestats.kmz&sll=53.121281,8.894892&sspn=0.040022,0.132093&ie=UTF8&t=p&ll=46.073231,14.0625&spn=142.311988,61.875&z=1' style='color:#0000FF;text-align:left' target='_blank'>Karte als Vollbild</a></small>";?></td>
</tr>
</table>
</div>
<div id="table_header">
<table width="600" style="border-color: #006633; border-width: 0px;" border="0" align="center">
<tr align="center">
<td align="left" valign="middle" width="90"><?php echo "<b><small>Pilot</small></b>"; ?></td>
<td align="left" valign="middle" width="60"><?php echo "<b><small>Alt</small></b>"; ?></td>
<td align="left" valign="middle" width="45"><?php echo "<b><small>Speed</small></b>"; ?></td>
<td align="left" valign="middle" width="45"><?php echo "<b><small>HDG</small></b>"; ?></td>
<td align="left" valign="middle" width="90"><?php echo "<b><small>Aircraft</small></b>"; ?></td>
<td align="left" valign="middle" width="50"><?php echo "<b><small>Departure</small></b>"; ?></td>
<td align="left" valign="middle" width="50"><?php echo "<b><small>Arrival</small></b>"; ?></td>
<td align="left" valign="middle" width="55"><?php echo "<b><small>Route FL</small></b>"; ?></td>
<td align="center" valign="middle" width="40"><?php echo "<b><small>Status</small></b>"; ?></td>
</tr>
</table>
</div>
<?php
$whazzuptxt = "whazzup.txt";
//get file
$file = file_get_contents('whazzup.txt');
//get clients
preg_match('/!CLIENTS(.*?)!SERVERS/ms', $file, $results);
$content = trim($results[1]);
//get out \r\n so on
$lines = preg_split('/(\015\012)|(\015)|(\012)/', $content);
//filter for pilot and atc clients
function filter ($value)
{
if (strpos($value, 'PILOT') !== false){
return true;
}elseif(strpos($value, 'ATC') !== false){
return true;
}else{
return false;
}
}
$lines = array_filter($lines, 'filter');
$br = "<br>";
//get each line and decode line and give out line
foreach ($lines as $index => $line)
{
list($callsign, $vid, $realname, $clienttype, $frequency, $latitude, $longitude, $altitude, $groundspeed, $planned_aircraft, $planned_tascruise, $planned_depairport, $planned_altitude, $planned_destairport, $server, $protrevision, $rating, $transponder, $facilitytype, $visualrange, $planned_revision, $planned_flighttype, $planned_deptime, $planned_actdeptime, $planned_hrsenroute, $planned_minenroute, $planned_hrsfuel, $planned_minfuel, $planned_altairport, $planned_remarks, $planned_route, $planned_depairport_lat, $planned_depairport_lon, $planned_destairport_lat, $planned_destairport_lon, $atis_message, $time_last_atis_received, $time_connected, $client_software_name, $client_software_version, $adminrating, $atc_or_pilotrating, $planned_altairport2, $planned_typeofflight, $planned_pob,$plane_hdg,$plane_onground) = explode(':', $line, 47);
?>
<div id="table">
<table width="600" style="border-color: #006633; border-width: 0px;" border="0" align="center">
<tr align="center">
<td align="left" valign="middle" width="90"><?php echo "<small>$callsign$br</small>";?></td>
<td align="left" valign="middle" width="60"><?php echo "<small>$altitude ft.$br</small>"; ?></td>
<td align="left" valign="middle" width="45"><?php echo "<small>$groundspeed kt.$br</small>"; ?></td>
<td align="left" valign="middle" width="45"><?php echo "<small>$plane_hdg °$br</small>"; ?></td>
<td align="left" valign="middle" width="90"><?php echo "<small>$planned_aircraft$br</small>"; ?></td>
<td style="background-color: #efeaea;" align="left" valign="middle" width="50"><?php echo "<small>$planned_depairport$br</small>"; ?></td>
<td style="background-color: #efeaea;" align="left" valign="middle" width="50"><?php echo "<small>$planned_destairport$br</small>"; ?></td>
<td style="background-color: #efeaea;" align="left" valign="middle" width="55"><?php echo "<small>$planned_altitude$br</small>"; ?></td>
<td align="center" valign="middle" width="40"><?php if ($plane_onground == 0) {
echo "<small><img src='http://www.german-aviator.de/planes/yellow_N.png' border='0' width='16' height='16' />$br</small>";
} else {
echo "<small><img src='http://www.german-aviator.de/planes/red_N.png' border='0' width='16' height='16' />$br</small>";
}; ?></td>
</tr>
</table>
</div>
<?
}
?>
Ich habe das Script wie mir empfohlen wurde in mehrere <div> -Bereiche aufgeteilt. Nun würde ich gern NUR den <div> Container "table" mit einem Auto-Refresh/Reload versehen, so dass der Inhalt der Tabelle alle 10 Sekunden aktualisiert wird ohne den Rest der Seite neu zu laden. Ich habe unmengen an Codeschnipseln (Ajax, Java) ausprobiert allerdings ohne jedes Erfolgserlebnis. Wäre hier jemand so freundlich mir etwas zur Hand zu gehen? Ich denke für jemanden der sich auskennt wäre es eine Kleinigkeit. Bitte keine Antworten wie "Ajax ist das was du brauchst, Google ist dein Freund!". Ich hab nun Stunden mit Googeln und Experimentieren verbracht aber es will einfach nicht.
Also zusammengefasst, die Karte, der Link zum vergrössern der Karte sowie die Kopfzeile der Tabelle sollen unverändert bleiben, NUR der darunter folgende Inhalt der Tabelle soll alle 10 Sekunden aktualisiert werden.
<iframe> kommt nicht in Frage da die Tabelle je nach Anzahl der User auf dem Server mal länger und mal kürzer ist und ich im <iframe> ja keine Dynamische höhe angeben kann soweit ich weis.
Ware echt nett wenn mir jemand helfen würde...bin am Verzweifeln :(
Moin ... Moin ...
Leider gibt es in deinem Fall nur eine Lösung, welche mind. aus einer Mischung von PHP + HTML + AJAX + JAVASCRIPT besteht. Zur Info: PHP an sich wird auf dem Server ausgeführt, wobei der Refresh / Reload der Webseite nur auf dem Rechner des Benutzers vorgenommen werden kann.
Also... du findest hier >> http://mootorial.com/wiki/mootorial/03-native/01-function#function.periodical << kein 100% Beispiel für deine Anforderung, aber ein Stück Code, welches funktioniert und für deinen Anwendungsfall ebenfalls funktionieren wird. Bei Google nach AJAX und PHP zu suchen wird die nämlich nix bringen, wie du bereits festgestellt hast.
Du musst eine Funktion definieren, welche genau das macht... was du dir wünscht. In deinem Fall wäre dies: das PHP Script Aufrufen, welches "refresht"
werden soll.
function RefreshMySite(){
new Request({method: 'get'}).send('PFAD ZU DEINER DATEI');
}
Jetzt fehlt dir noch ein Intervall, in welchem die Javascript Funktion aufgerufen werden soll. var eineVariable = RefreshMySite.periodical(2000, null);
Es wird wahrscheinlich nicht zu 100% klappen. Daher hier die notwendigen Links ...
http://mootorial.com/wiki/mootorial/03-native/01-function#function.periodical
http://mootorial.com/wiki/mootorial/07-request/00-request
Mal abgesehen davon, wird die wahrscheinlich keiner die 100% Lösung anbieten. Schliesslich verdienen unmengen an Menschen mit solchem Fachwissen das tägliche Brot!! Du kannst auch schlecht zur Audi Vertragswerkstatt fahren und darum bitten, dass die KFZ Mechaniker dir zeigen... wie man den Auspuff wechselt... weil du das später zu Hause selbst machen möchtest. Bei Audi kostet es ja Geld!
Viel Erfolg. Gruß,
Zerko
Hallo Zerko,
vielen Dank für deine Antwort. Ich habe mich mal duch Deine Links gelesen und bin dabei noch auf ein Script gestossen welchen zu funktionieren scheint.
<script src="http://ajax.googleapis.com/ajax/
libs/jquery/1.3.0/jquery.min.js"></script>
<script>
var auto_refresh = setInterval(
function()
{
$('#loaddiv').fadeOut('slow').load('reload.php').fadeIn("slow");
}, 20000);
</script>
<div id="loaddiv">Inhalt für Refresh
</div>
Leider liest es beim Refresh manchmal veraltete Daten aus dem Browsercache, was ich noch in den Griff zu bekommen versuche. Bin aber schon ein ganzes Stück weiter.