Ir para conteúdo

Arquivado

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

alexandre.ramos2014

Consulta MySql PHP com BETWEEN

Recommended Posts

Olá galera Boa Tarde podem me ajudar por gentileza !!!.

 

Estou tentando gerar uma consulta com BETWEEN no MySql e quando ditido as datas direto na consulta a mesma funciona normalmente:

mysql_select_db($database_u810606379_rioit, $u810606379_rioit);
$query_perquisa = "SELECT * FROM ocorrencias WHERE data_ocorrido BETWEEN '2014-01-2014' AND '2014-10-04' ORDER BY id DESC ";
$perquisa = mysql_query($query_perquisa, $u810606379_rioit) or die(mysql_error());
$row_perquisa = mysql_fetch_assoc($perquisa);
$totalRows_perquisa = mysql_num_rows($perquisa);

Porém quando utilizo as vareáveis resdatadas do formulário de consulta, seja ela GET ou POST, as vareáveis trazem a data oque nos mostra que as mesmas estam funcionando corretamente, porém a pesquisa não me retorna o resultado:

mysql_select_db($database_u810606379_rioit, $u810606379_rioit);
$query_perquisa = "SELECT * FROM ocorrencias WHERE data_ocorrido BETWEEN '$data' AND '$datad' ORDER BY id DESC ";
$perquisa = mysql_query($query_perquisa, $u810606379_rioit) or die(mysql_error());
$row_perquisa = mysql_fetch_assoc($perquisa);
$totalRows_perquisa = mysql_num_rows($perquisa);

$status1 = $_POST['status'];
$inicio = $_GET['data_inicial'];
$fim = $_GET['data_final'];


        $dat = explode("/",$_GET['data_inicial']);
    $data = $dat[2] . "-" . $dat[1] . "-" . $dat[0];
    
            $dat1 = explode("/",$_GET['data_final']);
    $datad = $dat1[2] . "-" . $dat1[1] . "-". $dat1[0];

<form action="relatorio_ocorrencias_cco.php" method="get" name="form1" id="form1">
<table width="100%%">
<tr>
<td width="35%" align="right">Data Inicial:</td>
<td width="10%"><input name="data_inicial" id="data_inicial" class="conteudoMenu1"  type="text" size="10" /></td>
<td width="4%" align="center">À</td>
<td width="9%" align="right">Data Final:</td>
<td width="9%"><input name="data_final" id="data_final" class="conteudoMenu1" type="text"  size="10" onchange="document.getElementById('form1').submit();"/></td>
<td width="8%"></td>
<td width="25%">
</td>
</tr>
</table>
</form>
  

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado Williams pela sugestão Mais!!!

 

mais não funcionou quando retirei as aspas e coloquei da forma em que você me sugeriu mais deu erro, mais o problema é que não funciona quando uso a vareável mais quando uso data normal funciona normalmente por Exemplo:

 

"SELECT * FROM ocorrencias WHERE data_ocorrido BETWEEN '2014-05-01' AND '2014-10-06' ORDER BY id DESC " FUNCIONA

 

"SELECT * FROM ocorrencias WHERE data_ocorrido BETWEEN '$data' AND '$datad' ORDER BY id DESC " - NÃO FUNCIONA

 

Me da mais uma forcinha ai por gentileza :yes:

Não há necessidade de aspas simples

"SELECT * FROM ocorrencias WHERE ( data_ocorrido BETWEEN $data AND $datad ) ORDER BY id DESC"

http://www.w3schools.com/sql/sql_between.asp

Compartilhar este post


Link para o post
Compartilhar em outros sites
NÃO FUNCIONA

 

amigo, testei o código; a conversão de datas e a sql estão ok..

explique melhor o q não funciona... ex: não vi no seu código os comandos p/ recuperar os registros e exibir..

tb verifique a "action" do form

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifica se a data que está nestas variáveis está no mesmo formato (inclusive os traços) das datas que você está digitando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O Fernando Bom dia.

 

Quando testo o select colocando as datas diretamente no intervalo do BETWEEN ele funciona desta forma:

 

"SELECT * FROM ocorrencias WHERE data_ocorrido BETWEEN '2014-05-01' AND '2014-10-06' ORDER BY id DESC " FUNCIONA

 

Quando tento trazer justamente da vareavel com as datas convertidas ele não me tras nada desta forma:

 

"SELECT * FROM ocorrencias WHERE data_ocorrido BETWEEN '$data' AND '$datad' ORDER BY id DESC " - NÃO FUNCIONA

 

Vou colocar abaixo a parte da exibição dos dados:

 

