Jump to content


Photo

Somar Valores Em Um Campo Da Tabela


  • Faça o login para participar
26 replies to this topic

#1 xulambs

xulambs

    12 Horas

  • Usuários
  • 162 posts
  • Sexo:Masculino

Posted 27/06/2008, 12:15

Bom galera, boa tarde.

estou com um sistema pronto que abre os valores que eu cadastrei, o campo da tabela chama ponto. Só que agora estou precisando que some os os pontos que estão neste campo.

tentei criar um código para somar, mas não está dando certo.

Peço ajuda..

o que está errado nesse código, já tentei vario select:

<? 
include="conectar.php";

$sql= "SELECT sum(campo) FROM ranking WHERE ponto = '$ponto'";


//Executando $sql
$resultado = mysql_query($sql)

//Mensagem de erro
or die ("Não foi possível realizar a consulta ao banco de dados<a href=java script:history.back()>VOLTAR");
while ($linha=mysql_fetch_array($resultado)) {

$ponto = $linha["ponto"];

echo "$ponto";

}

?>


#2 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

  • Usuários
  • 1559 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR
  • Interesses:PostgreSQL - PHP

Posted 27/06/2008, 13:04

Ok! Mas qual é o problema?
Se ele simplesmente não estiver imprimindo, vc tem q dar um nome para a coluna:
$sql= "SELECT sum(campo) AS ponto FROM ranking WHERE ponto = '$ponto'";


#3 xulambs

xulambs

    12 Horas

  • Usuários
  • 162 posts
  • Sexo:Masculino

Posted 27/06/2008, 13:36

boirock,

coloque essa modificação sua, mas nada adiantou.

o erro que mostra é esse, que tem logo abaixo no códgo "$resultado = mysql_query($sql)" onde começa or die

Não foi possível realizar a consulta ao banco de dados

No mysql as tabelas estão criadas assim:

---------//-----------

Nome da tabela:

01

Nome dos campos:

id - int 3
data - varchar 10
ponto - varchar 10


------//---------

Será que pode ter algum erro no banco.

Por favor, me ajuda. Fico no aguardo...

Lúcio Marques

Edição feita por: xulambs, 27/06/2008, 14:36.


#4 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

  • Usuários
  • 1559 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR
  • Interesses:PostgreSQL - PHP

Posted 27/06/2008, 15:05

Velhinho, troca esse die() por um die(mysql_error())

Referência: http://br.php.net/ma...mysql-error.php

Daí cola aqui o q tá pegando...

Aliás, eu notei outra coisa: no WHERE vc trata o campo ponto como string, mas usa ele no SUM como se fosse um inteiro. Afinal, qual éo tipo do campo ponto?

=======

Acabei de ver que seu campo ponto é varchar.
Primeiro: o que você faria se alguém pedisse pra vc somar duas palavras, "lua" e "maçã", por exemplo... vc diria que não dá né? Pq vc só pode somar números.
Então, vc está pedindo para o PC somar dois textos, pq seu campo ponto é do tipo varchar.
Você pode corrigir isso de duas formas diferentes:
correto: altere seu campo para um tipo numérico
gambiarra: faça algo parecido com isso: SELECT SUM(pontos::int4) FROM tabela , onde você dá um CAST no campo pontos, passando para inteiro. Mas é gambiarrada grossa, nesse caso.

Segunda coisa: porque asua query está SUM(campo) e não SUM(pontos)?
Pelo modelo que você mostrou, vc não tem nenhuma coluna chamada "campo" nessa tabela. Certo?

Edição feita por: boirock, 27/06/2008, 14:50.


#5 xulambs

xulambs

    12 Horas

  • Usuários
  • 162 posts
  • Sexo:Masculino

Posted 27/06/2008, 16:18

qual tipo numero que eu podeira alterar?

Amigo boirock.

qual tipo numero que eu podeira colocar?

eu coloquei decimal, mas eu queria que não ficasse virgula.

O erro que está dando é esse:
Parse error: syntax error, unexpected T_EXIT in /home/cultiva/public_html/ranking_igam/index.php on line 9

a linha nove é onde fica esse código no código abaixo:
die ("Não foi possível realizar a consulta ao banco de dados<a href=java script:history.back()>VOLTAR");


Assim deixo meu código completo para vc dá uma olhada:

no mysql:

nome da tabela:
01

nome dos campos:

id - int
data - varchar
ponto - decimal

Agora o código pra mostrar a soma dos números:

<? include"conectar.php";

$sql= "SELECT sum(ponto) AS ponto FROM `01` WHERE ponto = '$ponto'";

