m3io Postado Abril 13, 2010 Denunciar Share Postado Abril 13, 2010 (editado) boas pessoal, sou eu outra vez :rolleyes: recebi uma proposta pra fazer um site de carros (stand)ate ai tudo bem não é dificil, mas keria implementar um sistema de busca um pouco diferente do k eles já tem agoraseria mais ou menos assimdo tipo eu procuro bmw e ele faz apenas mysql_query (select * from carros where marca = bmw); ate aqui tudo bem,o problema é k não quero obrigar o utilizador a colocar todos os campos (marca, modelo, km, ano, combustivel)eu sei k se o cliente fizesse procurar apenas bmw a query seria :blink: mysql_query (select * from carros where marca = bmw and modelo="" and km="" and ano="" and combustivel=""); ele apenas mostrava registos k apenas tivessem a marca bmw e tudo o resto pro registar.alguém sabe como dar um jeito nisso???deve ser alguma estrutura IF else não???já tentei criar variar mas ate agora nada :( Editado Abril 15, 2010 por m3io Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 m3io Postado Abril 13, 2010 Autor Denunciar Share Postado Abril 13, 2010 eu o sistema de busca já fiz, com paginacao e tudo, é somente o problema de só procurar os campos que o utilizador escolher e não assumir os campos em branco como uma procura onde aquele campo esteja vazio Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Abril 13, 2010 Denunciar Share Postado Abril 13, 2010 Não faça posts de forma seguida, use o botão EDITAR se quiser adicionar alguma coisa!Sobre a sua dúvida, use o empty para verificar se o campo está em branco, se não estiver, adicionado na busca.$campo = $_POST['campo']; if(!empty($campo)){ $busca .= "campo = '$campo'"; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 m3io Postado Abril 13, 2010 Autor Denunciar Share Postado Abril 13, 2010 desculpa :P eserra eu isso sei, o problema é k tenho 10 campos pra verificar e não keria fazer um script com todas as hipoteses posiveis, mas algo que deteta-sepor ex: ele mete nome , descricao e anoso procura esses tresmas podia ter inumeras combinacoes posiveis, e usar forca bruta nisso é meio complicado :huh: já vi um post assim//recebe as variáveis do formulário pelo método GET, poderia ser pelo método POST também $nome = $_GET["nome"] $idade = $_GET["idade"] $sexo = $_GET["sexo"] //verifica se pelo menos um deles foi preenchido if($nome != '' || $idade != '' || $sexo != '') { $sql = "select * from cliente Where"; if($nome != '') { "nome=".'$nome'; } if($idade != '' and $nome != '') { "and idade=".'$idade'; } elseif($idade != '') { "idade=".'$idade'; } if($sexo != '' and ($nome != '' || $idade != '')) { "and sexo=".'$sexo'; } elseif($sexo != '') { "sexo=".'$sexo'; } } else { //caso nenhum campo esteja preenchido, faz a busca sem filtro $sql = "select * from cliente;"; }mas eu vou ter +/- 10 campos e fazer testes para todas as hipoteses seria algo tipo 10x10 = 100 hipoteses .não sei bem se me entendem.obrigado pela ajuda desde já :P Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Abril 13, 2010 Denunciar Share Postado Abril 13, 2010 Não há 100 hipóteses, basta você pegar um campo que com certeza estará preenchido e o resto adicionar com AND, por exemplo:$campo1 = $_POST['campo1'];//Supondo que esse campo sempre estará preenchido $campo2 = $_POST['campo2']; $campo3 = $_POST['campo3']; $query = "campo1 = '$campo1'"; if(!empty($campo2)){ $query .= " AND campo2 = '$campo2'"; } if(!empty($campo3)){ $query .= " AND campo3 = '$campo3'"; } $sql = mysql_query("SELECT * FROM tabela WHERE ".$query); Pronto, caso não exista um campo que sempre estará preenchido, vai na gambiarra mesmo: $campo1 = $_POST['campo1']; $campo2 = $_POST['campo2']; $campo3 = $_POST['campo3']; if(!empty($campo1)){ $query .= " AND campo1 = '$campo1'"; } if(!empty($campo2)){ $query .= " AND campo2 = '$campo2'"; } if(!empty($campo3)){ $query .= " AND campo3 = '$campo3'"; } $sql = mysql_query("SELECT * FROM tabela WHERE id > '0'".$query); Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 m3io Postado Abril 15, 2010 Autor Denunciar Share Postado Abril 15, 2010 isso ajudou bastante :Pmas entretanto surgiu outro problema :(fiz o sistema de busca com paginacao e reparei que se tiver 65000000 paginas eles vai listar todas$_GET['pagina'] = pagina actual $paginas = total de paginas $_GET['consulta'] = palavra procurada ////SCRIPT PAGINA ANTERIOR if ($_GET['pagina']>1) { $ant = $_GET['pagina'] - 1; echo '<a href="?consulta='.$_GET['consulta'].'&pagina='.$ant.'"><img src="images/prev.png" alt="'.$ant.'" border="0"></a> '; } /////PAGINACAO NORMAL for($n = 1; $n <= $paginas; $n++) { echo '<a href="?consulta='.$_GET['consulta'].'&pagina='.$n.'">'.$n.'</a> '; } ////SCRIPT PAGINA SEGUINTE if ($_GET['pagina']< $paginas) { $seg = $_GET['pagina'] + 1; echo '<a href="?consulta='.$_GET['consulta'].'&pagina='.$seg.'"><img src="images/next.png" alt="'.$seg.'" border="0"></a>'; }keria que ele listisse tipo 5 no maximo mas continuando a navegar entre as 6500000, deu pra explicar a duvida?tipo anterior - 1,2,3,4,5 - seguinte // de 650000ou anterior - 551,552,553,554,555 - seguinte // de 650000, mas não tou mesmo a imaginar como resolver isto :( Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
m3io
boas pessoal, sou eu outra vez :rolleyes:
recebi uma proposta pra fazer um site de carros (stand)
ate ai tudo bem não é dificil, mas keria implementar um sistema de busca um pouco diferente do k eles já tem agora
seria mais ou menos assim
do tipo eu procuro bmw e ele faz apenas
mysql_query (select * from carros where marca = bmw); ate aqui tudo bem,
o problema é k não quero obrigar o utilizador a colocar todos os campos (marca, modelo, km, ano, combustivel)
eu sei k se o cliente fizesse procurar apenas bmw a query seria
:blink:
mysql_query (select * from carros where marca = bmw and modelo="" and km="" and ano="" and combustivel="");
ele apenas mostrava registos k apenas tivessem a marca bmw e tudo o resto pro registar.
alguém sabe como dar um jeito nisso???
deve ser alguma estrutura IF else não???
já tentei criar variar mas ate agora nada :(
Editado por m3ioLink para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.