Ajuda - Busca - Membros - Calendário
Versão Completa: Somatorio
Fórum Script Brasil > Programação & Desenvolvimento > PHP
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>";
Tenshi-san
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;
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
MLeandroJr!
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;
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!
Beraldo
QUOTE(Patrick @ 27/02/2007 - 09:01) *
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:
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. wink.gif


QUOTE(Patrick @ 27/02/2007 - 09:01) *
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.


SQL
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
Tenshi-san
para data de garantia você pode colocar
QUOTE
$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;
}

Beraldo
QUOTE(Tenshi-san @ 27/02/2007 - 09:31) *
para data de garantia você pode colocar
QUOTE
$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. biggrin.gif

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


rolleyes.gif

[]'s
Tenshi-san
Verdade, xD...
é que eu não sou muito bom com manipulação de data
em nenhuma linguagen.
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2013 Invision Power Services, Inc.