Ir para conteúdo

POWERED BY:

Arquivado

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

Zouj

Pesquisar por Periodo | PHP+MySQL

Recommended Posts

Boa noite

 

Galera estou com uma pequena duvida, como poderia fazer uma pesquisa por periodos.

 

Exemplo:

<table width="250" border="0">
  <tr>
    <th scope="row">DATA</th>
    <td><label>
      <input name="data1" type="text" id="data1" size="11" />
    </label></td>
    <td>DATA2</td>
    <td><label>
      <input name="data2" type="text" id="data2" size="11" />
    </label></td>
  </tr>
  <tr>
    <th scope="row"> </th>
    <td colspan="2"><label>
      <input type="submit" name="pesquisar" id="pesquisar" value="Pesquisar" />
    </label></td>
    <td> </td>
  </tr>
</table>

digito uma data no textfield data1 01/09/2010 e no textfield data2 30/09/2010 ae é listado todos os processos cadastrados nesse periodo

 

esse modelo foi um q fiz mais ae so pesquisa pela data exata ñ por periodo :(

$sql_clientes = mysql_query("SELECT * FROM cadastro WHERE dtprocesso LIKE '%".$pesquisar."%' or nomecliente LIKE '%".$pesquisar."%' or cpfcliente LIKE '%".$pesquisar."%' or nprocesso LIKE '%".$pesquisar."%'");

Se alguem puder ajudar ae agradeço ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT column_name(s)

FROM table_name

WHERE coluna_data

BETWEEN data1 AND data2

 

mas é claro, isso só vai funcionar se você estiver armazenando as datas em formato DATE no banco de dados

Compartilhar este post


Link para o post
Compartilhar em outros sites

e agora complico :mellow:

 

alterei na estrutura do bd para date agora zerou todas 00-00-0000

e tbm quando cadastro continua a msm coisa 00-00-0000

 

Poderia me dar uma luz ae como faço pra concertar? :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja só.

 

O banco grava os dados de data (se for o caso de teu campo (field) for date) noi formto aaaa-mm-dd e você esta gravando assim: dd/mm/aaaa Ai, quando voce mudou de varchar (ou text) para date, ai ele zera os campos mesmo.

 

Eu te aconselho, caso não queira alterar o field do banco de string para date, converter, usando php, de string para date assim:

function ConverteData($Data){
 if (strstr($Data, "/"))//verifica se tem a barra /
 {
  $d = explode ("/", $Data);//tira a barra
 $rstData = "$d[2]-$d[1]-$d[0]";//separa as datas $d[2] = ano $d[1] = mes etc...
 return $rstData;
 } elseif(strstr($Data, "-")){
 $d = explode ("-", $Data);
 $rstData = "$d[2]/$d[1]/$d[0]"; 
 return $rstData;
 }else{
 return "Data invalida";
 }
 }
 echo "<br>";

$SQL="SELECT column_name(s)
FROM table_name
WHERE coluna_data
BETWEEN ConverteData($data1)AND ConverteData($data2)"

Caso não queira mexer na estrutura de dados.

 

Mas, caso queira alterar a estrutura de dados de string para date, será necessario tambem voce alterar os inserts para gravar as datas convertidas de sstring para date usando a funçao ali de cima pois se não o banco vai negar a inserçao.

 

lembre-se que no formulario, as daas são apresentadas para o usuario do site no formata dd/mm/aaaa (o formato brasileiro que ele conhece) porem, quando for gravar no banco, terá que converter para formato universal aaaa-mm-dd. Observe que esse modelo de data é necessario para o calculo de datas.

 

Imagine se fosse fazer uma conta de anos começando a conta do inicio para o fim. Toda conta se inicia do fim para o inicio.

 

Boa Sorte!

Compartilhar este post


Link para o post
Compartilhar em outros sites

por que ao inves de você fazer isso ai acima, você não usa uma função PROPRIA, do MySQL, para arrumar suas datas???

 

o nome desta função é STR_TO_DATE

 

por exemplo:

 

update sua_tabela set `coluna_str_com_a_data` = STR_TO_DATE(`coluna_str_com_a_data`, '%d/%m/%Y');

essa função converte strings para o formato date do mysql, baseado no formato passado no segundo parâmetro.

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.