Ir para conteúdo
Fórum Script Brasil
  • 0

Ranking Com Php


fsphp

Pergunta

Oi pessoal,

Estou tentando fazer um ranking de pontos e tenho algumas dúvidas. Como esse ranking vai acumular pontos, como eu faço para que, no formulário que insere os pontos, os novos pontos inseridos venham a somar com os que já estão na tabela?

Exemplo: João tem 100 pontos e agora conseguiu mais 25 pontos. Como é que o formulário que insere os pontos na tabela vai fazer com que sejam somados os 25 novos pontos com os 100 já existentes, mostrando depois, na consulta do ranking 125 pontos?

E também, como eu faço para, na hora que eu for visualizar o ranking, apareça os números de colocação, tipo 1º, 2º, 3º ....?

Obrigado,

FS

Link para o comentário
Compartilhar em outros sites

19 respostass a esta questão

Posts Recomendados

  • 0

O lance dos pontos, você pode fazer da seguinte maneira (vou te dizer o caminho das pedras): faça uma consulta no banco de dados, capture o valor do João e depois some os 25 pontos com o valor que foi capturado, jogue a soma em uma variável e depois altere no banco de dados pelo novo valor.

Ex:

$pontuacao = $pontos_bd + $pontos_novos;

Altera no banco de dados utilizando a variável $pontuacao.

Agora sobre o ranking, você pode fazer uma consulta no banco de dados e mandar ordenar pela pontuação crescente das pessoas.

Dê uma pesquisada sobre comandos de banco de dados porque isso não é tão difícil não...

Belê?

Qualquer coisa é só gritar!

dry.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Uma solução um pouco mais "facil", pois te impedirá de mexer no código todo, só vai mexer na query...

Utilize assim na query:

SELECT <id_do peão>,SUM(<pontos>), from <sua_tabela> WHERE.....
ORDER BY <pontos> DESC.

A funcao SUM() faz a soma do campo que você colocou entre os parenteses (o ideal é que esse campo seja numerico)

O ORDER BY acho que você já deve conhecer e o DESC é para ordenar descendente(decrescente).

Espero ter ajudado.

Até+

cool.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Fiz assim e não deu certo:

<?php

$hostname = "localhost";

$user = "root";

$password = "";

$database = "muralcultural";

$conecta = mysql_connect($hostname, $user);

$resultado = mysql_select_db($database, $conecta);

$pontos_bd = mysql_query("SELECT (pontos) FROM ycom_rank_vendas WHERE (nome='$nome')");

$pontuacao = $pontos_bd + $pontos;

mysql_query("INSERT INTO ycom_rank_vendas (pontos) WHERE (nome='$nome') VALUE ('$pontuacao')") or die("Não foi possível inserir os novos pontos!");

echo "Registro efetuado com sucesso!";

?>

O que está errado?

Obrigado pessoal,

FS

Link para o comentário
Compartilhar em outros sites

  • 0

Cade a declaração da variável $pontos ? biggrin.gif

Voce tem que criar um formulário pra capturar a variavel pontos...

daih você passa (via GET ou POST) o número de pontos pra $pontos no script de ação do formulário, e lá mesmo bota o comando pra somar com os pontos q já estão no BD.

Abraços.

Link para o comentário
Compartilhar em outros sites

  • 0

Já tenho o formulário:

    <td><form name="form1" method="post" action="http://localhost/1muralcultural/yc_insere_pontos.php">

        Nome:

        <input name="nome" type="text" id="nome" size="40" maxlength="50">

        <br>

        Pontos:

        <input name="pontos" type="text" id="pontos" size="7" maxlength="7">

        <br>

        <input name="enviar" type="submit" id="enviar" value="ENVIAR">

        <input name="apagar" type="reset" id="apagar" value="APAGAR">

      </form></td>

Mas não tá funcionando a inserção da pontuação no banco de dados, por isso que eu coloquei só os scripts de inserção.