//Executando 
$resultado = mysql_query($sql)

//Mensagem de erroor 
die ("Não foi possível realizar a consulta ao banco de dados<a href=java script:history.back()>VOLTAR");

while ($linha=mysql_fetch_array($resultado)) {

$ponto = $linha["ponto"];

echo "$ponto";}

?>


Acho que ficou bem explicado agora...


Lúcio


Velhinho, troca esse die() por um die(mysql_error())

Referência: http://br.php.net/ma...mysql-error.php

Daí cola aqui o q tá pegando...

Aliás, eu notei outra coisa: no WHERE vc trata o campo ponto como string, mas usa ele no SUM como se fosse um inteiro. Afinal, qual éo tipo do campo ponto?

=======

Acabei de ver que seu campo ponto é varchar.
Primeiro: o que você faria se alguém pedisse pra vc somar duas palavras, "lua" e "maçã", por exemplo... vc diria que não dá né? Pq vc só pode somar números.
Então, vc está pedindo para o PC somar dois textos, pq seu campo ponto é do tipo varchar.
Você pode corrigir isso de duas formas diferentes:
correto: altere seu campo para um tipo numérico
gambiarra: faça algo parecido com isso: SELECT SUM(pontos::int4) FROM tabela , onde você dá um CAST no campo pontos, passando para inteiro. Mas é gambiarrada grossa, nesse caso.

Segunda coisa: porque asua query está SUM(campo) e não SUM(pontos)?
Pelo modelo que você mostrou, vc não tem nenhuma coluna chamada "campo" nessa tabela. Certo?


Sobre essa mensagem que vc pediu para eu trocar "Velhinho, troca esse die() por um die(mysql_error())"

o erro é esse abaixo:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* FROM `01` WHERE ponto = ''' at line 1



Velhinho, troca esse die() por um die(mysql_error())

Referência: http://br.php.net/ma...mysql-error.php

Daí cola aqui o q tá pegando...

Aliás, eu notei outra coisa: no WHERE vc trata o campo ponto como string, mas usa ele no SUM como se fosse um inteiro. Afinal, qual éo tipo do campo ponto?

=======

Acabei de ver que seu campo ponto é varchar.
Primeiro: o que você faria se alguém pedisse pra vc somar duas palavras, "lua" e "maçã", por exemplo... vc diria que não dá né? Pq vc só pode somar números.
Então, vc está pedindo para o PC somar dois textos, pq seu campo ponto é do tipo varchar.
Você pode corrigir isso de duas formas diferentes:
correto: altere seu campo para um tipo numérico
gambiarra: faça algo parecido com isso: SELECT SUM(pontos::int4) FROM tabela , onde você dá um CAST no campo pontos, passando para inteiro. Mas é gambiarrada grossa, nesse caso.

Segunda coisa: porque asua query está SUM(campo) e não SUM(pontos)?
Pelo modelo que você mostrou, vc não tem nenhuma coluna chamada "campo" nessa tabela. Certo?


Edição feita por: xulambs, 27/06/2008, 16:04.


#6 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

  • Usuários
  • 1559 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR
  • Interesses:PostgreSQL - PHP

Posted 27/06/2008, 16:40

Para números inteiros vc usa integer.

Cara... pq o nome da sua tabela é 01?

Quanto ao seu WHERE: se o seu campo é de tipo numérico, não use ''... Aspas são para strings. Números dentro de aspas passam a ser strings.
Tente WHERE ponto = $ponto

Outra coisa é que $ponto está vazia, ao que parece...

Uma dica: sempre faça a query direto no banco de dados primeiro (usando PHPMyAdmin, por exemplo). Economiza muito tempo e fios de cabelo branco.
Se funcionar lá, já fica mais fácil. (y)

#7 xulambs

xulambs

    12 Horas

  • Usuários
  • 162 posts
  • Sexo:Masculino

Posted 27/06/2008, 16:54

boirock,

eu não achei essa opção integer.


Para números inteiros vc usa integer.

Cara... pq o nome da sua tabela é 01?

Quanto ao seu WHERE: se o seu campo é de tipo numérico, não use ''... Aspas são para strings. Números dentro de aspas passam a ser strings.
Tente WHERE ponto = $ponto

Outra coisa é que $ponto está vazia, ao que parece...

Uma dica: sempre faça a query direto no banco de dados primeiro (usando PHPMyAdmin, por exemplo). Economiza muito tempo e fios de cabelo branco.
Se funcionar lá, já fica mais fácil. (y)



#8 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

  • Usuários
  • 1559 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR
  • Interesses:PostgreSQL - PHP

Posted 27/06/2008, 17:08

inteiro, int...
Veja aqui: http://dev.mysql.com...eric-types.html

#9 xulambs

xulambs

    12 Horas

  • Usuários
  • 162 posts
  • Sexo:Masculino

Posted 27/06/2008, 17:13

coloquei int,

mas o erro continua

não sei mais o que fazer.

quando peço para mostrar todos os numeros cadastrados, mostra normalmente.


inteiro, int...
Veja aqui: http://dev.mysql.com...eric-types.html



#10 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

  • Usuários
  • 1559 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR
  • Interesses:PostgreSQL - PHP

Posted 27/06/2008, 17:25

Mostra aí a query q vc colocou no PHPMyAdmin

#11 xulambs

xulambs

    12 Horas

  • Usuários
  • 162 posts
  • Sexo:Masculino

Posted 27/06/2008, 17:40

<?
$con = mysql_connect("localhost", "user", "senha") or die ("erro na conexão");
$bd = mysql_select_db("cul", $con)or die("erro na seleção");


?>

Olha o erro que dá:

http://www.cultiva.o...r/ranking_igam/



Mostra aí a query q vc colocou no PHPMyAdmin


Eu coloquei assim e ficou branco.

<? include"acesso.php";


$sql= "SELECT SUM(ponto) as soma FROM `01`";

//Executando 
$resultado = mysql_query($sql) or die(mysql_error());

while ($linha=mysql_fetch_array($resultado)) {

$ponto = $linha["ponto"];

echo "$ponto";
}

?>


Mostra aí a query q vc colocou no PHPMyAdmin


Edição feita por: xulambs, 27/06/2008, 17:33.


#12 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

  • Usuários
  • 1559 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR
  • Interesses:PostgreSQL - PHP

Posted 27/06/2008, 17:42

Não cara, a query...
antes de mysql_query(); coloca isso aqui:
echo $sql;

Eu tô achando muito estranha essa parada... pelo seu erro (You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* FROM `01` WHERE ponto = ''' at line 1), vc teria um * an query. Mas não tem... tem???

