Postarei aqui um rank de level bem simples, e com ele, você poderá fazer os ranks de magic level, etc.
Explicação nos comentários.
<? // Conecta ao banco de dados $con = mysql_pconnect('localhost','root',''); // host, usuário, senha mysql_select_db('otservs'); // banco de dados // Numero de players a serem exibidos por páginas $num_por_pagina = 10; // Para saber o número da página a ser exibida // se o numero da página não for informado, definie como 1 if (!$pagina) { $pagina = 1; } // Constrói uma cláusula SQL "SELECT" que nos retorne somente os registros desejados // Define o número do primeiro registro da página. $primeiro_registro = ($pagina*$num_por_pagina) - $num_por_pagina; // Consulta apenas os registros da página em questão utilizando como auxílio a definição LIMIT. Ordene os registros pela experiencia, começando do maior para o menor DESC. $consulta = "SELECT name, level, experience FROM players ORDER BY experience DESC LIMIT $primeiro_registro, $num_por_pagina"; // executar query $res = mysql_query($consulta,$con); // Exibe os registros na tela echo "<ul>"; while (list($nome, $level, $exp) = mysql_fetch_array($res)) { echo "<li> $nome - $level - $exp"; } echo "</ul>"; // Faz o painel de navegação $consulta = "SELECT COUNT(*) FROM players"; list($total_usuarios) = mysql_fetch_array(mysql_query($consulta,$con)); $total_paginas = $total_usuarios/$num_por_pagina; $prev = $pagina - 1; $next = $pagina + 1; // se página maior que 1 (um), então temos link para a página anterior if ($pagina > 1) { $prev_link = "<a href=\"$PHP_SELF?pagina=$prev\">Anterior</a>"; } else { // senão não há link para a página anterior $prev_link = "Anterior"; } // se número total de páginas for maior que a página corrente, então temos link para a próxima página if ($total_paginas > $pagina) { $next_link = "<a href=\"$PHP_SELF?pagina=$next\">Próxima"; } else { // senão não há link para a próxima página $next_link = "Próxima"; } // vamos arredondar para o alto o número de páginas que serão necessárias para exibir todos os registros. Por exemplo, se temos 20 registros e mostramos 6 por página, nossa variável $total_paginas será igual a 20/6, que resultará em 3.33. Para exibir os 2 registros restantes dos 18 mostrados nas primeiras 3 páginas (0.33), será necessária a quarta página. Logo, sempre devemos arredondar uma fração de número real para um inteiro de cima e isto é feito com a função ceil(). $total_paginas = ceil($total_paginas); $painel = ""; for ($x=1; $x<=$total_paginas; $x++) { if ($x==$pagina) { // se estivermos na página corrente, não exibir o link para visualização desta página $painel .= " [$x] "; } else { $painel .= " <a href=\"$PHP_SELF?pagina=$x\">[$x]</a>"; } } // exibir painel na tela echo "$prev_link | $painel | $next_link"; ?>
Espero que aproveitem bastante.