Ir para conteúdo
Entre para seguir isso  
Retur

Ranking

Recommended Posts

Tenho um ranking que uma página que lista 100 usuários por ordem de pontuação,gero essa lista com php normalmente mesmo.

 

Gostaria de em outra página gerar a colocação do usuário,como eu poderia estar fazendo isso?

 

eu teria que gerar um ranking com todos usuários,salvar o mesmo para depois verificar qual a posição do usuário,ou teria uma maneira prática de estar fazendo isso?

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depende os dados estão vindo de um bd ou são estáticos ?

 

Estão vindo do banco de dados.

 

Tem uma tabela ao qual contém os dados do usuário e pontuação,ai nela gero o ranking normal,porém em outra página gostaria de estar gerando a posição atual do mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Estão vindo do banco de dados.

 

Tem uma tabela ao qual contém os dados do usuário e pontuação,ai nela gero o ranking normal,porém em outra página gostaria de estar gerando a posição atual do mesmo.

 

qual a diferença de rank pra posição atual?

e como é sua tabela?

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

qual a diferença de rank pra posição atual?

e como é sua tabela?

 

A tabela tem um campo chamado pontuacao,e na página do rank ele chama os 100 melhores de acordo com a pontuação do usuário.

 

Agora no caso da posição que será exibido em outra página será por exemplo:

 

Usuário: 200º

Usuário: 1752º

 

O exemplo acima seria exibido em outra página,o que é minha duvida,agora a página do rank é apenas uma classificação exibindo os 100 melhores.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

 

Essa parte eu consigo fazer,a minha duvida seria o seguinte,como posso mostrar a posição do usuário em uma outra página,exemplo:

 

Posição Ranking: Electronic - 1654º

 

Mostrar somente a sua posição no rank em outra página,entende,eu até saberia fazer isso,porém teria que gerar uma lista com todos os usuários e salvar a mesma,e isso seria suicida,por que se tiver 40M usuários,teria que fazer o mesmo com 40M.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse rank é baseado no valor de algum campo certo?

entao faz um select com cout(*) com a condição WHERE coluna <= pontos_do_usuario_com_ID_X

Ex:

SELECT count(*) FROM tab where coluna <= (select coluna from tab where ID = 17);

coluna é o que vc usa pra classificar

vai te retornar a posição dele

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse rank é baseado no valor de algum campo certo?

entao faz um select com cout(*) com a condição WHERE coluna <= pontos_do_usuario_com_ID_X

Ex:

SELECT count(*) FROM tab where coluna <= (select coluna from tab where ID = 17);

coluna é o que você usa pra classificar

vai te retornar a posição dele

 

Seu exemplo deu certo,só tem um problema,veja o exemplo abaixo por favor.

 

1º Electronic - 220

2º Retur - 220

 

* Caso haja empate,o sistema mostra a posição do Retur como 1º e não como 2º,já a posição do Electronic ele já mostra corretamente,como posso estar resolvendo isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

não deveria aparecer números iguais, já que ele esta contando a ordem, cada um tem a sua

e não sei qual seu critério de desempate

Compartilhar este post


Link para o post
Compartilhar em outros sites

1º Electronic - 220

2º Retur - 220

 

não sei como é sua tabela nem como vc fez o select

so sei que isso não era pra acontecer

 

como vc fez o select?

Compartilhar este post


Link para o post
Compartilhar em outros sites

1º Electronic - 220

2º Retur - 220

 

não sei como é sua tabela nem como você fez o select

so sei que isso não era pra acontecer

 

como você fez o select?

 

Foi feita da maneira abaixo.

 

$query = $conn->prepare("SELECT COUNT(*) + 1 FROM usuarios WHERE pontuacao > (SELECT pontuacao FROM usuarios WHERE id = '".$usuario['id']."')");$query->execute();
$result = $query->fetch();

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Seu exemplo deu certo,só tem um problema,veja o exemplo abaixo por favor.

 

1º Electronic - 220

2º Retur - 220

 

* Caso haja empate,o sistema mostra a posição do Retur como 1º e não como 2º,já a posição do Electronic ele já mostra corretamente,como posso estar resolvendo isso?

 

como assim cara? aquele select só retorna uma linha.

 

baseado em que você diz que Return é o segundo?

no caso o Return está em primeiro junto com o Electronic, como você vai por ele em segundo se o único critério é a pontuação?

o que você usa pra desempatar?

 

não sei como é sua tabela nem como você fez o select

so sei que isso não era pra acontecer

 

 

Eu nao tinha considerado que poderia ter usuário com a mesma pontuação

entao isso era sim pra acontecer

