Jump to content
tibi

Sistema pesquisa rápida

Recommended Posts

tibi

Ola, boas tardes.

Estou a desenvolver um site no ramo dos automóveis (camiões) e digamos que encravei agora num ponto, pesquisa rápida! 🤔

Tenho 4 campos a partir dos quais o utilizador pode pesquisar (marca, categoria, ano e preço).

No formulário, todos estes campos tem como valor inicial "Indiferente" (value=0), ou seja o resultado será aparecerem os veículos todos.

Para as restantes opções uso um select com o value=id.

Para a primeira opção uso este query,

if($_POST["marca"] == 0 || $_POST["categoria"] == 0 || $_POST["ano"] == 0 || $_POST["preco"] == 0){

$marca=0;

$categoria = 0;

$data = 0;

$preco = 0;

  $sql = mysql_query("SELECT * FROM tbl_imoveis WHERE `id_tipoimovel` > '$marca' and `id_tipologia` > '$categoria' and `data` > '$data' and `preco` > '$preco' ") or die ("Tens algum erro!!!");

  }

Com isto lista me os resultados todos.

Mas gostava de saber como realizar uma pesquisa para as varias opções. Caso o utilizador escolha por exemplo marca=mercedes e o resto fique tudo indiferente ou marca indiferente e ano ser entre 2005 e 2010...

Tenho que fazer um query para todas as opções possíveis!?

Obrigado.

Nas pesquisas que encontro, usam a condição LIKE, mas como aqui são pesquisados valores fixos...

Share this post


Link to post
Share on other sites
taviroquai

Tens aí algumas coisas que não batem muito certo... e o melhor era teres uma função para validar cada critério...

De qualquer forma, podes controlar os critérios de pesquisa com algo assim...


// Lista de critérios de pesquisa
$criterios = array();

// Validar e adicionar critério à lista
if(!empty($_POST["marca"]) $criterios[] = "id_tipoimovel = ".mysql_real_escape_string($_POST['marca']);
if(!empty($_POST["categoria"]) $criterios[] = "tipologia = ".mysql_real_escape_string($_POST['categoria']);
if(!empty($_POST["data"]) $criterios[] = "data > ".mysql_real_escape_string($_POST['ano']);
if(!empty($_POST["preco"]) $criterios[] = "preco > ".mysql_real_escape_string($_POST['preco'];

// Construir clausula WHERE
$where = count($criterios) ? ' WHERE ' . implode(' and ', $criterios) : '';

// Construir SQL
$sql = "SELECT * FROM tbl_imoveis $where";
// Testa primeiro o sql num cliente de Base de dados como por exemplo o phpmyadmin.
echo "<p color=\"red\">$sql</p>"; 

// Realizar consulta e devolve o resultado.
$result = mysql_query($sql) or die ("Tens algum erro!!!");

Share this post


Link to post
Share on other sites
tibi

Sou bem capaz de ter algo no código que não bate certo...  :P

Vou experimentar como tu disseste e se tiver alguma dúvida, volto aqui.

Obrigado  :P

Share this post


Link to post
Share on other sites
tibi

obrigado, ficou a funcionar como eu queria. só faltava fechar uns parêntesis nas condições. De resto, 5*. Era mesmo isto que queria saber.

Obrigado pela ajuda :P

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.