Ir para conteúdo

POWERED BY:

Arquivado

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

helkton

Sistema de buscas php com filtro

Recommended Posts

Olá pessoal estou procurando algo mais sem sucesso, estou a fazer um site pra uma imobiliaria porem agora gostaria de colocar um sistema de busca com filtros.

Alguem pode me ajudar...

Bom suponhamos que o internauta queira COMPRAR uma CASA na CIDADE X

<table>
<form action="procurar.php" method="GET">
<tr>
<td>Finalidade</td>
<td>Tipo de Imóvel</td>
<td>Cidade</td>
</tr>

<tr>
<td><select name="finalidade">
<option value="alugar">Alugar </option>
<option value="comprar">Comprar </option>
</select>
</td>

<td>
<select name="tipo">
<option value"casa">Casa</option>
<option value"terreno">Terreno</option>
<option value"apartamento">Apartamento</option>
<option value"rural">Rural</option>
</select>
</td>

<td>
<select name="cidade">
<option value"todas_as_cidade">Todas as Cidades Cadastradas em meu banco</option>
</select>
</td>

<td>
<input type="submit" value="Procurar" />
</td>

</tr>
</form>
</table>

 

Como faço as devidas funçoes PHP, bem basicão mesmo apenas para eu ter uma idéia e ir modificando OK

Desde já Agradeço e estou no aguardo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT * FROM casas WHERE finalidade LIKE '%alugar%' AND tipo LIKE '%casa%' AND cidade LIKE '%saopaulo%'

 

Onde esses nomes seriam variáveis que você estaria pegando os valores desse pequeno formulário de pesquisa.

$finalidade = $_POST['finalidade'];

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom olha só o que fiz ta quase funfando...

EU COLOQUEI UM NAME EM CADA SELECT DO FORMULÁRIO DE BUSCA ASSIM...

<table>
<form action="procurar.php" method="GET">
<tr>
<td>Finalidade</td>
<td>Tipo de Imóvel</td>
<td>Cidade</td>
</tr>

<tr><td><select name="finalidade">
         <option value="alugar">Alugar </option>
         <option value="comprar">Comprar </option>
</select>
</td>

<td><select name="tipo">
<option value"casa">Casa</option>
<option value"tipo">Terreno</option>
<option value"tipo">Apartamento</option>
<option value"rural">Rural</option>
</select>
</td>

<td><select name="cidade">
<option value"todas_as_cidades">Todas as Cidade Cadastradas</option>
</select>
</td>

<td>
<input type="submit" value="procurar">
</td>

</tr>
</form>
</table>

 

 

 

SCRIPT PHP QUE FAZ AS BUSCAS EM MEU BANCO DE DADOS

Ele está junto com um script que fiz para paginar os resultados encontrados OK...

<?php
   $qtdlinkslaterais=9;
   $npp=10;
//pega o número da página a mostrar
$page=(!empty($_GET['page'])&&is_numeric($_GET['page']))?$_GET['page']:1;

//Conexão com o banco:  
include("../admin/noticias/configdb.php");

$busca=(!empty($_GET['finalidade']))?mysql_real_escape_string($_GET['finalidade']):'';
$busca=(!empty($_GET['tipo']))?mysql_real_escape_string($_GET['tipo']):'';
$busca=(!empty($_GET['cidade']))?mysql_real_escape_string($_GET['cidade']):'';

if($busca=='')
if($busca=='')
if($busca=='')

//consulta para pegar o total de resultados encontrados
$sql="SELECT COUNT(*) AS total FROM imoveis WHERE finalidade LIKE '%" . $finalidade . "%' OR tipo LIKE '%" . $tipo . "%' OR cidade LIKE '%" . $cidade . "%' order by valor";
$res=@mysql_query($sql, $conexao) or die("Erro no MySQL:<br/>" . mysql_errno());
   $total=mysql_result($res, 0, 'total');
   mysql_free_result($res);
   //se não encontrou resultados
   if($total==0)
   {
       echo "<div style='width:500px; border-right:0px blue solid; color:gray;'>
	Desculpe-nos. Pode ter havido um engano não encontramos nada relacionado com sua busca <font color='red' size='5'><u>" . $finalidade . " </u></font>.</br> <a href='/'>Tente novamente.</a></div> ";
       exit();
}

//pega total de páginas arredondando o número para cima
   $pages=ceil($total/$npp);

//maior que o total de páginas
   $page=max(min($pages, $page), 1);
   $inicio=($page-1)*$npp;

//Recupera resultados
$sql="SELECT * FROM imoveis WHERE finalidade LIKE '%" . $finalidade . "%' OR tipo LIKE '%" . $tipo . "%' OR cidade LIKE '%" . $cidade . "%' order by valor LIMIT $inicio, $npp";
$res=@mysql_query($sql, $conexao) or die("Erro no MySQL:<br/>" . mysql_errno());
$pmos= min($total, ($inicio+1));
$umos=min($total, ($inicio+$npp));



//exibe informações
echo "<div style='text-align:center; font-size:16px; padding:5px; margin-bottom:15px; color:gray;'>Foram encontrados <b>" . $total . "</b> resultado(s) para - <b><u> " . $finalidade . " </b></u></div> ";


//exibe resultados encontrados no Banco de Dados
while(list($codigo, $tipo, $area, $finalidade, $complemento, $endereço, $bairro, $cidade, $valor, $telefone, $informações, $foto, $lat, $lon)=mysql_fetch_array($res))
{

//MOSTRA OS RESULTADOS DENTRO DESTA TABELA HTML

echo "
$codigo<br>";



}
echo "<div style='width:300px; text-align:center;float:left; margin-left:190px;font-size:20px;border-left:0px red solid;border-right:0px red solid;'>";

