KMRodrigo 1 Denunciar post Postado Outubro 19, 2011 Galera, eu já tinha criado um tópico com esse propósito porém foi colocado "Resolvido" no tópico então pensei q se postasse nele ninguem iria ver. Minha idéia é deixar esse tópico sempre aberto, no outro tiramos duvidas de como usar variáveis php no meio do código HTML (tudo dentro do echo ou apenas a variavel do value (no input) dentro do echo) entre outras coisas. Me surgiu uma duvida... qual a melhor maneiro de fazer filtro? Abaixo a maneira q uso Bom crio o form para mês, ano e funcionário. Dps desenho num caderno as possibilidades "mes= preenchido+ ano=todos + func = todos, mes=preenchido + ano = preenchido + fun = todos" óbvio n faço por extenso faço uma tabelinha... tmb da pra saber por permutação mas por permutação sabemos o numero de combinações e não quais são... ai monto a tabela e.... o form envia para uma pág e faz isso. if($vendedor =='Todos' && $mes!='Todos'){ if($situacao!='Qualquer'){ $resultado = mysql_query("SELECT * FROM cotacao where CO_referencia = '$ref' && situacao ='$situacao' ORDER BY CO_funcionario ASC"); mysql_close(); } else{ $resultado = mysql_query("SELECT * FROM cotacao where CO_referencia ='$ref' ORDER BY CO_funcionario ASC "); mysql_close(); } } else if($vendedor !='Todos' && $mes!='Todos'){ if($situacao!='Qualquer'){ $resultado = mysql_query("SELECT * FROM cotacao where CO_referencia ='$ref' && CO_funcionario ='$vendedor' && situacao ='$situacao' ORDER BY CO_funcionario ASC "); mysql_close(); } else{ $resultado = mysql_query("SELECT * FROM cotacao where CO_referencia ='$ref' && CO_funcionario ='$vendedor' ORDER BY CO_funcionario ASC "); mysql_close(); } }else if($vendedor !='Todos' && $mes=='Todos'){ if($situacao!='Qualquer'){ $resultado = mysql_query("SELECT * FROM cotacao where CO_funcionario ='$vendedor' && situacao ='$situacao' && CO_referencia Like '%-$ano' ORDER BY CO_funcionario ASC "); mysql_close(); } else{ $resultado = mysql_query("SELECT * FROM cotacao where CO_funcionario ='$vendedor' && CO_referencia Like '%-$ano' ORDER BY CO_funcionario ASC "); mysql_close(); } dps jogo um while com o $resultado e monto a tabela.... Esse processo embora longo nunca me deu problemas de carregamento, afinal apenas um while e ele só cai em uma condição IF e quando cai ele para de verificar as outras.... Esse meu modo é possivel fazer com switch? Existe maneiras menos demoradas de se fazer? Gostaria de deixar esse tópico sempre aberto, afinal é vantajoso para toda comunidade de programadores programar de forma mais limpa e fácil de ler. Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Outubro 19, 2011 cara.. o problema com o seu código é a repetição. DRY! leia: http://wbruno.com.br/blog/2011/08/18/boas-praticas-de-programacao-filosofias-de-desenvolvimento/ note o trecho $resultado = mysql_query("SELECT * FROM cotacao ... ORDER BY CO_funcionario ASC "); mysql_close(); esse trecho de sql, e essas 2 variaveis são semelhantes, não importa em qual condição caia. Oque você deve fazer, para ter um código bom e limpo, é encapsular isso em um unico lugar, e então só variar oq varia.. e não ficar se repetindo.. entendeu ? Compartilhar este post Link para o post Compartilhar em outros sites
KMRodrigo 1 Denunciar post Postado Outubro 25, 2011 Vlw W.B.... já li algumas vezes esse seu post sobre coisas a evitar. Vou tentar melhorar isso TKS Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Outubro 25, 2011 a idéia que você pode usar, para formar essa consulta, pode ser bem parecida com essa aqui: http://wbruno.com.br/blog/2011/05/28/formulario-de-busca-filtro-dinamico-em-mysql-php/ onde faço um teste, e vou adicionando ao array a condição que quero. Depois apenas junto todas com o implode. tente fazer se baseando nesse exemplo, ficará bem mais limpo. Compartilhar este post Link para o post Compartilhar em outros sites
KMRodrigo 1 Denunciar post Postado Outubro 26, 2011 Vlw vou dar uma olhada, parabens atrasados pelo intercon Compartilhar este post Link para o post Compartilhar em outros sites