newmmax 0 Denunciar post Postado Agosto 5, 2008 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
Rafael Mussi 0 Denunciar post Postado Agosto 5, 2008 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
newmmax 0 Denunciar post Postado Agosto 5, 2008 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
Rafael Mussi 0 Denunciar post Postado Agosto 5, 2008 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
newmmax 0 Denunciar post Postado Agosto 5, 2008 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
Rafael Mussi 0 Denunciar post Postado Agosto 5, 2008 resolvido! qqer coisa tamos aí! [x]´s Compartilhar este post Link para o post Compartilhar em outros sites