Link para o comentário
Compartilhar em outros sites

  • 0

Ainda não funcionou corretamente. Quando eu preencho o formulário "fulano" com "100" (número de pontos), o que visualizo no banco de dados é "102".

Daí vou novamente para o formulário, preencho "fulano" com "200", vou no banco de dados e aparece "202". Vou novamente no form, preencho "fulano" com "50" e visualizo "52" no banco de dados.

Ou seja, ele está substituindo o valor anterior pelo valor atual (preenchido no form) e sempre finalizando com um acréscimo de "2".

Os scripts estão assim:

<?php

$hostname = "localhost";

$user = "root";

$password = "";

$database = "muralcultural";

$conecta = mysql_connect($hostname, $user);

$resultado = mysql_select_db($database, $conecta);

$pontos_bd = mysql_query("SELECT pontos FROM ycom_rank_vendas WHERE nome='$nome'");

$pontuacao = $pontos_bd + $pontos;

mysql_query("UPDATE ycom_rank_vendas SET pontos='$pontuacao' WHERE nome='$nome'") or die("Não foi possível inserir os novos pontos!");

echo "Registro efetuado com sucesso!";

?>

Aonde é que está o erro? sad.gif

Obrigado pessoal,

FS

Link para o comentário
Compartilhar em outros sites

  • 0

Coloquei assim, mas também não funfou!

<?php

$hostname = "localhost";

$user = "root";

$password = "";

$database = "muralcultural";

$conecta = mysql_connect($hostname, $user);

$resultado = mysql_select_db($database, $conecta);

$pontos_bd = mysql_query("SELECT pontos FROM ycom_rank_vendas WHERE nome='$nome'");

$pontuacao = mysql_query($pontos_bd, $conecta);

mysql_query("UPDATE ycom_rank_vendas SET pontos='$pontuacao' WHERE nome='$nome'") or die("Não foi possível inserir os novos pontos!");

echo "Registro efetuado com sucesso!";

?>

Link para o comentário
Compartilhar em outros sites

  • 0

Agora fiz assim mas não tá atualizando, apenas substituindo o valor anterior.

<?php

$hostname = "localhost";

$user = "root";

$password = "";

$database = "muralcultural";

$conecta = mysql_connect($hostname, $user);

$resultado = mysql_select_db($database, $conecta);

$pontos_bd = mysql_query("SELECT pontos FROM ycom_rank_vendas WHERE nome='$nome'");

echo "No banco de dados o $nome tem $pontos_bd !<br>";

$pontuacao = $pontos_bd + $pontos;

echo "Agora o $nome tem $pontuacao<br>";

if($pontuacao>$pontos_bd)

{

mysql_query("UPDATE INTO ycom_rank_vendas WHERE nome=$nome VALUE pontos=$pontuacao");

echo "Soma atualizada";

}

else

{

echo "Não deu para atualizar a soma!";

}

?>

E aí pessoal, que pode dar um help aí?

Obrigado,

FS

Link para o comentário
Compartilhar em outros sites

  • 0

Daonde ta vindo a $nome? você esta usando o register_globals = on?

deixa em off ,bem melhor de se trabalhar o register_globals = on deixou de ser usado por motivos de segurança e ficou obsoleto

e arrume isso também:

mysql_query("UPDATE INTO ycom_rank_vendas WHERE nome='$nome' VALUE pontos='$pontuacao'");
Link para o comentário
Compartilhar em outros sites

  • 0
Coloquei assim, mas também não funfou!

<?php

$hostname = "localhost";

$user = "root";

$password = "";

$database = "muralcultural";

$conecta = mysql_connect($hostname, $user);

$resultado = mysql_select_db($database, $conecta);

$pontos_bd = mysql_query("SELECT pontos FROM ycom_rank_vendas WHERE nome='$nome'");

$pontuacao = mysql_query($pontos_bd, $conecta);

