Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
ola
tenho uma pagina que lista o pedido de acordo com o ciclo.
então ele lista o nome do comprador, nome do produto, código, quantidade e valor unitário. porém preciso fazer um valor total por cliente. Se alguem puder me ajudar, desde ja agradeço. A parte do raciocínio para isto esta no final do códio, na ultima coluna.
segue o código:
<?php
include 'conexao.php';
$cicloget = $_GET["ciclo"];
$sql = mysql_query("SELECT * FROM pedidos INNER JOIN clientes INNER JOIN produtos
ON pedidos.id_cliente = clientes.id and pedidos.cod_produto = produtos.cod_produto
WHERE ciclo_ped = '$cicloget';");
$i = 1;
while ($exibe = mysql_fetch_assoc($sql)){
$valor = number_format($exibe['total_ped'], 2, ',', '.');
if (($i % 2) == 1){
$fundo="white";
}else{
$fundo="#E8E8E8";
}
echo "<tr align='center' bgcolor='".$fundo."' >";
echo "<td>" .$exibe['Nome']." - ".$exibe['local']."</td>";
echo "<td>" .$exibe['cod_produto']. "</td>";
echo "<td>" .$exibe['nome_produto']. "</td>";
echo "<td>" .$exibe['quant_ped']. "</td>";
echo "<td>R$ " .$valor. "</td>";
echo "<td>" .$exibe['quite_ped']."</td>";
echo "<td><a href='altera_pedido.php?id=".$exibe['id_ped']."'><img src='imagem/editar.png' width='20' height='20' alt='Editar'></a></td>";
echo "<td><a href='exclui_pedido.php?id=".$exibe['id_ped']."&ciclo=".$cicloget."'><img src='imagem/remover.png' width='20' height='20' alt='Remover'></a></td>";
** $sql2 = mysql_query("SELECT * FROM pedidos WHERE ciclo_ped='$cicloget'");**
$row = mysql_num_rows($sql2);
for($u = 0; $u < $row; $u++){
$total_valor = mysql_query("SELECT SUM(total_ped) FROM pedidos WHERE ciclo_ped = '$cicloget' and id_cliente = '$id_cliente'");
$total_cliente = mysql_fetch_assoc($total_valor);
** echo "<td>".$total_cliente[$u]."</td>";**
}
echo "</tr>";
$i++;
}
?>Olá buda_ctba, tudo bem?
Não sei se entendi direito, mas vamos lá...
Esses pedidos estão no banco de dados? Se sim, ao inserir no banco de dados você colocou o ID do comprador, a quantidade e valor por produto?
Caso tenha feito isso no banco seu problema está resolvido, faça um select trazendo apenas o pedido de determinado usuário e faça a soma através do select ou pelo php.
Caso seu banco não esteja assim, aconselho você a remodelar o banco.
Espero ter ajudado.
>
Olá buda_ctba,
Vamos lá, pelo o que eu entendi você quer fazer a soma por cliente.
Cada linha dessa é um pedido destinto? Cada pedido contém só um produto?
Não entendi muito bem o que você precisa.... Consegue explicar um pouco melhor?
Abraços,
Vitor M. Braga.
cada linha traz o nome do cliente, o produto e o valor unitário dele...porém é uma pagina geral, ou seja, um while que lista todos os clientes, nome do produto e valor unitário, dos pedidos do referido ciclo...
as linhas q estao em negrito foi uma tentativa de somar todos os valores de um cliente, em uma lista no geral...porém ele nao esta me trazendo nenhum resultado.
>
Olá buda_ctba, tudo bem?
Não sei se entendi direito, mas vamos lá...
Esses pedidos estão no banco de dados? Se sim, ao inserir no banco de dados você colocou o ID do comprador, a quantidade e valor por produto?
Caso tenha feito isso no banco seu problema está resolvido, faça um select trazendo apenas o pedido de determinado usuário e faça a soma através do select ou pelo php.
Caso seu banco não esteja assim, aconselho você a remodelar o banco.
Espero ter ajudado.
foi feito esse SELECT SUM com o id do cliente, mas esta trazendo um array, q ao imprimir, fica em branco, não me mostra o resultado
Olá,
voce pode fazer da seguinte forma: Faça uma consulta na sua tabela de clientes para listar todos. No while dessa consulta, faça uma consulta do ciclo por cliente e some os valores necessários.
>
Olá,
voce pode fazer da seguinte forma: Faça uma consulta na sua tabela de clientes para listar todos. No while dessa consulta, faça uma consulta do ciclo por cliente e some os valores necessários.
mas isto foi feito no código, como consta no post a parte final dele!
mas isto foi feito no código, como consta no post a parte final dele!
Confesso que nao olhei o código todo a primeira vez :) mas agora eu analisei melhor...
Vi que na parte em negrito voce faz a consulta na tabela pedidos duas vezes. Acho que não teria a necessidade, poderia fazer assim:
Substitua a parte em negrito por isso:
$total_valor = mysql_query("SELECT * FROM pedidos WHERE ciclo_ped = '$cicloget' and id_cliente = '$id_cliente'");
$valor_total_cliente=0;
while($total_cliente = mysql_fetch_array($total_valor)) {
$valor_total_cliente+=$total_cliente["total_ped"];
}
echo "$valor_total_cliente";Tente mudar o sql para este:
SELECT *,sum(total_ped) as total_cliente FROM pedidos
INNER JOIN clientes
INNER JOIN produtos
ON
pedidos.id_cliente = clientes.id and
pedidos.cod_produto = produtos.cod_produto
WHERE
ciclo_ped = '$cicloget'
GROUP BY pedidos.id_cliente;
Não vi a estrutura das tabelas, mas pelo que entendi acho que isso irá resolver seu problema, usando o GROUP BY pedidos.id_cliente, imprima o valor de "total_cliente" e veja se é isto!
>
Confesso que nao olhei o código todo a primeira vez :) mas agora eu analisei melhor...
Vi que na parte em negrito voce faz a consulta na tabela pedidos duas vezes. Acho que não teria a necessidade, poderia fazer assim:
Substitua a parte em negrito por isso:
$total_valor = mysql_query("SELECT * FROM pedidos WHERE ciclo_ped = '$cicloget' and id_cliente = '$id_cliente'");
$valor_total_cliente=0;
while($total_cliente = mysql_fetch_array($total_valor)) {
$valor_total_cliente+=$total_cliente["total_ped"];
}
echo "$valor_total_cliente";
OPA!! cara tamo quase lá...heheheh....a conta deu certo
o problema agora é que ele repete o total em todas as linhas....tem como dizer o total em uma linha só, e depois pular para o total do outro cliente, e assim por diante??
Esse código era pra fazer isso....
Tente substituir:
echo "$valor_total_cliente";
Por:
echo "<td>$valor_total_cliente</td>";
Se voce precisar de um total geral, voce pode fazer assim:
$total_valor = mysql_query("SELECT * FROM pedidos WHERE ciclo_ped = '$cicloget' and id_cliente = '$id_cliente'");
$valor_total_cliente=0;
while($total_cliente = mysql_fetch_array($total_valor)) {
$valor_total_cliente+=$total_cliente["total_ped"];
}
$valor_geral+=$valor_total_cliente; // Use essa variável para exibir o total geral
echo "<td>$valor_total_cliente</td>";
Olá buda_ctba,
Vamos lá, pelo o que eu entendi você quer fazer a soma por cliente.
Cada linha dessa é um pedido destinto? Cada pedido contém só um produto?
Não entendi muito bem o que você precisa.... Consegue explicar um pouco melhor?
Abraços,
Vitor M. Braga.