Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

matheus280

Erro ao buscar 2 valores iguais no banco de dados

Recommended Posts

Bom, estou desenvolvendo um sistema de ranking pra um jogo que eu tou fazendo, após pesquisar um pouco encontrei uma solução que puxa todas as colunas em ordem (DESC ~ ASC ) se não me engado, conforme eu escolher, todos os valores foram puxados certos, porém na hora de eu pegar os outros dados que sejam igual aquele valor, se o valor for igual, meio que sai o que já apareceu em cima.

<?php
$buscaRanking = mysql_query("SELECT mediarank FROM personagem ORDER BY mediarank DESC");
//Ranking 1
$ordemRank1 = mysql_result($buscaRanking, 0);
$buscaRanking1 = mysql_query("SELECT * FROM personagem WHERE mediarank = '$ordemRank1'");
$dadosRanking1 = mysql_fetch_array($buscaRanking1);
$rankingn1 = $dadosRanking1['nome'];
$rankingp1 = $dadosRanking1['mediarank'];
$rankingu1 = $dadosRanking1['usuarioid'];
//Ranking 2
$ordemRank2 = mysql_result($buscaRanking, 1);
$buscaRanking2 = mysql_query("SELECT * FROM personagem WHERE mediarank = '$ordemRank2'");
$dadosRanking2 = mysql_fetch_array($buscaRanking2);
$rankingn2 = $dadosRanking2['nome'];
$rankingp2 = $dadosRanking2['mediarank'];
$rankingu2 = $dadosRanking2['usuarioid'];
//Ranking 3
$ordemRank3 = mysql_result($buscaRanking, 2);
$buscaRanking3 = mysql_query("SELECT * FROM personagem WHERE mediarank = '$ordemRank3'");
$dadosRanking3 = mysql_fetch_array($buscaRanking3);
$rankingn3 = $dadosRanking3['nome'];
$rankingp3 = $dadosRanking3['mediarank'];
$rankingu3 = $dadosRanking3['usuarioid'];
?>

Pode existir forma mais facil de se fazer, mas a unica que achei vendo o manual do mysql e consegui utilizar foi essa. Mostra quase que perfeitamente em ordem, porém como eu disse, se dois valores no $buscaRanking forem iguais, na hora de dar o select sai errado.

Para dar um exemplo(na verdade os números são reais), estou puxando a média de 5 atributos que o personagem tem, esse valor é salvo no banco de dados.

ai os valores são 100, 86, 86, nessa ordem, o primeiro é meu, o segundo também, o terceiro também(criei 3 personagens de teste)

cada personagem tem um nome diferente, só que como o valor é igual, aparece o primeiro personagem em primeiro lugar, e o segundo personagem em segundo e terceiro lugar.

Espero que tenham intendido meu problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

só pra avisar, vc mencionou o id do personagem pelo motivo errado, mas me fez pensar em uma maneira certa, Vlw =D

resolvi o problema da seguinte maneira

<?php
//Ranking 1
$ordemRank1 = mysql_result($buscaRanking, 0);
$buscaRanking1 = mysql_query("SELECT * FROM personagem WHERE mediarank = '$ordemRank1'");
$dadosRanking1 = mysql_fetch_array($buscaRanking1);
$rankingn1 = $dadosRanking1['nome'];
$rankingp1 = $dadosRanking1['mediarank'];
$rankingu1 = $dadosRanking1['usuarioid'];
$rankingid1 = $dadosRanking1['personagemid']; //Adicionei isso
//Ranking 2
$ordemRank2 = mysql_result($buscaRanking, 1);
$buscaRanking2 = mysql_query("SELECT * FROM personagem WHERE mediarank = '$ordemRank2' AND personagemid != '$rankingid1'");
$dadosRanking2 = mysql_fetch_array($buscaRanking2);
$rankingn2 = $dadosRanking2['nome'];
$rankingp2 = $dadosRanking2['mediarank'];
$rankingu2 = $dadosRanking2['usuarioid'];
$rankingid2 = $dadosRanking2['personagemid']; //Adicionei isso
//Ranking 3
$ordemRank3 = mysql_result($buscaRanking, 2);
$buscaRanking3 = mysql_query("SELECT * FROM personagem WHERE mediarank = '$ordemRank3' AND personagemid != '$rankingid2'");
$dadosRanking3 = mysql_fetch_array($buscaRanking3);
$rankingn3 = $dadosRanking3['nome'];
$rankingp3 = $dadosRanking3['mediarank'];
$rankingu3 = $dadosRanking3['usuarioid'];
?>

coloquei um AND pra verificar o maior valor com um id diferente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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