Ir para conteúdo

POWERED BY:

Arquivado

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

Rodrigo Souza

Filtro com vários campos

Recommended Posts

Boa tarde galera...

 

To querendo fazer um filtro para um site de imobiliaria...

 

eu tenho os seguintes arquivos... consulta.html (onde tem o form com os dados para efetuar o filtro) e resultado.php (resultados filtrados)..

 

bom no arquivo consulta.html tem os seguintes itens:

 

O --> Alugar O --> Vender

 

 

O --> Residencial O --> Comercial

 

 

menu/list com o tipo de imóvel (Apartamento, casas térreas, etc..)

 

e finalmente faixa de preço com dois menu/list

 

1º Preço minimo (sem minimo, R$ 500,00, R$ 700,00, R$ 1.000,00)

 

2º Preço máximo (R$ 500,00, R$ 700,00, R$ 1.000,00, sem máximo)

 

e o botão de enviar...

 

 

Já no arquivo resultado.php vão vir os resultados em forma de tabela..

 

 

Eu queria ter uma base de como fazer, pois tá dificil, e eu não manjo muita coisa de php...

 

obrigado desde já

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rodrigo, geralmente funciona assim:Como você não explicou no que tem duvida .. vou explicar desde o começo ..No arquivo consulta.php você tem o formulário com os nomes dos campos e tals.Na tag FORM consta a definição do metodo de envio(METHOD): GET ou POST (recomendo POST para esse caso)Há também a tag ACTION na qual você identificará a pag resultado.phpNo arquivo resultado.php você deverá pegar as variáveis do FORM que o usuario digitouPode-se utilizar o método REQUEST, ou seja, se você tem um campo chamado Tipo de Ímovel em consulta.php com o nome 'tipo_imovel', esse valor deve ser pego na pag de resultado por $_REQUEST['tipo_imovel']Dessa forma você consegue as variaveis do FORM, pode fazer a busca no banco de dados e apresentar as informações ao usuário.Qualquer coisa posta aew

Compartilhar este post


Link para o post
Compartilhar em outros sites

putz... já é um começo.. vlw...Na verdade acabei esquecendo de colocar minha dúvida mesmo... viajei!Eu to com dúvida no seguinte... isso que você me explicou era uma das coisas... a outra é como filtrar os dados... sei que tem um código que tem que colocar %LIKE% (pra você ver como eu manjo pacas :P..hiuaiua) ou alguma coisa assim... mas não sei a estruturação do código...no meu banco de dados "teste" tem a tabela "locacao" com os seguintes campos "tipo" (que corresponde ao alugar/vender do form), "finalidade" ( = residencial/comercial), "imovel" (apartamento, casas terreas, sobrados, etc), "endereço" (este não está no form pq não irá fazer filtro por endereço, mas vai ter que sair no resultado) e "valor" (este corresponde aos dois menu/list do form faixa de preço, esse realmente é mais dificil pois tem que filtrar de acordo com a faixa de preço que a pessoa escolher no form).Pessoal, agradeço toda a ajuda tá.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz o exemplo que está nesse link e tá dando erro na página resultado.php.... vou postar colocar aqui minhas 3 páginas pra vcs analisarem se estou fazendo algo de errado ok...

 

conectdb1.php

 

<?php/** local que está rodando o php */$hostname = 'localhost';/** nome do usuario que tem acesso ao banco de dados */$username = 'root';/** senha do usuario */$senha = '123';/** banco de dados desejado */$banco = 'filtro';/** mysql_connect -- abre uma conexão com o banco de dados */$db = mysql_connect($hostname,$username,$senha) or die ("erro na conexão com o banco!");/** mysql_select_db -- seleciona um banco de dador mysql */mysql_select_db($banco,$db);?>

