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

Combo dinâmico para consulta de imóveis


Murilo Cabral

Pergunta

Olá amigos peguei uma vídeo-aula no YouTube e inseri um sistema de combo dinâmico nas select para fazer busca de imóveis.
Estarei relacionando abaixo dois endereços para acesso para que os amigos possam ver o que esta acontecendo em ambos.

Endereço de acesso sem o combo e funcionando e retornando resultado:
http://www.buziosnegocios.com.br/index_simples.php

Endereço de acesso com o combo funcionando porém não retorna a busca solicitada:
http://www.buziosnegocios.com.br/index_simples.php

Lembrando aos amigos de que há um cadastro no BD, conforme a consulta no endereço sem o Combo.

estou relacionando abaixo os códigos usados em ambos, OK?

--------------------------------- Funcionando sem o combo -------------------------------------

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<?php include "conexao.php"; ?>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Busca por Imóveis</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data" >
<td>
<select id="cidades" name="nome_cid">
<option value="" selected="selected">Cidade...</option>
<?php
$select = mysql_query("SELECT * FROM anuncio ORDER BY nome_cid ASC");
if(mysql_num_rows($select) == 0){
echo '<option value="">Não foram encontrados nenhum imóvel nessa cidade!!!</option>';
}else{
while($res = mysql_fetch_array($select)){
echo '<option value="'.$res['nome_cid'].'">'.$res['nome_cid'].'</option>';
?>
<? }} ?>
</select>
</td>
<td>
<select name="nome_bai">
<option value="" selected="selected">Bairro...</option>
<?php
$select = mysql_query("SELECT * FROM anuncio ORDER BY nome_bai ASC");
if(mysql_num_rows($select) == 0){
echo '<option value="">Não foram encontrados nenhum imóvel nesse bairro!!!</option>';
}else{
while($res = mysql_fetch_array($select)){
echo '<option value="'.$res['nome_bai'].'">'.$res['nome_bai'].'</option>';
?>
<? }} ?>
</select>
</td>
<td>
<select name="nome_tipo">
<option value="" selected="selected">Tipo de Imóvel...</option>
<?php
$select = mysql_query("SELECT * FROM anuncio ORDER BY nome_tipo ASC");
if(mysql_num_rows($select) == 0){
echo '<option value="">Não foram encontrados nenhum imóvel desse tipo!!!</option>';
}else{
while($res = mysql_fetch_array($select)){
echo '<option value="'.$res['nome_tipo'].'">'.$res['nome_tipo'].'</option>';
?>
<? }} ?>
</select>
</td>
<td>
<select name="nome_obj">
<option value="" selected="selected">Para...</option>
<?php
$select = mysql_query("SELECT * FROM anuncio ORDER BY nome_obj ASC");
if(mysql_num_rows($select) == 0){
echo '<option value="">Não foram encontrados nenhum imóvel com esse objetivo!!!</option>';
}else{
while($res = mysql_fetch_array($select)){
echo '<option value="'.$res['nome_obj'].'">'.$res['nome_obj'].'</option>';
?>
<? }} ?>
</select>
</td>
<td>
<select name="num_quarto">
<option value="" selected="selected">Nº. de quarto...</option>
<?php
$select = mysql_query("SELECT * FROM anuncio ORDER BY num_quarto ASC");
if(mysql_num_rows($select) == 0){
echo '<option value="">Não foi(ram) encontrado(s) nenhum imóvel com essa quantidade de quarto(s)!!!</option>';
}else{
while($res = mysql_fetch_array($select)){
echo '<option value="'.$res['num_quarto'].'">'.$res['num_quarto'].'</option>';
?>
<? }} ?>
</select>
</td>
<td>
<select id="valor" name="valor">
<option value="" selected="selected">Preço até...</option>
<option value="1000">Até 1.000,00</option>
<option value="5000">Até 5.000,00</option>
<option value="10000">Até 10.000,00</option>
<option value="50000">Até 50.000,00</option>
<option value="100000">Até 100.000,00</option>
<option value="200000">Até 200.000,00</option>
<option value="300000">Até 300.000,00</option>
<option value="400000">Até 400.000,00</option>
<option value="500000">Até 500.000,00</option>
<option value="600000">Até 600.000,00</option>
<option value="700000">Até 700.000,00</option>
<option value="1000000">Até 1.000.000,00</option>
<option value="5000000">Até 5.000.000,00</option>
</select>
</td>
<input type="hidden" name="acao" value="enviar" />
<input type="submit" value="buscar" />
</form>
<hr />
<?php
if(isset($_POST['acao']) && $_POST['acao'] == 'enviar'){
$nome_tipo = $_POST['nome_tipo'];
$nome_obj = $_POST['nome_obj'];
$nome_bai = $_POST['nome_bai'];
$nome_cid = $_POST['nome_cid'];
$num_quarto = $_POST['num_quarto'];
$tiulo = $_POST['titulo'];
$foto01 = $_POST['foto01'];
$valor = $_POST['valor'];
switch($valor){
case '1000';
$valor = 'AND valor <= 1000';
break;
case '5000';
$valor = 'AND valor BETWEEN 1000 and 5000';
break;
case '10000';
$valor = 'AND valor BETWEEN 5000 and 10000';
break;
case '50000';
$valor = 'AND valor BETWEEN 10000 and 50000';
break;
case '100000';
$valor = 'AND valor BETWEEN 50000 and 100000';
break;
case '200000';
$valor = 'AND valor BETWEEN 100000 and 200000';
break;
case '300000';
$valor = 'AND valor BETWEEN 200000 and 300000';
break;
case '400000';
$valor = 'AND valor BETWEEN 300000 and 400000';
break;
case '500000';
$valor = 'AND valor BETWEEN 400000 and 500000';
break;
case '1000000';
$valor = 'AND valor BETWEEN 500000 and 1000000';
break;
case '5000000';
$valor = 'AND valor BETWEEN 1000000 and 5000000';
break;
}
$selecione_imovel = mysql_query("SELECT * FROM anuncio WHERE nome_tipo = '$nome_tipo' AND num_quarto = '$num_quarto' AND nome_obj = '$nome_obj' AND nome_cid = '$nome_cid' AND nome_bai = '$nome_bai' $valor");
if(mysql_num_rows($selecione_imovel) == 0){
echo '<h1>Desculpe, mais sua busca não retornou resultados!!!</h1>';
}else{
while($linhaImovel = mysql_fetch_array($selecione_imovel)){
printf('<table align="center">
<td align="left">
<a href="cad/anunc.php?id=%s" target="_new">
<img style=" position: relative;
border: 5px solid #CCC;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
-webkit-box-shadow: 0 0 2px #999;
-moz-box-shadow: 0 0 2px #999;
box-shadow: 0 0 2px #999;
"align="left" width="auto" height="90" src="cad/uploads/'.$linhaImovel["foto01"].'" />
</a>
</td>', $linhaImovel ['id'], $linhaImovel ['foto01']);
printf('
<td width="250">
<a href="cad/anunc.php?id=%s" target="_new">
<span style=" margin-bottom:auto; font-family:Verdana, Geneva, sans-serif; font-size:12px;">'.$linhaImovel["titulo"].'</span>
</a>', $linhaImovel ['id'], $linhaImovel ['titulo'] );
printf('<br />
<span style=" margin-bottom:auto; font-family:Verdana, Geneva, sans-serif; font-size:12px;">Com
'.$linhaImovel["num_quarto"].' quarto(s)</span>
<br />
<span style=" color:red; font-family:Verdana, Geneva, sans-serif; font-size:20px; font-weight:bold; ">R$ '.$linhaImovel["valor"].'</span>
</td>
</table>');
?>
<hr />
<?php
}}}
?>
<br />
<br />
</body>
</html>

--------------------------------- Fim do código -------------------------------------

--------------------------------- Com o combo, e não retornando o resultado da busca -------------------------------------

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<?php include "conexao.php"; ?>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Busca por Imóveis</title>
<script type="text/javascript" src="js/jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="js/funcoes.js"></script>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data" id="form_bairros">
<td>
<select id="cidades" name="cidades">
<option value="0">Cidade...</option>
<?php
$sql = mysql_query("SELECT * FROM cidades");
while($row = mysql_fetch_array($sql)){
$id = $row['cod_cidades'];
$nome = $row['nome'];
?>
<option value="<?php echo $id ?>"><?php echo $nome ?></option>
<? } ?>
</select>
</td>
</td>
<select id="bai" name="bai">
<option value="0">Bairro...</option>
</select>
</td>
<td>
<select id="tipo" name="tipo">
<option value="0">Tipo de imóvel...</option>
</select>
</td>
<td>
<select id="objetivo" name="objetivo">
<option value="0">Para...</option>
</select>
</td>
<td>
<select id="quarto" name="quarto">
<option value="0">Nº. de quarto...</option>
</select>
</td>
<td>
<select id="preço" name="valor">
<option value="0">Preço...</option>
</select>
</td>
<input type="hidden" name="acao" value="enviar" />
<input type="submit" value="buscar" />
</form>
<hr />
<?php
if(isset($_POST['acao']) && $_POST['acao'] == 'enviar'){
$nome_tipo = $_POST['nome_tipo'];
$nome_obj = $_POST['nome_obj'];
$nome_bai = $_POST['nome_bai'];
$nome_cid = $_POST['nome_cid'];
$num_quarto = $_POST['num_quarto'];
$tiulo = $_POST['titulo'];
$foto01 = $_POST['foto01'];
$valor = $_POST['valor'];
switch($valor){
case '1000';
$valor = 'AND valor <= 1000';
break;
case '5000';
$valor = 'AND valor BETWEEN 1000 and 5000';
break;
case '10000';
$valor = 'AND valor BETWEEN 5000 and 10000';
break;
case '50000';
$valor = 'AND valor BETWEEN 10000 and 50000';
break;
case '100000';
$valor = 'AND valor BETWEEN 50000 and 100000';
break;
case '200000';
$valor = 'AND valor BETWEEN 100000 and 200000';
break;
case '300000';
$valor = 'AND valor BETWEEN 200000 and 300000';
break;
case '400000';
$valor = 'AND valor BETWEEN 300000 and 400000';
break;
case '500000';
$valor = 'AND valor BETWEEN 400000 and 500000';
break;
case '1000000';
$valor = 'AND valor BETWEEN 500000 and 1000000';
break;
case '5000000';
$valor = 'AND valor BETWEEN 1000000 and 5000000';
break;
}
$selecione_imovel = mysql_query("SELECT * FROM anuncio WHERE nome_tipo = '$nome_tipo' AND num_quarto = '$num_quarto' AND nome_obj = '$nome_obj' AND nome_cid = '$nome_cid' AND nome_bai = '$nome_bai' AND $valor");
if(mysql_num_rows($selecione_imovel) == 0){
echo '<h2>Desculpe, mais sua busca não retornou resultados!!!</h2>';
}else{
while($linhaImovel = mysql_fetch_array($selecione_imovel)){
printf('<table align="center">
<td align="left">
<a href="cad/anunc.php?id=%s" target="_new">
<img style=" position: relative;
border: 5px solid #CCC;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
-webkit-box-shadow: 0 0 2px #999;
-moz-box-shadow: 0 0 2px #999;
box-shadow: 0 0 2px #999;
"align="left" width="auto" height="90" src="cad/uploads/'.$linhaImovel["foto01"].'" />
</a>
</td>', $linhaImovel ['id'], $linhaImovel ['foto01']);
printf('
<td width="250">
<a href="cad/anunc.php?id=%s" target="_new">
<span style=" margin-bottom:auto; font-family:Verdana, Geneva, sans-serif; font-size:12px;">'.$linhaImovel["titulo"].'</span>
</a>', $linhaImovel ['id'], $linhaImovel ['titulo'] );
printf('<br />
<span style=" margin-bottom:auto; font-family:Verdana, Geneva, sans-serif; font-size:12px;">Com
'.$linhaImovel["num_quarto"].' quarto(s)</span>
<br />
<span style=" color:red; font-family:Verdana, Geneva, sans-serif; font-size:20px; font-weight:bold; ">R$ '.$linhaImovel["valor"].'</span>
</td>
</table>');
?>
<hr />
<?php
}}}
?>
<br />
<br />
</body>
</html>

--------------------------------- Fim do código -------------------------------------

Se os amigos puderem analisar e me ajudar a solucionar este problema, ficarei muito agradecido.

Desde já meus agradecimentos pela atenção e na expectativa de boas resposta para o meu problema.
Grande abraço a todos.

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Como você quer que a página funcione? Tem vários selects... ao clicar em "BUSCA" o sistema procura os imoveis de acordo com o que foi selecionado? Por exemplo: "Campo para" = aluguel, + numero quartos=2 + Buscar = retorna tudo que é aluguel + 2 quartos.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Sandro,

desde já agradeço a sua atenção e paciência para me ajudar com esse problema.

Vou tentar te explicar o que eu pretendo.
no endereço http://www.buziosnegocios.com.br/index_simples.php,

você consegue fazer a consulta, do imóvel cadastrado, obtendo o resultado referente a esse imóvel.

Porém se eu cadastrar mais imóveis, ele irá trazer todos os dados cadastrados, repetindo a mesma cidade por varias vezes, assim como os outros dados,

causando uma grande lista, OK?

O que eu gostaria, é que quando o usuário selecione o Select da cidade, já apareça somente as sete cidades que forma a região dos lagos aqui do RJ.

Ele seleciona a cidade desejada, para que carregue o Select dos bairros referente a cidade selecionada, quando houver cadastro de imóveis para esse bairro.

E assim sucessivamente com os próximos Select's, fazendo assim com que o usuário não perca tempo em consultas que não trará resultados.

Ou seja no exemplo já cadastrado, o imóvel possui 2 quartos, mas caso ele deseje com mais quartos ele entenderá de que não há imóvel disponível para consulta com essa quantidade de quartos. E assim com todos os combos, como somente irá aparecer os dados cadastrados referente aos imóveis realmente cadastrados.

Espero ter conseguido me expressar para que você entenda o que eu desejo fazer.

Vou cadastrar outros imóvel no BD para que possa ter como exemplo de base, ao acessar o endereço http://www.buziosnegocios.com.br/index_dinamico.php, OK?

Mais uma vez te agradeço pela atenção.

Obrigado,

Murilo

Link para o comentário
Compartilhar em outros sites

  • 0

Murilo, 2 formas de se fazer.

1a. forma: Recarregamento das páginas:

1. o usuário seleciona a cidade.

2. o sistema recarrega a página (index.php) e pega o id da cidade em $id_cidade=$_POST['id_cidade'];

3. o sistema faz uma busca no BD para pegar os bairros desta cidade;

4. o sistema mostra a cidade e o próximo select com os bairros desta cidade;

5. o cliente seleciona o bairro

... repete os passos 2 3 4 5.. para cada select do formulario

veja a resposta que eu dei para um caso parecido de recarregamento de página neste link: https://www.scriptbrasil.com.br/forum/topic/176188-dados-no-proprio-formulario/

no seu caso é mais complexo, porque exige varios recarregamentos e a url você vai acrescentando variaveis: ex: index.php?id_cidade=5&id_bairro=4&id_tipo=2 ...

2a. forma: por Ajax.

Essa forma é muito mais complicada porque exige conhecimentos e javascript, php e metodologia Ajax.

Mas o principio é o mesmo, embora não precise do recarregamento das páginas, pois através do Ajax as requisições são feitas a um script em php externo, voltando os dados necessários à página sem recarregar.

Procure por exemplos de uso do ajax() e jquery se for partir para esta opção.

Link para o comentário
Compartilhar em outros sites

  • 0

Boa noite Sandro, beleza?
Cara brigadão pela dica, consegui fazer com que funcionasse a busca com o combo dinâmico.
Eu estava buscando os nomes dos itens a serem consultados, quando eu deveria usar no select os códigos dos itens.

Quando efetuei a alteração de um pelo outro funcionou.
Como sempre os meus erros sempre estão entre a cadeira e PC. Rsrsrsrsr....

Mas aproveitando a oportunidade, me diz ai como que eu posso gravar dois valores de um Select em dois campos diferente de uma tabela do BD.

Vou explicar o que eu preciso:

Eu tenho esse Select abaixo:

<td>Cidade : <select name="nome_cid">
<option value="" selected="selected">Escolha a cidade...</option>
<?php
$sql = mysql_query("SELECT * FROM cidades ORDER BY nome ASC");
while($row = mysql_fetch_array($sql)){
$id = $row['cod_cidades'];
$nome = $row['nome'];
?>
<option value="<?php echo $nome ?>"><?php echo $nome ?></option>
<? } ?>
<input type="hidden" value="<?php echo $id ?>" name="cod_cidades" />
</select>
<a href="javascript:window.open
</td>
Ele esta gravando perfeitamente o campo "nome_cid" da tabela, porém eu preciso gravar o "cod_cidades" também.
Veja que eu inclui um <input type="hidden" e quase funcionou, pois ele pega sempre o ultimo value do select e grava no campo correto, ou seja o "cod_cidades".
Acho eu que preciso de um javascript ou mesmo um echo ou coisa parecida, mas não tenho ideia.
Fala ai, como posso solucionar esse problema.

Desde já meus agradecimentos pela ajuda e paciência.
Abraços
Link para o comentário
Compartilhar em outros sites

  • 0

Ae Murilo boa noite!

Eu entendi que você quer enviar o codigo e o nome da cidade para a próxima página quando clicar no submit... se for isso:

<option value="<? echo $id.'-'.$nome; ?>"><? echo $nome; ?></option>

Isso vai gerar um html assim:

<option value="1-santos">santos</option>

No inicio da próxima página eu coloco um código para separar a string:

$nome_cid=$_POST['nome_cid'];
list($codigo,$cidade)=explode('-',$nome_cid);

Mas tem de ser através de um SUBMIT(), seja através de um botão type="submit" ou através de javascript: document.form.submit();

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