mysql_query("UPDATE ycom_rank_vendas SET pontos='$pontuacao' WHERE nome='$nome'") or die("Não foi possível inserir os novos pontos!");

echo "Registro efetuado com sucesso!";

?>

será q não está faltando a senha para conectar no mysql ??

hehehe wink.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Estou fazendo o passo a passo com o "echo", como sugeriu o error404 no outro tópico e, quando preenchi o form para inserir os pontos, colocando nome=joao e pontos=10, e ainda, considerando que tenho 5 pontos no banco de dados, a consulta retornou o seguinte:

joao tem Resource id#2

O que é esse "Resource id#2"??

Vejam como estou começando minha consulta:

<?php

$hostname = "localhost";

$user = "root";

$password = "";

$database = "muralcultural";

$conecta = mysql_connect($hostname, $user);

$resultado = mysql_select_db($database, $conecta);

$pontos_bd = mysql_query("SELECT pontos FROM ycom_rank_vendas WHERE nome='$nome'");

echo "$nome tem $pontos_bd";

?>

Obrigado,

FS

Link para o comentário
Compartilhar em outros sites

  • 0

fernando_sanchez, pelo que entendi, você está passando pelo formulário o nome e os pontos, sendo que essa pontuação será adicionada com a pontuação que já estiver no banco de dados do nome que você digitou, é isso? se for, tente isso aqui pra ver o que acontece:

<?php
//Recebe o nome e os pontos vindo do formulário
$nome = $_POST["nome"];
$pontos = $_POST["pontos"];

$hostname = "localhost";
$user = "root";
$password = "";
$database = "muralcultural";

$conecta = mysql_connect("$hostname","$user","$password");
$resultado = mysql_select_db("$database", $conecta);

$consulta = mysql_query("SELECT pontos FROM ycom_rank_vendas WHERE nome='$nome'");
$resultado_2 = mysql_query($consulta) or die("Erro 1!");
$linha = mysql_fetch_assoc($resultado_2);
$pontos_bd = $linha["pontos"]; // captura a pontuacao da tabela (do $nome)

$pontuacao = $pontos + $pontos_bd;

$altera = "UPDATE ycom_rank_vendas SET pontos = '$pontuacao'
             WHERE nome = '$nome'";
$resultado_3 = mysql_query($altera)
  or die("Erro 2!");
echo "<b>Registro efetuado com sucesso!</b>";

?>

Qualquer problema diz aí!

Link para o comentário
Compartilhar em outros sites

  • 0

Não deu, apareceu: "Erro 1".

Mas, me passaram de uma forma que rodou bem:

<?php

$hostname = "localhost";

$user = "root";

$database = "muralcultural";

$conecta = mysql_connect($hostname, $user);

$resultado = mysql_select_db($database, $conecta);

$pontos_bd = mysql_query("SELECT pontos FROM ycom_rank_vendas WHERE nome='$nome'");

$result = mysql_fetch_object($pontos_bd);

echo "No banco de dados o $nome tem $result->pontos !<br>";

$pontuacao = $result->pontos + $pontos;

echo "Agora o $nome tem $pontuacao<br>";

if($pontuacao>$result->pontos)

{

mysql_query("UPDATE ycom_rank_vendas SET pontos=$pontuacao WHERE nome=$nome");

echo "Soma atualizada";

}

else

{

echo "Não deu para atualizar a soma!";

}

?>

Obrigado a todos,

FS

Link para o comentário
Compartilhar em outros sites

  • 0

Se voce quiser tentar isso, talvez reduza a quantidade de vezes que você conecta o banco....

Resolveria numa query só com essa sintaxe:

mysql_query("UPDATE ycom_rank_vendas SET pontos=pontos+".$pontos." WHERE nome=$nome");

Entenda que:

pontos(sem $) é o valor do campo da tabela e

$ponto e a nova pontuação para soma....

Testa aí.... quem sabe não fica mais rápido...

Até +

cool.gif

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...