<table width="100%%">
<tr>
<td>id</td>
<td>data_informacao</td>
<td>data_ocorrido</td>
<td>hora_ocorrido</td>
<td>ocorrencia</td>
<td>veiculo</td>
<td>vei_empresa</td>
<td>matricula</td>
<td>nome</td>
<td>mot_empresa</td>
<td>linha</td>
<td>descricao_linha</td>
<td>gl</td>
<td>descricao</td>
<td>imag</td>
<td>usuario</td>
<td>status</td>
<td>data_atendimento</td>
<td>unidade</td>
<td>setor</td>
<td>funcao</td>
<td>atendimento</td>
<td>providencia</td>
<td>justificativa</td>
</tr>
<?php do { ?>
<tr>
<td><?php echo $row_pesquisa['id']; ?></td>
<td><?php echo $row_pesquisa['data_informacao']; ?></td>
<td><?php echo $row_pesquisa['data_ocorrido']; ?></td>
<td><?php echo $row_pesquisa['hora_ocorrido']; ?></td>
<td><?php echo $row_pesquisa['ocorrencia']; ?></td>
<td><?php echo $row_pesquisa['veiculo']; ?></td>
<td><?php echo $row_pesquisa['vei_empresa']; ?></td>
<td><?php echo $row_pesquisa['matricula']; ?></td>
<td><?php echo $row_pesquisa['nome']; ?></td>
<td><?php echo $row_pesquisa['mot_empresa']; ?></td>
<td><?php echo $row_pesquisa['linha']; ?></td>
<td><?php echo $row_pesquisa['descricao_linha']; ?></td>
<td><?php echo $row_pesquisa['gl']; ?></td>
<td><?php echo $row_pesquisa['descricao']; ?></td>
<td><?php echo $row_pesquisa['imag']; ?></td>
<td><?php echo $row_pesquisa['usuario']; ?></td>
<td><?php echo $row_pesquisa['status']; ?></td>
<td><?php echo $row_pesquisa['data_atendimento']; ?></td>
<td><?php echo $row_pesquisa['unidade']; ?></td>
<td><?php echo $row_pesquisa['setor']; ?></td>
<td><?php echo $row_pesquisa['funcao']; ?></td>
<td><?php echo $row_pesquisa['atendimento']; ?></td>
<td><?php echo $row_pesquisa['providencia']; ?></td>
<td><?php echo $row_pesquisa['justificativa']; ?></td>
</tr>
<?php } while ($row_pesquisa = mysql_fetch_assoc($pesquisa)); ?>
</table>
</body>
</html>
<?php
mysql_free_result($pesquisa);
?>

Desde já agradeço pela força.

 

 

 

amigo, testei o código; a conversão de datas e a sql estão ok..

explique melhor o q não funciona... ex: não vi no seu código os comandos p/ recuperar os registros e exibir..

tb verifique a "action" do form


Fernando

 

As datas que estão sendo retornadas pelas vareáveis estão no seguinte formato:

 

data_inicial data_final

2014-05-01 2014-10-02

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é que primeiro você faz a consulta, ai depois dela você resgata as variáveis e trata... você tem que resgatar, tratar e ai usar elas na query.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boas, tente assim, como disse o ESerra.

 

$status1 = $_POST['status'];
$inicio = $_GET['data_inicial'];
$fim = $_GET['data_final'];
$dat = explode("/",$_GET['data_inicial']);
$data = $dat[2] . "-" . $dat[1] . "-" . $dat[0];
$dat1 = explode("/",$_GET['data_final']);
$datad = $dat1[2] . "-" . $dat1[1] . "-". $dat1[0];


mysql_select_db($database_u810606379_rioit, $u810606379_rioit);
$query_perquisa = "SELECT * FROM ocorrencias WHERE data_ocorrido BETWEEN '$data' AND '$datad' ORDER BY id DESC ";
$perquisa = mysql_query($query_perquisa, $u810606379_rioit) or die(mysql_error());
$row_perquisa = mysql_fetch_assoc($perquisa);
$totalRows_perquisa = mysql_num_rows($perquisa);


<form action="relatorio_ocorrencias_cco.php" method="get" name="form1" id="form1">

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Tarde.

 

Cara estou fazendo exatamente assim e mesmo assim não me retorna resultado algum

Boas, tente assim, como disse o ESerra.

$status1 = $_POST['status'];
$inicio = $_GET['data_inicial'];
$fim = $_GET['data_final'];
$dat = explode("/",$_GET['data_inicial']);
$data = $dat[2] . "-" . $dat[1] . "-" . $dat[0];
$dat1 = explode("/",$_GET['data_final']);
$datad = $dat1[2] . "-" . $dat1[1] . "-". $dat1[0];


mysql_select_db($database_u810606379_rioit, $u810606379_rioit);
$query_perquisa = "SELECT * FROM ocorrencias WHERE data_ocorrido BETWEEN '$data' AND '$datad' ORDER BY id DESC ";
$perquisa = mysql_query($query_perquisa, $u810606379_rioit) or die(mysql_error());
$row_perquisa = mysql_fetch_assoc($perquisa);
$totalRows_perquisa = mysql_num_rows($perquisa);


<form action="relatorio_ocorrencias_cco.php" method="get" name="form1" id="form1">

Compartilhar este post


Link para o post
Compartilhar em outros sites

(...)

<?php } while ($row_pesquisa = mysql_fetch_assoc($pesquisa)); ?>

</table>

</body>

</html>

<?php

mysql_free_result($pesquisa);

?>

 

pois é.. parece q falta declarar essa variavel: $pesquisa..

1 dica: tente o or die (mysql_error()) e ir debugando a conexão, a sql...,

pois como eu disse, as funções estão ok..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Faz o Echo da Query, só assim podemos ajudar mais:

 

Echo "SELECT * FROM ocorrencias WHERE data_ocorrido BETWEEN '$data' AND '$datad' ORDER BY id DESC ";

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.