Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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>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 ?
Esta parte não sei , não conheço php.
>
Agora, Motta disse:
Esta parte não sei , não conheço php.
Certo qual tipo de dados posso usar no banco? date? varchar
Sempre que trabalhar com datas é melhor usar DATE.
Ou use datetime caso queira salvar o horário também, aí só usar o between como o Motta disse
>
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 ?
>
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()***>
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...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'];Galera Resolvido,
Muito Obrigado a todos..... um forte abraço...
tente
DataVenda between '$dataini' and '$datafim'