grldesign 0 Denunciar post Postado Março 8, 2004 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
webvp 0 Denunciar post Postado Março 8, 2004 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
grldesign 0 Denunciar post Postado Março 9, 2004 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
webvp 0 Denunciar post Postado Março 9, 2004 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
Alisson Rodrigues 3 Denunciar post Postado Março 9, 2004 Você disse que está dando erro, qual erro? Compartilhar este post Link para o post Compartilhar em outros sites
Keitaro 0 Denunciar post Postado Março 9, 2004 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
webvp 0 Denunciar post Postado Março 9, 2004 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