Ir para conteúdo

POWERED BY:

Arquivado

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

sacjamm

Sistema de Pesquisa e filtro com data de nascimento

Recommended Posts

Olá prezados,

Estou com um desafio, tenho um sistema de Filtro para fazer em um sistema web. E o desafio é o seguinte, irei enviar uma imagem pra explicar melhor:

15p0glz.png

A imagem ficou muito grande, mais enfim, preciso fazer esse filtro, com a data de nascimento, eu já tentei fazer mais não bate certo a pesquisa, então se tiver alguém aí que tenha um sql, simples e util que possa fazer essa busca entre as 2 datas juntamente com os outros campos, eu agradeço.

Atenciosamente,

Alisson Maciel

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segue a query que não funciona

$readUser = new Read;
$readUser->FullRead("SELECT * FROM {$this->Table} WHERE user_status = 1 AND user_cpf LIKE '%' :cpf '%' AND user_name LIKE '%' :nome '%' AND user_nasc BETWEEN :user_nasc AND :user_nasca", "nome={$nome}&cpf={$cpf}&user_nasc={$user_nasc}&user_nasca={$user_nasca}");
if ($readUser->getResult()):
   return $readUser->getResult();
endif;

Eu faço o select dentro de uma classe, e apenas instancio a classe com o metodo na pagina que quero fazer a busca

Compartilhar este post


Link para o post
Compartilhar em outros sites

E exatamente qual o comportamento disto tudo? O que ocorre se $user_nasc ou $user_nasca estiver em branco?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vai permanecer em branco porem nao vai consultar eu acho, eu queria entender mais, porque eu acho que se eu estiver fazendo dessa forma, os campos de data, ficarão dependentes dos outros campos e se estiverem em branco dará erro.

Não sei se estou certo, mais preciso de uma solução bem viavel, e funcional. Tem condição de você me informar uma solução e explicar o porque de tal solução?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixa eu ver se eu entendi, você tá usando uma coisa que você não tem a mínima ideia de como funciona? Complicado...

Uma solução "viável e funcional", popular gambiarra, verifique se o campo está em branco e atribua uma valor padrão à ele. Na data inicial coloque uma data antiga (01/01/1900) no campo da data final coloque a data atual, pronto, isso garante que os campos sempre estejam preenchidos... Observe também que os campos de data (se estiverem bem modelados) tem o padrão aaaa-mm-dd, logo, você terá que garantir que esse padrão esteja correto na query.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok mas o filtro é Between mesmo? já que vai buscar somente a data de nascimento exata faz um like normal

EXEMPLO: dia_vencimento LIKE '%".$dia_vencimento."%'

e insere uma condição if se $var == 0000-00-00 { false; }else { echo $var; }

se for utilizar Between sempre faça um if para não dar conflito.

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso aqui também não irá funcionar:

"'%' :nome '%'"

Está separando dois apóstrofos cada. Além do mais, não devem ser inseridos apóstrofos, o correto pode ser visto no link abaixo:
http://php.net/manual/pt_BR/pdostatement.bindparam.php#99698

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.