Jeg har et lille! problem. Jeg prøver at lave en rangliste og har egentlig ikke noget problem med denne del så længe at der kun er 10 - 20 spillere på den, men hvis nu jeg havde 500 spillere så er der et problem. Så ville listen blive enormt lang, så det jeg godt kunne tænke mig var at vise den indloggede brugers placering + - 5 spillere, men det er her problemet er... Spillerens placering ligger ikke i nogen database, men bliver udregnet i en sql query, hvorefter jeg looper igennem alle spillerene med den højeste først.
Her er sql'en:
$sql = "SELECT u.fname, u.lname, u.new_userid, u.country, user_points.points FROM ".$prefix."_users cu
INNER JOIN ".$prefix."_users u ON u.new_userid = cu.new_userid
INNER JOIN ".$prefix."_GA_users ON u.new_userid = ".$prefix."_GA_users.userid
INNER JOIN ( SELECT AVG(point) points, userid FROM ".$prefix."_GA_leaderboard
WHERE seasonid = $seasonid
GROUP BY userid ) user_points ON cu.new_userid = user_points.userid
WHERE ".$prefix."_GA_users.aproved = 1 ORDER BY user_points.points";
...og loopet:
while($row = mysql_fetch_array($result)){
$userid = $row['new_userid'];
$fname = $row['fname'];
$lname = $row['lname'];
$ucountry = $row['country'];
$sql2 = "SELECT * FROM ".$prefix."_geo_countries WHERE con_id='$ucountry'";
$result2 = mysql_query($sql2);
$row2 = mysql_fetch_array($result2);
$curr = $row['points'];
if ($curr != $prev)
{
$i = $x + 1;
}
echo '<tr style="background-color:#' .((++$r_count %2 == 0) ? 'FFFFFF' : 'EEEEEE'). '">';
echo '<td align="center" valign="middle"><input name="placement[]" type="text" readonly="true" value="'.$i.'" style="font-size:11px;width:16px;text-align:center;border:none;background-color:transparent;font-family:lucida grande,tahoma,verdana,arial,sans-serif;"/></td>';
echo '<td align="left" valign="middle"> ';
if(!$row['country']) {
echo '<img src="images/lang/nocountry.png"> ';
} else {
echo '<img src="images/lang/'.$row2['iso'].'.png"> ';
}
echo ''.$fname.' '.$lname.'</td>';
echo '<td align="center" valign="middle"><div style="text-align:center;">' . number_format($row['points'], 2) . '</div></td>';
echo '</tr>';
$prev = $curr;
$x++;
}
echo '</table>';
echo '</div>';
Jeg har en ide om at jeg skal kunne indsætte nedenstående et eller andet sted, men ved bare ikke hvor eller hvordan?
1.SELECT COUNT(*) + 1 AS rank FROM table WHERE points > (SELECT points FROM table WHERE userid = '$current_user')
Håber der er nogen der kan hjælpe... Jeg er ved at blive tosset...