consulta entre datas

1. consulta entre datas

Luis Rodrigues
luisrod

(usa Ubuntu)

Enviado em 03/09/2015 - 10:23h

Boa pessoal, preciso de ajuda, tenho uma consulta onde ela me retorna o total por unidade, o que preciso é fazer essa consulta buscar informações entre duas datas. ex datainicio (01/07/2015) e datafim (15/07/2015). já fiz alguns teste mas não consegui. obrigado pela atenção. Segue abaixo a minha consulta funcionando.

$consulta = "SELECT unidade, COUNT(unidade) AS Quantidade FROM sac GROUP BY unidade";

$resultado = mysql_query($consulta); //executar query e pegar resultados

<table border="1" align="center">';

<tr align="center">;

<td>Unidade</td>;

<td>Quantidade</td>;

</tr>;

while ($linha = mysql_fetch_array($resultado)) { //imprimir cada resultado da consulta
<tr>;

<td align="center">'.$linha["unidade"].</td>';

<td align="center">'.$linha["Quantidade"].</td>';

</tr>;
}




  


2. Re: consulta entre datas

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 03/09/2015 - 10:28h


falta vc usar um critério de pesquisa (filtro), pesquise sobre a clausula WHERE. Exemplo:

SELECT unidade, COUNT(unidade) as qtd WHERE data > '2015-07-31' AND data < '2015-09-01' GROUP BY unidade 



3. Re: consulta entre datas

Luis Rodrigues
luisrod

(usa Ubuntu)

Enviado em 03/09/2015 - 10:54h


eu até já fiz SELECT unidade, COUNT(unidade) AS Quantidade FROM sac GROUP BY unidade BETWEEN '2015-04-01' AND '2010-08-31'. mas o meu problema é que preciso colocar datas diferentes no decorrer do mês, por isso preciso ter campos para a data, esse é a minha duvida.




4. Re: consulta entre datas

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 03/09/2015 - 11:29h


Coloque '$datainicial' e '$datafinal' no lugar de 'data' dentro da sua query.


5. Re: consulta entre datas

Luis Rodrigues
luisrod

(usa Ubuntu)

Enviado em 03/09/2015 - 13:05h


boa tarde, então fiz algumas alterações só que não aparece nada, pode me dizer onde está o erro.
<?php

if(isset($_GET['busca'])){
$busca = $_GET['busca'];
}else{
$busca = "";
}

if($busca=="OK"){

$datainicio = $_POST["inicio"]; // data inicio
$datafim = $_POST["fim"]; // data fim

$exec = mysql_query("SELECT unidade, COUNT(unidade) AS Quantidade FROM sac GROUP BY unidade WHERE data >= '$datainicio' AND data <= '$datafim'") or die("<script>alert('ERRO! Não foi possível conectar ao banco de dados.');location.href='javascript:history.go(-1)';</script>");

$total = mysql_num_rows($exec);

if($total>0);
while($dados=mysql_fetch_array($exec)) {

echo '<table border="1" align="center">';

echo '<tr align="center">';

echo '<td>Unidade</td>';

echo '<td>Quantidade</td>';

echo '</tr>';
}

echo "$result<hr><br>Foi encontrado $total resultado(s).";

}else{
?>


6. Re: consulta entre datas

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 03/09/2015 - 22:25h


Quando se deparar com alguns problemas, faça primeiro um pequeno trabalho de investigação.

O que acontece se vc pegar a query que colocou no código e executar direto no cliente do banco de dados?


SELECT unidade, COUNT(unidade) AS Quantidade FROM sac GROUP BY unidade WHERE data >= '$datainicio' AND data <= '$datafim'


Note que vai dar erro porque após o GROUP BY tem uma clausula WHERE, causando erro de sintaxe no SQL.


7. Re: consulta entre datas

CASSIO FERRAZ
cassio88

(usa Ubuntu)

Enviado em 04/09/2015 - 04:36h

complementando o post acima, troque
$exec = mysql_query("SELECT unidade, COUNT(unidade) AS Quantidade FROM sac GROUP BY unidade WHERE data >= '$datainicio' AND data <= '$datafim'")
por
$sql = "SELECT unidade, COUNT(unidade) AS Quantidade FROM sac GROUP BY unidade WHERE data >= '$datainicio' AND data <= '$datafim'");
die($exec);
é isso que o PHP vai tentar processar.