kkkkkkkk

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
Entre para seguir isso  

  • Conteúdo Similar

    • Por Leo.Lopes23
      Saudações,
       
       
      Tenho algumas dúvidas a respeito o ranqueamento de um site desenvolvido na plataforma Wix.
      É realmente possível desenvolver um SEO neste tipo de site ?
       
      Alguém poderia me ajudar ?
    • Por joaomart
      Olá. Preciso fazer uma consulta MySql em PHP para listar uma espécie de ranking, porém quando uso o código para listar por ordem decrescente ele lista da seguinte maneira:
      80
      70
      30
      100
       
      E preciso que ele liste assim:
      100
      80
      70
      30
       
      O código PHP:
      <?php include("conexao.php"); $sql = mysqli_query($conexao, "SELECT * FROM ranking ORDER BY `pontuacao` DESC") or die( mysqli_error($conexao) ); while($aux = mysqli_fetch_assoc($sql)) { echo "<tr>"; echo "<td>".$aux["nome"]."</td>"; echo "<td>".$aux["data"]."</td>"; echo "<td>".$aux["pontuacao"]."%</td>"; } ?> Agradeço a quem ajudar
    • Por KeyApp.Top
      Promova a classificação do seu aplicativo com Keyword Installs (Instalações de Palavras-chave)
       
      Olá a todos! Nós apresentamos a vocês uma nova ferramenta revolucionária para promover seu aplicativo na Play store.
       

      Essa não é mais uma daquelas ferramentas pouco efetivas de incentivo ao tráfico, isso é um método para colocar seu aplicativo bem por cima dos outros. Isso é Keyword Installs (Instalações de palavras-chave).
       
      Eis como funciona:
      Escolha uma palavra-chave para qual você quer aumentar seus rankings nas pesquisas
          2. Compre Keyword Installs de nós.
          3. Aproveite ver o seu aplicativo em 1º lugar nas pesquisas
             orgânicas pela sua palavra-chave.
      Mas isso ainda não é tudo!! Receba US$ 20 (R$ 65) para usar com os nossos serviços só por criar uma conta!!  
       
      Os nossos preços são os seguintes:
       
      1 instalação de palavra-chave —  R$ 0,52 (US$ 0,16)
      1 instalação de palavra-chave + classificação — R$ 0,72 (US$ 0,22)
      1 instalação de palavra-chave +classificação + avaliação — R$ 0,88 (US$ 0,27)
       
      1 instalação de pacote — R$ 0,29 (US$ 0,09)
      1 instalação de pacote  + classificação — R$ 0,49 (US$ 0,15)
      1 instalação de pacote  + classificação + avaliação — R$ 0,65 (US$ 0,20)


       
      Para saber mais, visite o nosso website: KeyApp.top - Android keywords promotion
      Caso estiver interessado, ou se tiver dúvidas, por favor, entre em contato conosco por e-mail: sales@keyapp.top ou skype: karen.rendall_1
       
       
    • Por kitchox3
      Olá Pessoal,
        Recentemente meu site passou por alguns períodos de instabilidade, em menos de uma semana, ocorreu duas vezes tempo de inatividade, nos dias seguintes após o fato, recebi diversos erros 500 no webmaster tools, no qual todos foram marcados como resolvido, e não retornaram.     Os erros praticamente foram resolvidos rapidamente. O primeiro foi resolvido em aproximadamente 6 horas e outro em menos de 1 hora. Mas o problema onde gostaria de chegar foi que a partir de ontem 10/01 meu trafego caiu drasticamente, aproximadamente 70%. O trafego deve voltar como antes? se sim, quanto tempo leva aproximadamente?   Obs: O site não tem ações manuais/penalizações.
    • Por danieldesenh
      Olá, sou iniciante no PHP e gostaria de saber como faço para pegar a posição de cada usuário que foi gerada no ranking (PHP).
      O código abaixo está funcionando corretamente. Seleciona os usuários define uma posição, mas gostaria de pegar a posição de cada um e gravar em outra tabela do mysql.
      Exemplo:
      o usuário Daniel ficou em primeiro
      Gravo na tabela que ele ficou em primeiro.
      Segue o codigo:
      <meta charset="UTF-8">
      <? include("header.php"); ?><br>
      <h3>Ranking Atual De Usuários que mais clicam no PTC</h3>
      <br>
      <style type="text/css">
      <!--
      .Estilo3 {color: #FFFFFF; font-weight: bold; font-size: 18px; }
      -->
      </style>
      <table width="50%" align="center" border="0">
      <tr>
      <td><table width="100%" align="center">
      <tr>
      <td><div align="center"><strong>Competição de Cliques Mensal - Novembro/2016</strong></div></td>
      </tr>
      </table></td>
      </tr>
      <tr>
      <td bgcolor="#890761"><table width="100%" align="center">
      <tr>
      <td width="11%"><div align="center"><span class="Estilo3">Posição</span></div></td>
      <td width="15%"><div align="center"><span class="Estilo3">ID</span></div></td>
      <td width="48%"><div align="center"><span class="Estilo3">Usuarios</span></div></td>
      <td width="26%"><div align="center" class="Estilo3">Visitas</div></td>
      </tr>
      </table></td>
      </tr>
      </table>
      <table width="50%" border="0" align="center" colspadding="0">
      <?php
      require('config.php');
      $sql = mysql_query("SELECT * FROM tb_users ORDER BY visits+0 DESC");
      $lista=0;
      while($dados=mysql_fetch_array($sql))
      {
      $lista++;
      $lole=$_COOKIE["usNick"];
      if ($lole==$dados["username"]) {
      $cor = "#FFFF00";
      }else{
      $cor = "F0F0F0";
      }
      ?>
      <tr>
      <td width="16%" bgcolor="<?=$cor ?>"><center>
      <?=$lista; ?> º
      </center></td>
      <td width="14%" bgcolor="<?=$cor ?>"><center><?=$dados["id"]; ?>
      </center></td>
      <td width="44%" bgcolor="<?=$cor ?>"><center><?=$dados["username"]; ?>
      </center></td>
      <td width="26%" bgcolor="<?=$cor ?>"><center><?=$dados["visits"]; ?>
      </center></td>
      </tr>
      <? } ?>
      </table>
      <? include("footer.php"); ?>
      Espero que possa me ajudar, desde já agradeço.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.