Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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á
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á.
essa código que tem no link seria da página resultado.php (no meu caso) ??
Yes Sir
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">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">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
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...
?>
Adriano, coloquei o espaço e mesmo assim dá o mesmo erro..."Resource id #4"
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" ??
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é?
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
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($valor, 2, ',', '.') ."</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...
/applications/core/interface/imageproxy/imageproxy.php?img=http://www.rodrigosouza.com/localhost.GIF&key=dc4d725d974e45f4efd1df254ad3c5de24be9b2bd9e1a281ff99fa2094c19527" alt="Imagem Postada" />
e dos registros que realmente EXISTEM...
/applications/core/interface/imageproxy/imageproxy.php?img=http://www.rodrigosouza.com/campos.GIF&key=3008cf9756393dcca0bbd53979c98713763ea6cecef4bcba2e0508d8085f756f" alt="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($valor, 2, ',', '.') ."</td>";
echo;
}
echo "</table>";
}
?>
a ultima parte eu não mudei pq ainda não tinha entendido...
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...
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
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