Ir para conteúdo

POWERED BY:

Arquivado

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

KMRodrigo

[Resolvido] Código Limpo PHP

Recommended Posts

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.