• 0
Sign in to follow this  
Guest Patrick

Somatorio

Question

Guest Patrick

Oi galera, tranquilo?

Seguinte, eu to precisando fazer um codigo com a somatoria de alguns precos obtidos a partir de um banco de dados com a clausula WHILE.

Tipo assim: Adiciona-se um item com um certo preço em um banco de dados, e logo em seguida eu uso uma query mysql pra poder obter essa informacao do banco de dados e joga-la numa lista usando o while e o mysql_fetch_array. A questao é: Eu preciso fazer um somatorio do preço de todos esses itens adicionados a esta lista, e não sei como por causa que eu uso uma variavel somente existente durante o while(isso esta correto?)

Bom...vou botar uma parte do codigo abaixo

Obrigado de antemao pela resposta!

$y='select * from gar_aux_itemnota as AUX, gar_pecas as P, gar_material as M, gar_fabricante as F where P.idp=AUX.idp and F.id=P.fab and M.id=P.material and AUX.forn='.$f_fornecedor.' and AUX.nfe='.$f_nfe;

$sql=mysql_query($y);

while ($x=mysql_fetch_array($sql)) {

print "<tr>

<th width='40%'>".$x[material].' '.$x[marca].' '.$x[modelo]."</th>

<th width='5%'>".$x[qtd]."</th>

<th width='10%'>".$x[preço]."</th>

<th width='10%'>".$x[preço] * $x[qtd]."</th>

<th width='10%'>".$x[dias]."</th>

<th width='10%'><a href='/entdel.php'>Excluir</a></th>

</tr>";

Share this post


Link to post
Share on other sites

8 answers to this question

Recommended Posts

  • 0

Pelo que eu compreendi você quer fazer a soma do campo preço da sua tabela,

faça o seguinte

fora do while crie uma variavel $total = 0;

e dentro do while faça a soma dentro dela

$total = $total + $x[preço];

E após o while de um print "Total: " . $total;

Edited by Tenshi-san

Share this post


Link to post
Share on other sites
  • 0
Guest Patrick

No caso seria algo parecido com isso...

Eu quero realmente obter o total, mas preciso antes multiplicar pela quantidade de itens que o cliente esta levando. não posso simplesmente somar os valores da tabela, porque eles ainda não estao multiplicados.

E se não fosse abusar demais, eu tenho outra duvida:

Como posso adicionar um valor absoluto a um certo campo? Por exemplo: Preciso que todas as vezes o campo DIAS seja mostrado como RESULTADO + 30. Algo como: você tem 30 dias de garantia, MAIS(+) outros 30 da loja.

Obrigado pelas respostas

Share this post


Link to post
Share on other sites
  • 0

Neste caso, é só dar uma complementada no que o amigo ali em cima escreveu.

fora do while crie uma variavel $total = 0;

e dentro do while faça a soma dentro dela

$total = $total + $x[preço];

$total = $unitario * $quantidade;

$total = $total + $x[preço];

E após o while de um print "Total: " . $total;

Share this post


Link to post
Share on other sites
  • 0
Guest Patrick

Eu consegui de uma maneira semelhante.

Criei o $total fora do while, e dentro dele criei uma variavel $y = $x[preço] * $x[qtd]. Em seguida imprimi a variavel $y onde eu queria, e somei ao total($total = $y + $total) e imprimi-o do lado de fora do while.

Muito obrigado àqueles que ajudaram aqui!

Se puderem esclarecer também a duvida sobre como adicionar 30 à uma outra variavel dentro do while, tambem seria de grande ajuda...

Grato!

Share this post


Link to post
Share on other sites
  • 0
No caso seria algo parecido com isso...

Eu quero realmente obter o total, mas preciso antes multiplicar pela quantidade de itens que o cliente esta levando. não posso simplesmente somar os valores da tabela, porque eles ainda não estao multiplicados.

Eu faria isso na própria SQL:

select *, t1.preço * t1.qtde as total from gar_aux_itemnota as AUX, gar_pecas as P, gar_material as M, gar_fabricante as F where P.idp=AUX.idp and F.id=P.fab and M.id=P.material and AUX.forn='.$f_fornecedor.' and AUX.nfe='.$f_nfe
Assim é criado o campo total, que conterá o prodito entre preço e qtde. ;)
E se não fosse abusar demais, eu tenho outra duvida: Como posso adicionar um valor absoluto a um certo campo? Por exemplo: Preciso que todas as vezes o campo DIAS seja mostrado como RESULTADO + 30. Algo como: você tem 30 dias de garantia, MAIS(+) outros 30 da loja.
Select date_add (data_do_bd, Interval 30 Day) as prazo;

Se você quiser pegar a data do momento em vez da cadastrada no banco, troque "data_do_bd" por Curdate().

http://dev.mysql.com/doc/refman/5.1/en/dat...-functions.html

[]'s

Share this post


Link to post
Share on other sites
  • 0

para data de garantia você pode colocar

$dc_dia = date("d") + 30 ;

$dc_mes = date("m");

$dc_ano = date("Y");

//pega o ultimo dia do mês

$dc_dia_final = date("d", mktime(0, 0, 0, $dc_mes + 1, 0, $dc_ano_selec));

if($dc_dia_final < $dc_dia_final){

$dc_dia = $dc_dia - $dc_dia_final;

$dc_mes = $dc_mes + 1;

}

If($dc_mes =>13){

$dc_mes = 1;

$dc_ano = $dc_ano +1;

}

Share this post


Link to post
Share on other sites
  • 0
para data de garantia você pode colocar
$dc_dia = date("d") + 30 ;

$dc_mes = date("m");

$dc_ano = date("Y");

//pega o ultimo dia do mês

$dc_dia_final = date("d", mktime(0, 0, 0, $dc_mes + 1, 0, $dc_ano_selec));

if($dc_dia_final < $dc_dia_final){

$dc_dia = $dc_dia - $dc_dia_final;

$dc_mes = $dc_mes + 1;

}

If($dc_mes =>13){

$dc_mes = 1;

$dc_ano = $dc_ano +1;

}

Dá para fazer isso em uma linha. :D

//86400 = 60 * 60 * 24 => um dia
echo date ("d/m/Y", strtotime (date ("Y-m-d")) + 30 * 86400);

:rolleyes:

[]'s

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this