Heres my function, for v2
function get_gymranks()
{
global $row, $userid, $db;
$ts = $row['strength'] + $row['agility'] + $row['guard'] + $row['IQ'] + $row['labour'];
$q = $db->query("SELECT
(SELECT COUNT(u.userid) FROM userstats us LEFT JOIN users u ON (u.userid = us.userid) WHERE strength > '{$row['strength']}' AND (u.user_level > 0) AND (u.userid <> $userid)) as strength_rank,
(SELECT COUNT(u.userid) FROM userstats us LEFT JOIN users u ON (u.userid = us.userid) WHERE guard > '{$row['guard']}' AND (u.user_level > 0) AND (u.userid <> $userid)) as guard_rank,
(SELECT COUNT(u.userid) FROM userstats us LEFT JOIN users u ON (u.userid = us.userid) WHERE agility > '{$row['agility']}' AND (u.user_level > 0) AND (u.userid <> $userid)) as agility_rank,
(SELECT COUNT(u.userid) FROM userstats us LEFT JOIN users u ON (u.userid = us.userid) WHERE IQ > '{$row['IQ']}' AND (u.user_level > 0) AND (u.userid <> $userid)) as IQ_rank,
(SELECT COUNT(u.userid) FROM userstats us LEFT JOIN users u ON (u.userid = us.userid) WHERE labour > '{$row['labour']}' AND (u.user_level > 0) AND (u.userid <> $userid)) as labour_rank,
(SELECT COUNT(u.userid) FROM userstats us LEFT JOIN users u ON (u.userid = us.userid) WHERE strength+agility+guard+IQ+labour > $ts ) as total_rank");
$r = $db->fetch_row($q);
$ranks = array('strength' => $r['strength_rank']+1, 'guard' => $r['guard_rank']+1, 'agility' => $r['agility_rank']+1, 'IQ' => $r['IQ_rank']+1, 'labour' => $r['labour_rank']+1, 'total' => $r['total_rank']+1, );
return $ranks;
}
now before display of the ranks i have
if(!$_SESSION['granks'] || $_SESSION['granktime'] < time())
{
$_SESSION['granks'] = get_gymranks();
$_SESSION['granktime'] = time()+60;
}
$row['ranks'] = $_SESSION['granks'];
now you can use
$row['ranks']['strength']
$row['ranks']['agility']
etc..
depending on your code, you may need to change all the $row to $ir