Ir para conteúdo

Arquivado

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

  • 0
mambrogezzi

Não Soma por filtro (SQL)

Pergunta

Olá meus amigos estou com uma dificuldade que assombra meu projeto!

 

Tenho um campo onde o usuario informa a data inicial e a datafinal, e traz a soma das vendas desse periodo porem não achei o codigo correto ele até soma porem vem informações indevida , só soma as vendas da primeira e ultima data informada.... :(

 

Abaixo meu codigo,

 

 

<?php


$con=mysqli_connect("localhost","root","","cadastro");

// VERIFICA A LIGAÇÃO NÃO TEM ERROS
if (mysqli_connect_errno())
{
    // CASO TENHA ERROS MOSTRA O ERRO DE LIGAÇÃO À BASE DE DADOS
    echo "Falha ao Conectar ao Banco de Dados!: " . mysqli_connect_error();
}


    $dataini = $_POST['dataini'];
    $datafim = $_POST['datafim'];

     $dataini = str_replace('/','',str_replace('/','',$dataini));
     $datafim = str_replace('/','',str_replace('/','',$datafim));


    $soma = "SELECT SUM(Valor) AS total FROM venda WHERE DataVenda >= '$dataini' and DataVenda <='$datafim'";
    $resultado = mysqli_query($con,$soma);
    $registro = mysqli_fetch_assoc($resultado);
    $res = $registro['total'];

    

    echo "<h4 id='titulo_pg_soma_filtro'>Total de Vendas No Período de $dataini a $datafim</h4>"; echo "<br/>";
    
    echo  "R$:".number_format($res, "2",".",".");


?>
<div id="lg_pg_soma_filtro"><img src="Css/lgcon.png"/> </div>

<a class="btnmenu_soma_filtro" href="inclusao_venda.html">Voltar ao Menu</a>
<a class="btnnovaconsulta_soma_filtro" href="filtrodevendas.html">Nova Consulta</a>
</body>
<div class="rodape">

</div>
</HTML>

Compartilhar este post


Link para o post
Compartilhar em outros sites

11 respostas a esta questão

Recommended Posts

tente

 

DataVenda between '$dataini' and  '$datafim' 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais uma pergunta como uso os campos no mysql? estou usando numeros e tiro as barras quando lanço ex:   21/01/2017 lança como 21012017 porem quando lanço o 01/05/2017 ele tira o 0 e fica 1052017 ?

Compartilhar este post


Link para o post
Compartilhar em outros sites
Agora, Mateus Silva disse:

Ou use datetime caso queira salvar o horário também, aí só usar o between como o Motta disse

Certo porem as datas são invertidas correto? voiu ter que  colocar invertidas tbm no php ?

Compartilhar este post


Link para o post
Compartilhar em outros sites
Agora, mambrogezzi disse:

Certo porem as datas são invertidas correto? voiu ter que  colocar invertidas tbm no php ?

Não é que são invertidas, campos date/datetime seguem o padrão americano ano-mês-dia hora:minuto:segundo.

No php você só precisa formatar, bem simples:

$data_banco = '2017-09-08 17:07:00';
$data_formatada = date('d/m/Y H:i:s', strtotime($data_banco));
echo $data_formatada;

Ou seja: você seta o formato no date e passa a data do banco no formato americano dentro da função strtotime()

Compartilhar este post


Link para o post
Compartilhar em outros sites
18 horas atrás, Mateus Silva disse:

Não é que são invertidas, campos date/datetime seguem o padrão americano ano-mês-dia hora:minuto:segundo.

No php você só precisa formatar, bem simples:


$data_banco = '2017-09-08 17:07:00';
$data_formatada = date('d/m/Y H:i:s', strtotime($data_banco));
echo $data_formatada;

Ou seja: você seta o formato no date e passa a data do banco no formato americano dentro da função strtotime()

 

 

Muito Bom resolvi 90% com sua dica porem algumas datas quando lançei 15/09/2017 e  ficou 1970-01-01, eu nao uso H:i:s apenas tirei da formatação correto, e uso o padrão DATE no Sql...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Me

Em 08/09/2017 at 17:08, Mateus Silva disse:

Não é que são invertidas, campos date/datetime seguem o padrão americano ano-mês-dia hora:minuto:segundo.

No php você só precisa formatar, bem simples:


$data_banco = '2017-09-08 17:07:00';
$data_formatada = date('d/m/Y H:i:s', strtotime($data_banco));
echo $data_formatada;

Ou seja: você seta o formato no date e passa a data do banco no formato americano dentro da função strtotime()

 

Essa é o comando da busca onde ele tem que somar as vendas dos periodos informados esta correto?

 

$dataini = $_POST['dataini'];
$datafim = $_POST['datafim'];

$dataini_formatada = date('Y/d/m', strtotime($dataini));
$datafim_formatada = date('Y/d/m', strtotime($datafim));


$soma = "SELECT SUM(Valor) AS total FROM venda WHERE DataVenda between '$dataini_formatada' and  '$datafim_formatada' ";
$resultado = mysqli_query($con,$soma);
$registro = mysqli_fetch_assoc($resultado);
$res = $registro['total'];

 

 

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.