*sigh*, I see it now
Let's look at your code in parts, then it may make sense
First you build an array of servers (though I have no idea why -- more on that later)
PHP Code:
$query = mysql_query("SELECT * FROM servers") or die(mysql_error());
$servers = array();
while($row = mysql_fetch_assoc($query)) {
array_push($servers, "{$row['serverIP']}");
}
Next you query ALL servers (again) and loop through them, grabbing the Actual and Possible up times
PHP Code:
$query = mysql_query("SELECT * FROM servers") or die(mysql_error());
while($post = mysql_fetch_assoc($query)){
$serverActualUptime = $post['serverActualUptime'];
$serverPossibleUptime = $post['serverPossibleUptime'];
Then you loop through each server in the array you built at the top of your script. For each server in this array, you are apply the Actual and Possible uptime of the individual server you fetched above.
PHP Code:
foreach($servers as $server) {
$stats = \Minecraft\Stats::retrieve(new \Minecraft\Server($server));
if($stats->is_online){
$serverStatus = 1;
$serverMOTD = $stats->motd;
$server;
$serverPOnline = $stats->online_players;
$serverMPlayers = $stats->max_players;
$serverVersion = $stats->game_version;
$uptimeClass1 = $serverActualUptime + 1;
$uptimeClass2 = $serverPossibleUptime + 1;
$uptimePercentPart = $uptimeClass1 / $uptimeClass2;
$uptimePercent = $uptimePercentPart * 100;
$queryUpdate = mysql_query("UPDATE servers SET serverStatus='$serverStatus', serverMessage='$serverMOTD', serverPlayersOnline='$serverPOnline', serverPlayersTotal='$serverMPlayers', serverVersion='$serverVersion', serverUptime='$uptimePercent', serverActualUptime='$uptimeClass1', serverPossibleUptime='$uptimeClass2' WHERE serverIP='$server'") or die(mysql_error());
} else {
$serverStatus = 0;
$serverMOTD = '?';
$server;
$serverPOnline = '?';
$serverMPlayers = '?';
$serverVersion = '?';
$uptimeClass3 = $serverActualUptime + 0;
$uptimeClass4 = $serverPossibleUptime + 1;
$uptimePercentPart = $uptimeClass3 / $uptimeClass4;
$uptimePercent = $uptimePercentPart * 100;
$queryUpdate = mysql_query("UPDATE servers SET serverStatus='$serverStatus', serverMessage='$serverMOTD', serverPlayersOnline='$serverPOnline', serverPlayersTotal='$serverMPlayers', serverVersion='$serverVersion', serverUptime='$uptimePercent', serverActualUptime='$uptimeClass3', serverPossibleUptime='$uptimeClass4' WHERE serverIP='$server'") or die(mysql_error());
}
}
}
See the problem? You are applying the Actual and Possible uptime of one server across ALL servers, then you move to the next server and do it again, and again, and again until your nested loops finish.
Here is what I think you intended to do:
First remove the servers array, you don't need it. Your while loop does it for you.
Remove the foreach, as now that you don't have the array, you don't need that either. All you need to do is send the serverIP to the Minecraft function.
Which leaves you with the following:
PHP Code:
$query = mysql_query("SELECT * FROM servers") or die(mysql_error());
while($post = mysql_fetch_assoc($query)){
$serverActualUptime = $post['serverActualUptime'];
$serverPossibleUptime = $post['serverPossibleUptime'];
$stats = \Minecraft\Stats::retrieve(new \Minecraft\Server($post['serverIP']));
if($stats->is_online){
$serverStatus = 1;
$serverMOTD = $stats->motd;
$server;
$serverPOnline = $stats->online_players;
$serverMPlayers = $stats->max_players;
$serverVersion = $stats->game_version;
$uptimeClass1 = $serverActualUptime + 1;
$uptimeClass2 = $serverPossibleUptime + 1;
$uptimePercentPart = $uptimeClass1 / $uptimeClass2;
$uptimePercent = $uptimePercentPart * 100;
$queryUpdate = mysql_query("UPDATE servers SET serverStatus='$serverStatus', serverMessage='$serverMOTD', serverPlayersOnline='$serverPOnline', serverPlayersTotal='$serverMPlayers', serverVersion='$serverVersion', serverUptime='$uptimePercent', serverActualUptime='$uptimeClass1', serverPossibleUptime='$uptimeClass2' WHERE serverIP='$server'") or die(mysql_error());
} else {
$serverStatus = 0;
$serverMOTD = '?';
$server;
$serverPOnline = '?';
$serverMPlayers = '?';
$serverVersion = '?';
$uptimeClass3 = $serverActualUptime + 0;
$uptimeClass4 = $serverPossibleUptime + 1;
$uptimePercentPart = $uptimeClass3 / $uptimeClass4;
$uptimePercent = $uptimePercentPart * 100;
$queryUpdate = mysql_query("UPDATE servers SET serverStatus='$serverStatus', serverMessage='$serverMOTD', serverPlayersOnline='$serverPOnline', serverPlayersTotal='$serverMPlayers', serverVersion='$serverVersion', serverUptime='$uptimePercent', serverActualUptime='$uptimeClass3', serverPossibleUptime='$uptimeClass4' WHERE serverIP='$server'") or die(mysql_error());
}
}
Bookmarks