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

Ajuda em PHP


LucasFla1

Pergunta

Olá pessoal, estou precisando de ajuda. Estou desenvolvendo um sistema de registro, uma tabela que lista todos os valores de um produto e no final apresenta o valor total. A questão é que esse relatório de valores tem que ser gerado diariamente. Usei o SELECT SUM para poder receber o valor desse resultado o problema é que ele faz uma consulta em todoa tabela independente da data, mostrando assim o resultado total e não apenas dos produtos cadastrados naquele dia.

Segue o código.

$total = mysql_query ("SELECT SUM(valor) AS somas FROM reserva") or die ("Retorno vazio");
while ($somando = mysql_fetch_array($total)){


$total_numero = $somando ['somas']; 
}

echo $total_numero;

Eu consegui listar os produtos cadastrados por data, mas o valor não funciona:

Código completo:

<?php

    include "../../conexao/conecta_mysql.inc";
	if(isset($_GET["ordem"]))
        $ordem = $_GET["ordem"];
	else
  	$ordem = "nome";
	$sql = "SELECT * FROM reserva ORDER BY $ordem ";
	$res = mysql_query($sql);

 $total = mysql_query ("SELECT SUM(valor) AS somas FROM reserva") or die ("Retorno vazio");
while ($somando = mysql_fetch_array($total)){


$total_numero = $somando ['somas']; 
}

echo $total_numero;


function formata_data($data)
{

 $data = explode("-", $data);

 $data = $data[2]."/".$data[1]."/".$data[0];

 return $data;
}

    while($registro=mysql_fetch_row($res))
    {
     $cod=$registro[0];
     $nome=$registro[1];
     $valor=$registro[2];
	 $horario=$registro[3];
     $data=$registro[4];
     $equipamento=$registro[5];
	   $observacao=$registro[6];
		    $cliente=$registro[7];
        $data1 = date("Y-m-d");
        if ($data==$data1){

        echo "<tr>";
		
		echo "<td width='5%' bgcolor='#FFF5E6'>$valor</td>";
		echo "<td width='10%' bgcolor='#FFF5E6'>$horario</td>";
        echo "<td width='10%' bgcolor='#FFF5E6'>";

        echo formata_data($data);
        echo "</td><td width='15%' bgcolor='#FFF5E6'>$equipamento</td>";
		echo "<td width='10%' bgcolor='#FFF5E6'>$cliente</td>";
		echo "<td width='10%' bgcolor='#FFF5E6'>$observacao</td>";
       
         echo "</tr>";
	}
    }
	mysql_close($conexao);
?>
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Vi que a listagem faz de uma query diferente e a soma em outra, só que a soma está calculando o total da tabela e não por datas. Sua SQL não poderá conter um WHERE? Exemplo:

SELECT SUM(valor) AS somas FROM reserva WHERE data_cadastro = '20014-07-16'

Nisso você poderá deixar essa query dentro do "while", exemplo:

 ....
.
.
     $horario=$registro[3];
$data=$registro[4];
...
..
.

//alterei aqui
$total = mysql_query ("SELECT SUM(valor) AS somas FROM reserva WHERE data_cadastro = '$data' ") or die ("Retorno vazio");
$somando = mysql_fetch_array($total);
$total_numero = $somando ['somas']; 
echo $total_numero;

   

Acredito que poderá resolver.

Link para o comentário
Compartilhar em outros sites

  • 0

Opa!

Então, ele pode estar retornando vazio por as vezes erro na hora de criar a SQL. Vamos lá:

O campo onde armazena a data em seu MySQL está com o formato DATE, DATETIME ou TIMESTAMP?

A variável $data está recebendo a data em formato "YYYY-MM-DD" corretamente?

Ps: No código que enviei, esqueci de por o while, o certo ficaria assim:

//alterei aqui onde DATA_CADASTRO será o seu campo mysql com a DATA
$total = mysql_query ("SELECT SUM(valor) AS somas FROM reserva WHERE data_cadastro = '$data' ") or die ("Retorno vazio");
while ($somando = mysql_fetch_array($total)){
 $total_numero = $somando ['somas']; 
}
echo $total_numero;

Caso não tenha uma IDE para fazer debug do código, tente testar mudando manualmente a variável $data, exemplo:

//alterei aqui onde DATA_CADASTRO será o seu campo mysql com a DATA

$data = '2014-07-17'; // insira datas que possuirá somas (resultados)

$total = mysql_query ("SELECT SUM(valor) AS somas FROM reserva WHERE data_cadastro = '$data' ") or die ("Retorno vazio");
while ($somando = mysql_fetch_array($total)){
 $total_numero = $somando ['somas']; 
}
echo $total_numero;
Link para o comentário
Compartilhar em outros sites

  • 0

Já consegui resolver o problema:

$total = mysql_query ("SELECT SUM(valor) AS somas FROM reserva where data =curdate() ORDER BY $ordem") or die ("Retorno vazio");
while ($somando = mysql_fetch_array($total)){


$total_numero = $somando ['somas'];
}


echo number_format($total_numero, '2',',','.');


Agradeço a ajuda.

Editado por LucasFla1
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
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...