Copie do navegador e cole a SQL no PHPMyAdmin (ou o que você estiver usando)
quando acertar a sintaxe, troque
die($exec);
por
$exec = mysql_query($sql);


8. Re: consulta entre datas

Luis Rodrigues
luisrod

(usa Ubuntu)

Enviado em 04/09/2015 - 09:57h


Fiz a alteração, ele funcionou, só que quando defino a data ex: 02/09/2015 a 02/09/2015 ele só mostra a mensagem "Foi encontrado resultado(s)." e não traz as informações. o que fazer? obrigado pela paciência.


9. Re: consulta entre datas

CASSIO FERRAZ
cassio88

(usa Ubuntu)

Enviado em 04/09/2015 - 13:23h

se você fez a alteração que eu sugeri, troque
while($dados=mysql_fetch_array($exec)) {
por
while($dados=mysql_fetch_array($sql) {
pelo que disse, a consulta não retornou nenhuma linha

alem disso, faltou a parte principal, algo assim:
echo $dados[quantidade];
e a linha
echo "$result" está incorreta, você não definiu $result, certo?
por fim, dá uma olhada em
http://php.net/manual/en/function.mysql-num-rows.php


10. Re: consulta entre datas

Luis Rodrigues
luisrod

(usa Ubuntu)

Enviado em 04/09/2015 - 13:36h


Boa tarde Cassio , coloquei o q vc disse inclusive o echo para saida, ainda não deu retorno o q fiz de errado.
<?php

if(isset($_GET['busca'])){
$busca = $_GET['busca'];
}else{
$busca = "";
}

if($busca=="OK"){

$datainicio = $_POST["inicio"]; // data inicio
$datafim = $_POST["fim"]; // data fim

$exec = mysql_query("SELECT COUNT(*) AS unidade FROM @sac WHERE data >= '$datainicio' AND data <= '$datafim'") ;

$exec = mysql_query($sql);
//faz contagem por linha encontrada na consulta
$total = mysql_num_rows($exec);

if($total>0);
while($dados=mysql_fetch_array($sql)) {
// exibindo os dados encontrados
echo '<tr>';
echo '<td align="center">'.$dados["unidade"].'</td>';
echo '<td align="center">'.$dados["Quantidade"].'</td>';
echo '</tr>';

}

echo "$result<hr><br>Foi encontrado $total resultado(s).";

}else{
?>


11. Re: consulta entre datas

CASSIO FERRAZ
cassio88

(usa Ubuntu)

Enviado em 04/09/2015 - 18:08h

if($busca=="OK"){
die('olá mundo'); // ver nota 1 abaixo
$datainicio = $_POST["inicio"]; // data inicio
$datafim = $_POST["fim"]; // data fim
$sql="SELECT COUNT(*) AS unidade FROM @sac WHERE data >= '$datainicio' AND data <= '$datafim'";
die($sql); // ver nota 2
$exec = mysql_query($sql) ;
//faz contagem por linha encontrada na consulta
$total = mysql_num_rows($exec);
die($total); // ver nota 3
if($total>0) { // ver nota 4
while($dados=mysql_fetch_array($sql)) { // ver nota 5
// exibindo os dados encontrados
echo '<tr>';
echo '<td align="center">'.$dados["unidade"].'</td>';
echo '<td align="center">'.$dados["Quantidade"].'</td>';
echo '</tr>';
}
echo "$result<hr><br>Foi encontrado $total resultado(s)."; // ver nota 6
}else{ // ver nota 7

*****
nota 1: rode o código. Se não aparecer Olá mundo no navegador é porque tem erro de sintaxe abaixo
nota 2: tire o die da nota 1, rode o código e cole no phpmyadmin a sql. Veja se ela retorna algum registro
nota 3: total de registros deve ser o mesmo da nota acima
nota 4: é abre chave, não dois pontos
nota 5: é $dados=mysql_fetch_array($exec))
nota 6: você definiu $registro em algum lugar antes?
nota 7:é o if do $total > 0 ?

ah, no ubuntu, o log do apache fica em var/log/apache2, veja o que aparece lá


12. Re: consulta entre datas

Luis Rodrigues
luisrod

(usa Ubuntu)

Enviado em 06/09/2015 - 11:06h

bom dia Cassio, na nota 1 ok, já na nota2 ele não mostra o resultado.



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts