Jump to content

marcosberaldo

Members
  • Content count

    5
  • Joined

  • Last visited

Community Reputation

0 Comum

About marcosberaldo

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Boa noite. Estou criando um ranking de pontuação e preciso colocar uma paginação nesse ranking mas não posso fazer a paginação pelo select, pois a select tem que somar os pontos de cada jogador informados em cada registro no banco, se eu limito a select ele só vai somar os pontos dos registros da página e não todos os pontos do jogador. Dessa forma optei por fazer a select normalmente e criar um array onde eu pretendo exibir somente parte dos dados. Em resumo, consegui fazer da seguinte forma: $dados = mysqli_query($conn, "SELECT *, sum(Pontos) as TotalPontos, sum(Acerto_Exato) as Acertos FROM placares INNER JOIN jogadores ON placares.JogadorID = jogadores.id WHERE campeonato='$campeonato' GROUP BY JogadorID ORDER BY TotalPontos DESC, Acertos DESC "); for($a = 0; $a < 9; $a++ ) { $row = mysqli_fetch_array($dados); echo $row['JogadorID']. " - " .$row['nome']; } Esse código me retorna 10 registros do array, até ai tudo bem, mas eu gostaria de exibir apenas um intervalo, por exemplo do registro 5 ao 9. Tentei da seguinte forma: $dados = mysqli_query($conn, "SELECT *, sum(Pontos) as TotalPontos, sum(Acerto_Exato) as Acertos FROM placares INNER JOIN jogadores ON placares.JogadorID = jogadores.id WHERE campeonato='$campeonato' GROUP BY JogadorID ORDER BY TotalPontos DESC, Acertos DESC "); for($a = 5; $a < 9; $a++ ) { $row = mysqli_fetch_array($dados); echo $row['JogadorID']. " - " .$row['nome']; } Dessa forma ele me mostra apenas 5 registros, mas ele sempre me mostra os 5 primeiros e eu preciso carregar os últimos 5. Como faço???
  2. marcosberaldo

    Criando ranking e mostrando 20 resultados do meio da lista.

    É uma ideia interessante, deve funcionar. Vou tentar isso em breve. Obrigado pela dica
  3. 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>"; }
  4. marcosberaldo

    [Resolvido] Como somar valores de uma função dentro de um while

    Consegui resolver. Obrigado.
  5. Boa noite. Tenho uma dúvida para completar uma função no sistema, vou tentar explicar de forma resumida. Cada jogador lança 10 resultados para um jogo (são 10 registros no BD). Um select puxa esses resultados e aplica uma fórmula que define a pontuação para cada um dos 10 resultado (máx 3 pontos por palpite). Em seguida tem um comando que soma os pontos de cada um desses palpites, podendo chegar a um total de até 30 pontos. Até aqui tudo bem, agora eu preciso que a página faça isso para vários jogadores (todos que enviaram palpites) e preciso guardar o total de cada jogador em uma variável para ser utilizada fora do while, mas não sei como fazer isso. Se puderem me ajudar... Segue o código: // Inicia o While $result = mysqli_query($conn, $sql); while($row = mysqli_fetch_assoc($result)) { // Recebe as variáveis do banco e aplica a pontuação para cada palpite do jogador if($row['PlacarReal'] == $row['PlacarJogador']) { $Pontos = 3; } else { if($row['MResult'] == $row['PResult']) { $Pontos = 1; } else { $Pontos = 0; } } // Soma o total de pontos para o jogador (dentre os 10 palpites). $PontosRodada += $Pontos; Agora preciso fazer o mesmo para os outros jogadores que estão no banco... separando o total de cada um deles
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.