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

Somatorio


Guest Patrick

Pergunta

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>";

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 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.

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

Link para o comentário
Compartilhar em outros 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;

Link para o comentário
Compartilhar em outros sites

  • 0

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!

Link para o comentário
Compartilhar em outros 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

Link para o comentário
Compartilhar em outros 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;

}

Link para o comentário
Compartilhar em outros 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

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
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...