Ir para conteúdo

POWERED BY:

Arquivado

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

grldesign

busca detalhada com 10 opcoes de filtro

Recommended Posts

Como posso fazer para criar uma pesquisa detalhada se tenho 10 filtros que podem ou não serem preenchidos pelo usuario, testá-los e dependendo do resultado do teste elaborar uma condição que cai no SELECT do mysql?Contando que cada um destes filtros busca em uma coluna diferente no banco de dados...Se alguem puder me dar uma luz so... nao precisa codigo...so sintaxe do esquema...Valeuz

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode fazer assim:$sql = @mysql_query("SELECT * FROM tabela WHERE campo1 LIKE "%'.$busca.'%" OR campo2 LIKE "%'.$busca.'%"... ORDER BY id ASC")onde ... a quantia de campos a ser pesquisado...talvez isto resolva sua dúvida.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas preciso testar cada um...tipo...if($modelo) { $condicao.= "modelo = '%$modelo%'";}entende? e isso ta fazendo com que nao retorne resultados...ta dando erro... abaixo o codigo...

$n = 0;  $querya = "WHERE ";//TRABALHA MARCAif($_REQUEST[marca] == "Todas") { $querya.= " ";}else {$querya.= "fabricante LIKE '$_POST[marca]'"; $n++;}   //TRABALHA MODELOif(!$_REQUEST[modelo]) { $querya.= " ";}else {if($n == 1) {$querya.= " OR modelo LIKE '$_POST[modelo]'";}else {$querya.= "modelo LIKE '$_POST[modelo]'";}$n++;}   //TRABALHA TRANSMISSAOif($_REQUEST[transmissao] == "") { $querya.= " ";}else {if($n >= 1) {$querya.= " OR transmissao LIKE '$_POST[transmissao]'";}else {$querya.= "transmissao LIKE '$_POST[transmissao]'";}$n++;}   //TRABALHA ESTADOif($_REQUEST[estado] == "Todos") { $querya.= " ";}else {if($n >= 1) {$querya.= " OR estado LIKE '$_POST[estado]'";}else {$querya.= "estado LIKE '$_POST[estado]'";}$n++;}$querya.= " ORDER BY modelo";      //BUSCA$executa = mysql_query("SELECT * FROM an_carros $querya");$numero = @mysql_num_rows($executa);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use o switch no lugar de if's, fica melhor para estruturar o código, assim não se perde com tantos if's...switch(condicao){ case "condicao 1" echo alguma coisa break; case "condicao 2" echo alguma coisa break; case "condicao 3" echo alguma coisa break;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu faria de outro jeito...

 

coloque quantos campos quiser, em name coloque, digamos: <input type=text name=filtros['nome_do_campo']> em todos os campos...

 

agora bastaria fazer:

 

<?echo "<form action='$_SERVER[PHP_SELF]' method=post>";echo "<input type=text name=nome[campo1]><br><input type=text name=nome[campo2]><br><input type=text name=nome[campo3]><br><input type=text name=nome[campo4]><br><input type=text name=nome[campo5]><br><input type=submit value=enviar>";echo "</form>";$numero_filtros = 0;$qry = "";foreach($_POST["nome"] as $f => $v){	if($numero_filtros < count($_POST['nome']) AND !empty($v) AND $numero_filtros > 0)  $qry .= " OR ";		if(!empty($v))	{  $qry .= "$f LIKE %$v%";  $numero_filtros++;	}}echo $qry;?>

esse codigo funciona com mais garantia... fiz uns ajustes pq dava erros.. mas facilita mto a verificacao :D

 

Acabei aprendendo tecnicas fazendo isso.. n esperava por isso.. :blink: :P B)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mandou bem Keitaro, é isso, aprender um pouco sobre array() não é nada mau. Sem contar que o tempo de execução do script será maior. Ganho de desempenho é essencial.Muito bom.

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.