Criando ranking e mostrando 20 resultados do meio da lista.
Pessoal, boa noite.
Tenho uma tabela no BD que preciso criar um rankin.
Fiz uma select que soma duas colunas, de pontuação e outra de desempate, depois ordena as somas por jogador e cria o ranking.
Até ai está funcionando blz.
Meu problema é o seguinte: Imagine que existam 100 jogadores, eu estou em 70º. Eu quero mostrar o rankin com a minha colocação, mas é inviável criar uma lista com mais de 70 jogadores. O que eu quero é mostrar 10 colocações antes de mim e 10 depois de mim, ou seja, mostrar do 60º ao 80º colocado, mas não consigo fazer isso.
No meu código criei até um while que identifica minha colocação (70º), mas não consegui criar um while que exiba somente esses 20 jogadores. Se alguém souber como resolver... fico muito grato. Segue o código:
$sql = "SELECT *, SUM(Pontos) as TotalPontos, sum(Acerto_Exato) as Acertos FROM placares INNER JOIN jogadores ON placares.JogadorID = jogadores.id WHERE rodada = '$rodada' GROUP BY JogadorID ORDER BY TotalPontos DESC, Acerto_Exato DESC";
// Inicia o While de pontuação
$result = mysqli_query($conn, $sql);
$result2 = mysqli_query($conn, $sql);$i = 1; // Define 1 para o primeiro lugar no ranking
// Esse while identifica minha posição no ranking
while($r = mysqli_fetch_assoc($result2)) {
$ID_Jog = $r['JogadorID'];
$Pos = $totalArray[$r['JogadorID']] = $i++;
if($LoginID == $ID_Jog) {
$Minha_Colocacao = $Pos;
}
}
while($row = mysqli_fetch_assoc($result)) {
$ID_Jogador = $row['JogadorID'];
$Posicao = $totalArray[$row['JogadorID']] = $i++."º ";
$RankJogador = $row['nome'];
$Pontos = $row['TotalPontos'];
$AcertoExato = $row['Acertos'];
// Verifica se o usuário é o jogador logado e marca um style diferente para ele.
if($LoginID == $ID_Jogador) {
// Se for o mesmo jogador define um fundo colorido para a linha dele na tabela
$destaque = "style=\"background-color:#e6a527\"";
//$Pos = explode('º',$Posicao);
} else {
// Caso não seja zera a variável novamente.
unset($destaque);
}
echo "
<div class=\"divTableRow\" $destaque>
<div class=\"divTableCell\" align=\"center\">$Posicao</div>
<div class=\"divTableCell\" >$RankJogador</div>
<div class=\"divTableCell\" align=\"center\">$Pontos</div>
<div class=\"divTableCell\" align=\"center\">$AcertoExato</div>
</div>";
}Discussão (2)
Carregando comentários...