Ir para conteúdo
Fórum Script Brasil
  • 0

Sistema de busca avancado


m3io

Pergunta

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

imgvu.jpg

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 m3io
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

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'";
}

Link para o comentário
Compartilhar em outros sites

  • 0

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-se

por ex: ele mete nome , descricao e ano

so procura esses tres

mas 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

Link para o comentário
Compartilhar em outros sites

  • 0

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);

Link para o comentário
Compartilhar em outros sites

  • 0

isso ajudou bastante :P

mas 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>&nbsp;&nbsp;'; 
} 

/////PAGINACAO NORMAL
for($n = 1; $n <= $paginas; $n++) 
{ 
echo '<a href="?consulta='.$_GET['consulta'].'&pagina='.$n.'">'.$n.'</a>&nbsp;&nbsp;';  
}

////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 650000

ou

anterior - 551,552,553,554,555 - seguinte // de 650000

, mas não tou mesmo a imaginar como resolver isto :(

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...