consulta1.php

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Untitled Document</title></head><body><form id="form1" name="form1" method="post" action="resultado.php">  <label for="select"></label>  <p>	<select name="UF" id="UF">	  <option>Selecione um estado</option>	  <option value="Parana">Paraná</option>	  <option value="Sao Paulo">São Paulo</option>	  <option value="Rio de Janeiro">Rio de Janeiro</option>	</select></p>  <p>	<label for="select"></label>	<select name="Localidade" id="Localidade">	  <option>selecione uma localidade</option>	  <option value="eu">Eu</option>	  <option value="tu">Tu</option>	  <option value="eles">Eles</option>	  <option value="nos">Nós</option>	  <option value="vos">Vós</option>	  <option value="eles">Eles</option>	</select></p>  <p>	<label for="Submit"></label>	<input type="submit" name="submit" value="Enviar" id="submit" />  </p></form></body></html>

resultado.php

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Untitled Document</title></head><body><? include "conectdb1.php"; $UF = $_GET['UF']; $Local = $_GET['Localidade']; $auxwheresql = array();  if (!empty($Local)) { // CAMPO1 DA PESQUISA 	$auxwheresql[] = "Nom_Localidade LIKE '%{$Local}%'"; } if (!empty($UF)) { // CAMPO2 DA PESQUISA 	$auxwheresql[] = "UF_LOC = '{$UF}'";  }  // ADICIONE AQUI QUANTOS CAMPOS QUISER À PESQUISA $auxsql = "Select DISTINCT NOM_LOCALIDADE, UF_LOC FROM Cidades";  if (count($auxwheresql)) { 	$auxsql .= ' WHERE '. join(' AND ', $auxwheresql); }  $auxsql .= ' ORDER BY UF_LOC, NOM_LOCALIDADE'; $sql = mysql_query($auxsql); if(!$sql){echo mysql_error();exit();} $total = mysql_fetch_row($sql); if($total == 0) { 	echo "Não foi encontrado nenhum resultado em sua busca!"; 	exit; } else { // é só listar os dados agora... ?></body></html>

tá dando esse erro "Parse error: parse error in c:\windows\serv-n\www\resultado.php on line 42".

 

Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pronto! Alterado... fiz umas modificações que achei num post que você ajudou o Corsoboy... dai agora dá uma mensagem assim "Resource id #4" ...

 

dai imprimi a variavel $auxsql e está assim:

"Select DISTINCT Nom_localidade, UF_LOC FROM teste WHERE Nom_localidade LIKE '%eu%' AND UF_LOC = 'Parana'ORDER BY UF_LOC"

 

bom .. ai vai o código ...

 

CODE
<?php 

require_once('conectdb1.php'); 

$UF $_POST['UF']; 

$Local $_POST['Localidade']; 

 

$auxwheresql = array();

 

if (!empty(

$Local)) { // CAMPO1 DA PESQUISA 

$auxwheresql[] = "Nom_localidade LIKE '%{$Local}%'"

if (!empty(

$UF)) { // CAMPO2 DA PESQUISA 

$auxwheresql[] = "UF_LOC = '{$UF}'";

}

// ADICIONE AQUI QUANTOS CAMPOS QUISER À PESQUISA 

 

$auxsql "Select DISTINCT Nom_localidade, UF_LOC FROM teste";

if (

count($auxwheresql)) { 

$auxsql .= ' WHERE 'join(' AND '$auxwheresql); 

}

 

$auxsql.= 'ORDER BY UF_LOC'

$sql mysql_query($auxsql); 

if(!

$sql){echo mysql_error();exit();

}else{ 

$total mysql_num_rows($sql); 

echo 

$sql;

}

// é só listar os dados agora... 

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

estão sim... estão os dois como VARCHAR 30 caracteres... o "Nom_localidade" está como chave primária..está certo né?entrei lá pra trocar a chave primária para UF_LOC e olha a msg que deu..Mensagens do MySQL : #1062 - Entrada 'Sao Paulo' duplicada para a chave 1 Warning: mysql_result(): Unable to jump to row -1 on MySQL result index 37 in c:\windows\serv-n\phpmyadmin\libraries\common.lib.php on line 685 Acho que vou adicionar um campo "id", o que você acha??Pq, nesse caso, não poderiam ter vários valores "Sao Paulo" ??

Compartilhar este post


Link para o post
Compartilhar em outros sites

página em branco... inclui um campo "id" na tabela e coloquei como chave primária (INT 20 auto_increment), eu tenho que inclui-la no código também??outra coisa, esse código não tem que ser dentro da tag body não né?

Compartilhar este post


Link para o post
Compartilhar em outros sites

me diz uma coisa...

 

qual a diferença entre:

 

CODE
<?php

 

if (!empty($Local)) { // CAMPO1 DA PESQUISA 

$auxwheresql[] = "Nom_localidade LIKE '%{$Local}%'"

 

?>

 

e:

 

CODE
<?php

 

if (!empty($UF)) { // CAMPO2 DA PESQUISA 

$auxwheresql[] = "UF_LOC = '{$UF}'";

 

?>

 

eu quero dizer que um está como "LIKE" e o outro com o sinal de " = ", qual a diferença entre usar um e outro???

 

outra coisa... para fazer o filtro, os campos no bd tem que ser "VARCHAR" ou "INT", ou qualquer um é feito o filtro??

 

eu tenho dois campos no form (eu posto o código depois) que seria a faixa de preço... um é o preço minimo e outro o preço máximo, quando for feito o filtro ele teria que listar os valores entre o preço minimo e o preço máximo... como ficaria esse código??

 

obrigado desde já a colaboração

Compartilhar este post


Link para o post
Compartilhar em outros sites

olá denovo..hehee

 

não entendi a ultima parte do código....

 

CODE
<?php

 

 

while ($linha=mysql_fetch_array($resultado)) {

$id $linha['id'];

$tipo_imovel $linha['tipo_imovel'];

$dormitorios $linha['dormitorios'];

$endereco1 $linha['endereco'];

$bairro $linha['bairro'];

$descricao $linha['descricao'];

$valor $linha['valor'];

$foto1 $linha['foto1'];

$foto2 $linha['foto2'];

$foto3 $linha['foto3'];

$foto4 $linha['foto4'];

 

echo 

"<tr bordercolor='#333333'>";

echo 

"<td width=50><div align='center'>$tipo_negocio</td>";

echo 

"<td width=50><div align='left'>$tipo_imovel</td>";

echo 

"<td width=50><div align='center'>$dormitorios</td>";

echo 

"<td width=100><div align='left'>$endereco1</td>";

echo 

"<td width=100><div align='left'>$bairro</td>";

echo 

"<td width=150><div align='left'>$descricao</td>";

echo 

"<td width=50><div align='left'>R$ "number_format($valor2',''.') ."</td>";

echo;

}

 

 

?>

 

 

outra coisa... aparece a mensagem "não há resultados para sua busca", sendo que existem!!! vou colocar a figura dos campos no bd...

 

Imagem Postada

 

e dos registros que realmente EXISTEM...

 

Imagem Postada

 

vlwwww

 

meu código tá assim agora:

 

CODE

<?php

 

include "conectdb1.php";

 

//$conexao = mysql_connect("localhost","root","root");

 

$tipo_imovel $_POST['tipo_imovel'];

$finalidade $_POST['finalidade'];

$imovel_tipo $_POST['imovel_tipo'];

$preco_minimo $_POST['preco_minimo'];

$preco_maximo $_POST['preco_maximo'];

 

$auxwheresql = array();

 

if (!empty($tipo_imovel)) { // CAMPO1 DA PESQUISA 

$auxwheresql[] = "tipo = '{$tipo_imovel}'";

if (!empty($finalidade)) { // CAMPO2 DA PESQUISA 

$auxwheresql[] = "finalidade = '{$finalidade}'";

}

if (!empty($imovel_tipo)) {

$auxwheresql[] = "imovel = '{$imovel_tipo}'";

}

// ADICIONE AQUI QUANTOS CAMPOS QUISER À PESQUISA 

 

$auxsql "Select DISTINCT tipo, finalidade, imovel FROM imoveis";

if (count($auxwheresql)) { 

$auxsql .= ' WHERE 'join(' AND '$auxwheresql); 

}

 

$auxsql .= ' ORDER BY imovel, finalidade'

$sql mysql_query($auxsql); 

if(!$sql){echo mysql_error();exit();} 

 

$total mysql_fetch_row($sql); 

 

if($total == 0) { 

echo "Não foi encontrado nenhum resultado em sua busca!"

exit; 

} else { 

/*$sql = "SELECT id,tipo_negocio,tipo_imovel,dormitorios,endereco,bairro,descricao,foto1,fot

o2,fo

to3,foto4,valor FROM imobiliaria*/

//ORDER BY tipo_negocio";

 

$resultado mysql_query($sql)

 

or die ("Não foi possível realizar a consulta ao banco de dados");

 

echo "<table width='500' border='1' cellpadding='0' cellspacing='1' bordercolor='#FFFFFF'>";

 

echo "<tr bgcolor='#333333' bordercolor='#333333'>";

 

echo "<td width=50><div align='center'><font color='#FFFFFF' size='2' face='Tahoma'>NEGÓCIO</td>";

echo "<td width=50><div align='left'><font color='#FFFFFF' size='2' face='Tahoma'>TIPO IMOVEL:</td>";

echo "<td width=50><div align='left'><font color='#FFFFFF' size='2' face='Tahoma'>DORMITÓRIOS:</td>";

echo "<td width=100><div align='left'><font color='#FFFFFF' size='2' face='Tahoma'>ENDEREÇO:</td>";

echo "<td width=100><div align='left'><font color='#FFFFFF' size='2' face='Tahoma'>BAIRRO:</td>";

echo "<td width=150><div align='left'><font color='#FFFFFF' size='2' face='Tahoma'>DESCRICAO:</td>";

echo "<td width=50><div align='left'><font color='#FFFFFF' size='2' face='Tahoma'>VALOR:</td>";

echo "<td width=50><div align='left'><font color='#FFFFFF' size='2' face='Tahoma'>FOTO:</td>";

 

echo "</tr>";

 

while ($linha=mysql_fetch_array($resultado)) {

$id $linha['id'];

$tipo_imovel $linha['tipo_imovel'];

$dormitorios $linha['dormitorios'];

$endereco1 $linha['endereco'];

$bairro $linha['bairro'];

$descricao $linha['descricao'];

$valor $linha['valor'];

$foto1 $linha['foto1'];

$foto2 $linha['foto2'];

$foto3 $linha['foto3'];

$foto4 $linha['foto4'];

 

echo "<tr bordercolor='#333333'>";

echo "<td width=50><div align='center'>$tipo_negocio</td>";

echo "<td width=50><div align='left'>$tipo_imovel</td>";

echo "<td width=50><div align='center'>$dormitorios</td>";

echo "<td width=100><div align='left'>$endereco1</td>";

echo "<td width=100><div align='left'>$bairro</td>";

echo "<td width=150><div align='left'>$descricao</td>";

echo "<td width=50><div align='left'>R$ "number_format($valor2',''.') ."</td>";

echo;

}

 

echo "</table>";

}

?>

 

a ultima parte eu não mudei pq ainda não tinha entendido...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, a minha intenção é, depois que o código estiver funcionando, fazer um tutorial completo, desde criar tabelas no db até a visualização do código e colocar na área de tutoriais... mas isso eu só consigo com a ajuda de vocês para resolver esse problema que tenho em mãos....obrigado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal... arrumei uns valores no form que estavam errados mas, agora a mensagem é outra..."Não foi possível realizar a consulta ao banco de dados"O que será agora ?valeu

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.