Ir para conteúdo

POWERED BY:

Arquivado

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

newmmax

[Resolvido] Função de data para busca com ajax

Recommended Posts

tenho um arquivo de pesquisa no banco de dados acessado por ajax que me retorna a lista com os registros de acordo com o que o usuário digita no campo de busca. a busca é dinâmica e o usuário pode escolher o campo que deseja usar para a pesquisa. o que não estou conseguindo é fazer ele funcionar perfeitamente com um campo do tipo data, estou tentando isso:

 

mysql_select_db($database_conexao, $conexao);
$query_lista = "SELECT * FROM clientes WHERE $cam like '%$val%'";

if(($cam='clientes_dt_nasc') || ($cam='clientes_dt_cad')){
$dia=substr($val,0,2);
$mes=substr($val,3,2);
$ano=substr($val,6,4);
if((isset($dia)) and (isset($mes)) and (isset($ano))){
$val=$ano-$mes-$dia;
$query_lista = "SELECT * FROM clientes WHERE $cam like  '$val'"; }
if((isset($dia)) and (isset($mes)) and (!$ano)){
$val='-'.$mes.'-'.$dia;
$query_lista = "SELECT * FROM clientes WHERE $cam like  '____$val'"; }
if((isset($dia)) and (!$mes) and (!$ano)){
$val=$dia;
$query_lista = "SELECT * FROM clientes WHERE $cam like '_______$val'"; }

}

 

a cada dígito do usuário é feita uma nova consulta no banco, tipo o google suggest

alguem pode ajudar aí galera?

Compartilhar este post


Link para o post
Compartilhar em outros sites

if(($cam='clientes_dt_nasc') || ($cam='clientes_dt_cad')){

não li afundo teu código, mas já achei uma coisa errada.. tem q ser == e não =

 

if(($cam=='clientes_dt_nasc') || ($cam=='clientes_dt_cad')){

 

[x]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá aí o código consertado, tinha errado na ora de postar, mas tá aí o estado atual do código. ele funciona beleza da seguinte maneira, o usuário digita o dia, aí a pesquisa traz os dados daquele dia, depois se o usuário digitar o dia e o mês, traz os dados do dia e do mês, e por ultimo se ele digitar o dia, o mes e o ano, daí traz os dados referentes a esta data completa, mas ele não funciona a cada digito do usuário, só funciona a cada parcela da data, ou seja, se digitar os dois digitos do dia, os dois do mes e os 4 do ano.

 

mysql_select_db($database_conexao, $conexao);
$query_lista = "SELECT * FROM clientes WHERE $cam like '%$val%'";

if(($cam=='clientes_dt_nasc') || ($cam=='clientes_dt_cad')){
$dia=substr($val,0,2);
$mes=substr($val,3,2);
$ano=substr($val,6,4);
if((isset($dia)) and (isset($mes)) and (isset($ano))){
$val=$ano.'-'.$mes.'-'.$dia;
$query_lista = "SELECT * FROM clientes WHERE $cam like  '$val'"; }
if((isset($dia)) and (isset($mes)) and (!$ano)){
$val='-'.$mes.'-'.$dia;
$query_lista = "SELECT * FROM clientes WHERE $cam like  '____$val'"; }
if(($dia) and (!$mes) and (!$ano)){
$val=$dia;
$query_lista = "SELECT * FROM clientes WHERE $cam like '%$val'"; }

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente fazer dessa forma em todas as consultas (dia e/ou mes e/ou ano) e sem tratar o $val:

mysql_select_db($database_conexao, $conexao);

if (($cam=='clientes_dt_nasc') || ($cam=='clientes_dt_cad'))
{
	$query_lista = "SELECT * FROM clientes WHERE DATE_FORMAT($cam, '%d/%m/%Y') LIKE '$val%'"; // assumindo que sua $val vem no formato dd/mm/aaaa
}

[x]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

parceiro desconhecia o DATE_FORMAT na query, matou a charada, obrigado e vai perdoando a ignorância, rs

 

vlw

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.