Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
Vlw W.B.... já li algumas vezes esse seu post sobre coisas a evitar. Vou tentar melhorar isso TKS
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.
Vlw vou dar uma olhada, parabens atrasados pelo intercon
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
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 ?