#13 xulambs

xulambs

    12 Horas

  • Usuários
  • 162 posts
  • Sexo:Masculino

Posted 30/06/2008, 15:15

Amigo Boirock, intalei um servidor meu pc para ficar mais fácil, assim se vc puder me ajudar.

fico grato.

vc tinha pedido para eu colocar essa opção:

echo $sql;

mas o erro que deu foi esse. Vê se ajuda em algo e me da uma boa notícia.

SELECT SUM(ponto) AS ponto FROM ranking_igam WHERE ponto = You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Há, se vc tiver algum código que funcione fazendo essa soma no banco de dados, gostaria se teria como vc me enviar, não é que estou com preguiça de pensar mais, é que já fiz de tudo e não sei mais o que fazer, como sou um pouco leigo, acho que isso me ajudaria muito. posso comparar os códigos e ver o que está acontecendo.

muito obrigado e desculpa o problemão que estou te dando.

Lúcio Marques




Não cara, a query...
antes de mysql_query(); coloca isso aqui:

echo $sql;

Eu tô achando muito estranha essa parada... pelo seu erro (You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* FROM `01` WHERE ponto = ''' at line 1), vc teria um * an query. Mas não tem... tem???



#14 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

  • Usuários
  • 1559 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR
  • Interesses:PostgreSQL - PHP

Posted 30/06/2008, 15:44

xulmabs, esquenta não! Estamos aqui pra isso... uma mão lava as outras :D
Bora...
SELECT SUM(ponto) AS ponto FROM ranking_igam WHERE ponto =

Quando você faz WHERE ponto = $ponto , a variável $ponto tem que estar preenchida! Caso contrário o PHP vai montar a query... e WHERE ponto = NADA vai retornar erro mesmo!
tem que ser WHERE ponto = ALGUM VALOR VÁLIDO.
Ok?

#15 xulambs

xulambs

    12 Horas

  • Usuários
  • 162 posts
  • Sexo:Masculino

Posted 30/06/2008, 16:11

vc quer dizer preenchidono banco de dados no campo ponto.?


xulmabs, esquenta não! Estamos aqui pra isso... uma mão lava as outras :D
Bora...
SELECT SUM(ponto) AS ponto FROM ranking_igam WHERE ponto =

Quando você faz WHERE ponto = $ponto , a variável $ponto tem que estar preenchida! Caso contrário o PHP vai montar a query... e WHERE ponto = NADA vai retornar erro mesmo!
tem que ser WHERE ponto = ALGUM VALOR VÁLIDO.
Ok?






1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq