Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

leonardonobre

[RESOLVIDO] incremento de valores de produtos e mostrar por mês.

Recommended Posts

Ola a todos,

gostaria de uma lógica para o seguinte problema. Agradeço à ajuda deste já.

 

Bom, tenho uma tabela de pedidos, com a respectiva dada do pedido e o seu valor.

 

Ex.

 

id_pedido | data_pedido | valor_pedido

1 28/02/2007 20.00

2 29/02/2007 10.00

3 30/02/2007 10.00

4 01/03/2007 20.00

5 02/03/2007 10.00

6 03/03/2007 11.00

 

Bom, gostaria de exibir a somatório dos valores com os respectivos dias, da seguinte maneira:

 

1º Mês | 02 | 40.00

2º Mês | 03 | 41.00

 

Isso que gostaria de fazer. Fiz um código, que não esta funcionando completamente:

 

$qrypedido = mysql_query("SELECT * FROM						  tbl_pedido,						  tbl_pedido_itens						  WHERE						  tbl_pedido.id_usuario='" . $_SESSION['sessao_id_usuario'] . "'						  and						  tbl_pedido_itens.id_pedido = tbl_pedido.id_pedprods						  ORDER BY tbl_pedido.data_pedido						  desc 						  ") or die("Não foi possível");$x = 1;						  while ($rowpedido = mysql_fetch_array($qrypedido)){$qtn_prod = $rowpedido["qtd"];$valor_prod = $rowpedido["valor"];$total_valor = ($valor_prod)*($qtn_prod);$periodo = ceil($rowpedido["periodo"]/30);$data_pedido = $rowpedido["data_pedido"];$mes_pedido = explode("/",$data_pedido);$valor = $valor + $total_valor;		if(date("m", time()) <> $mes_pedido[1])		{			$x++;		}		$mes_anterior = $mes_pedido[1];		for($i=0;$i<$x;$i++)		{				echo '<tr bgcolor="#e5e5e5">';					echo "<td width=173 class=texto>  ".$x."º Mês(".$mes_pedido[1].")</td>";						echo "<td width=173 class=texto>  R$ " . number_format($valor, 2, ',', '.') . "</td>";					echo "<td width=100 class=texto>  0</td>";				echo '</tr>';		}}

 

Bom, ficaria grato por uma luz.

Desde já agradeço a atenção,

Léo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem antes de mais nada a modelagem do seu db.. o campo "data_pedido" por acaso ele é um date, datetime ? pois se for ai você tem como criar na propria consulta SQL o esquema para varrer isso que você quer. pois o que você iria fazer.. você iria agrupar as datas depois iria dar um sum(valor_pedido) ;

 

Ex: mais ou menos:

# SQLSELECT sum(valor_pedido) as valor_total , DATE_FORMAT(data_pedido,"%m/%Y") as mes_ano , MONTH(data_pedido) as dt_mesFROM	pedidosGROUP BY	dt_mesORDER BY	mes_ano DESC

Retorna

valot_total || mes_ano || dt_mes11.00	  || 02/2005	|| 02.....

;) eu fiz até o teste aqui e retorno como você quiz =D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, valeu Lion, valeu mesmo!Vou tentar esta dica que você me passou.O campo esta como varchar mesmo, pois ele formatada na forma americana.Vou tentar isso, logo retorno.Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

se tiver como VarChar num vai rola.. pois tem que ser campo DATE, DATETIME ou TIMESTAMP beleza? ve isso ae.. se não num vai funfa ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

É isso mesmo Lion, tem que ser timestam, date ou datetime... ruim que dependendo de como é o banco de dados, vou ter que mudar na proramação a maneira que trabalho com este campo, devido a seu formato.Esta tentando realizar esta tarefa sem a utilização do SQL. Mas acho que é quebrar a cabeça a toa.rsBom, mais uma vez, obrigado Lion.t+

se tiver como VarChar num vai rola.. pois tem que ser campo DATE, DATETIME ou TIMESTAMP beleza? ve isso ae.. se não num vai funfa ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.