mysql_free_result($res);


//exibe painel de navegação por páginas
   if($page>1)
{
$panterior=$page-1;
echo "<a href=\"?resultado=" . $busca . "&page=" . $panterior . "\"> Anterior </a>";}

   $latesq=($page-$qtdlinkslaterais<1)?1:$page-$qtdlinkslaterais;
   $latdir=($page+$qtdlinkslaterais>$pages)?$pages:$page+$qtdlinkslaterais;
   for($i=$latesq; $i<=$latdir; $i++)
   {
       if($i==$page)
       {
           echo "<font color='blue' size='6'><b>" . $i . " </b></font> ";
           continue;}

echo "<a href=\"?resultado=" . $busca . "&page=" . $i . "\"> " . $i . "</a> ";
   }
   if($page<$pages)

{
       $pproxima=$page+1;
       echo "<a href=\"?resultado=" . $busca . "&page=" . $pproxima . "\"> Próxima</a>";}
?></div>

Porém ainda não esta muito certo uma vez que quando eu marco as opções a serem buscadas em meu banco ele apenas filtra a opção cidade me mostrando todos os resultados da cidade escolhida.

Vejam o link de como fica após eu mandar pesquisar. ELE PEGA OS VALORES [GET] MARCADOS NO FORMULARIO POREM SÓ FILTRA AS CIDADES...

procurar.php?finalidade=comprar&tipo=casa&cidade=CIDADE_ESCOLHIDA.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal fiz algumas mudanças porem ainda naum esta legal..

<?php
   $qtdlinkslaterais=9;
   $npp=10;
//pega o número da página a mostrar
$page=(!empty($_GET['page'])&&is_numeric($_GET['page']))?$_GET['page']:1;

//Conexão com o banco:  
include("../admin/noticias/configdb.php");

//pega o valor do campo de busca
$busca=(!empty($_GET['finalidade']))?mysql_real_escape_string($_GET['finalidade']):'';

//consulta para pegar o total de resultados encontrados
   $sql="SELECT COUNT(*) AS total FROM imoveis WHERE finalidade LIKE '%" . $busca . "%' AND tipo LIKE '%" . $busca . "%' AND cidade LIKE '%" . $busca . "%' order by valor";
$res=@mysql_query($sql, $conexao) or die("Erro no MySQL:<br/>" . mysql_errno());
   $total=mysql_result($res, 0, 'total');
   mysql_free_result($res);
   //se não encontrou resultados
   if($total==0)
   {
       echo "<div style='width:500px; border-right:0px blue solid; color:gray;'>
       Desculpe-nos. Não foi encontrado nenhum imóvel.</br> <a href='./'>Voltar.</a></div> ";
       exit();
}
//pega total de páginas arredondando o número para cima
   $pages=ceil($total/$npp);

//maior que o total de páginas
   $page=max(min($pages, $page), 1);
   $inicio=($page-1)*$npp;
//Recupera resultados
   $sql="SELECT * FROM imoveis WHERE finalidade LIKE '%" . $busca . "%' AND tipo LIKE '%" . $busca . "%' AND cidade LIKE '%" . $busca . "%' order by valor LIMIT $inicio, $npp";
$res=@mysql_query($sql, $conexao) or die("Erro no MySQL:<br/>" . mysql_errno());
   $pmos= min($total, ($inicio+1));
   $umos=min($total, ($inicio+$npp));

//exibe resultados encontrados no Banco de Dados
   while(list($codigo, $tipo, $area, $finalidade, $complemento, $endereço, $bairro, $cidade, $valor, $telefone, $informações, $foto, $lat, $lon)=mysql_fetch_array($res))
{
//MOSTRA OS RESULTADOS DENTRO DESTA TABELA HTML

echo "
$finalidade - $tipo - $cidade<br>";

}
echo "<div style='width:300px; text-align:center;float:left; margin-left:190px;font-size:20px;border-left:0px red solid;border-right:0px red solid;'>";

mysql_free_result($res);

//exibe painel de navegação por páginas
   if($page>1)
{
   $panterior=$page-1;
   echo "<a href=\"?resultado=" . $busca . "&page=" . $panterior . "\"> Anterior </a>";}

   $latesq=($page-$qtdlinkslaterais<1)?1:$page-$qtdlinkslaterais;
   $latdir=($page+$qtdlinkslaterais>$pages)?$pages:$page+$qtdlinkslaterais;
   for($i=$latesq; $i<=$latdir; $i++)
   {
       if($i==$page)
       {
           echo "<font color='blue' size='6'><b>" . $i . " </b></font> ";
           continue;}

echo "<a href=\"?resultado=" . $busca . "&page=" . $i . "\"> " . $i . "</a> ";
   }
   if($page<$pages)

{
       $pproxima=$page+1;
       echo "<a href=\"?resultado=" . $busca . "&page=" . $pproxima . "\"> Próxima</a>";}
?></div>

ele ainda me retorna os resultados obtidos somente do primeiro <select> da finalidade que é ALUGAR OU COMPRAR o restante ele não filtra - o tipo de imóvel (casa, apto ou terreno) e nem a cidade - ficando assim..

procurar.php?finalidade=alugar&tipo=Casa&cidade=Campo+Grande+-+MS

Alguem tem um modelo pronto ai pra me arrumar.

rsrsrsrsr não custa nada perguntar né rsrsrs

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.