Ir para conteúdo

POWERED BY:

Arquivado

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

maiconfss

Filtro dinâmicos PHP

Recommended Posts

Bom dia


Pessoal, sou novo no PHP, gostaria de uma ajuda estou fazendo um sistema de busca em PHP onde tenho três campos de pesquisa são eles:

CIDADE

BAIRRO

TIPO

Possuo tres tabelas tambem sao elas:

cidade(campo ==> id, cidade)

bairro(campo ==> id, id_cidade, bairro)

imoveis(campo ==> cod_imoveis, cidade, bairro, tipo, valor, quarto, banheiro, publicado)


Gostaria de saber como fazer os mesmo dinamicamente ou seja quando eu for selecionar a cidade so aparecer as cidades que tem imoveis cadastrados e com o campo publicado(tabela imoveis) igual a SIM, e quando for selecionar o campo bairro só aparecer os bairros da cidade selecionada no campo cidade e com imoveis cadastrados, já o campo apartamento so trazer os apartamentos cujo se encaixem nas opções selecionadas acima.

SERA QUE ALGUÉM PODERIA ME AJUDAR TO QUEBRANDO A CABEÇA JÁ VI VÁRIOS VIDEOS E LÊ TUTORIAIS MAS NÃO ESTOU CONSEGUINDO.

A PESQUISA E FEITA EM UMA PAGINA E ABRE OS RESULTADOS EM OUTRA SE PUDEREM ME ENVIAR O CÓDIGO AGRADEÇO.


DESDE JÁ AGRADEÇO

ABRAÇO

Compartilhar este post


Link para o post
Compartilhar em outros sites

Somente cidades com imóveis

SELECT c.* FROM cidade c, imoveis i WHERE c.id = i.id_cidade AND i.publicado = 1 GROUP BY c.id ORDER BY c.cidade 

Somente bairros com imóveis

SELECT b.id, b.bairro, c.cidade
FROM bairro b, cidade c, imoveis i
WHERE b.id = i.id_bairro
	AND b.id_cidade = c.id
	AND i.id_cidade = c.id
	AND i.publicado = 1
GROUP BY b.id
ORDER BY b.bairro, c.cidade

Minha observação: com um grupo pequeno de registros, você não verá tanto impacto, mas se a tabela de imóveis tiver muitos registros esta metodologia poderá fazer com que suas queries fiquem lentas.

 

Recomendo criar um campo na tabela de cidades e de bairros indicando se aquele bairro/cidade tem imóveis, e então, verificar por esta flag. Esta flag seria atualizada ao salvar um imóvel naquele determinado bairro/cidade.

 

@braços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hugo, obrigado, mas o que preciso é de um scrip mais completão para analisar e estudar em cima, outra questão e que o filtro tem funcionar da seguinte maneira se eu escolher cidade e não preecher o bairro ele pega todos os imoveis da cidade caso contrario pega todos os bairros.

Pode me ajudar?



Pessoal, ai esta meu script, o problema é que nos filtrol quando preencho a cidade ele traz certinho somente os imoveis da cidade que selecionei porem se eu colocar a cidade mais o bairro ele traz não respeita o filtro bairro isso porque coloquei no select como "or" o problema e que se eu colocar "AND" e o cliente não selecionar o bairro ele nao traz nada como faço para isso funcionar, outra dúvida que tenho é como faço para na apresentação dos dados ele trazer o nome da cidade no meu caso ele esta me retornando o id como insiro a informacao para pegar o nome?

 

Desde já agradeço.

 

 

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Listar Imoveis</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
<span>MAICON O CARA</span><br />
<?php
require ('conecao/dbconec.php');
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />'; ?>
</select><br />
<span>Cidade</span><br />
<select name="cidade">
<option value="" selected="selected">Selecione a cidade...</option>
<?php
$pega_cidade = mysql_query("SELECT id_cidade, cidade
FROM cidade
WHERE EXISTS (SELECT * FROM imoveis imo
WHERE cidade.id_cidade = imo.id_cidade AND imo.publicado ='SIM' and imo.vendido ='NAO')");
if(mysql_num_rows($pega_cidade) == 0){
echo '<option value="">Não foram encontrados bairro ainda</option>';
}else{
while($linhaA = mysql_fetch_array($pega_cidade)){
echo '<option value="'.$linhaA['id_cidade'].'">'.$linhaA['cidade'].'</option>';
}
}
?>
</select><br />
<span>Bairro</span><br />
<select name="bairro">
<option value="" selected="selected">Selecione o bairro...</option>
<?php
$pega_bairro = mysql_query("SELECT id_bairro, bairro
FROM bairro
WHERE EXISTS (SELECT * FROM imoveis imo
WHERE bairro.id_bairro = imo.id_bairro AND imo.publicado ='SIM' and imo.vendido ='NAO')");
if(mysql_num_rows($pega_bairro) == 0){
echo '<option value="">Não foram encontrados bairro ainda</option>';
}else{
while($linhaB = mysql_fetch_array($pega_bairro)){
echo '<option value="'.$linhaB['id_bairro'].'">'.$linhaB['bairro'].'</option>';
}
}
?>
</select><br />
<span>Tipo</span><br />
<select name="tipo">
<option value="" selected="selected">Selecione o tipo...</option>
<?php
//O SELECT ACIMA VERIFICA SE O TIPO EXISTE NA TABELA IMOVEIS OU SEJA SO APRESENTARA NA SELECAO TIPO QUE TEM IMOVEIS CADASTRADOS E PUBLICADOS//
$pega_tipos = mysql_query("SELECT id_tipo, tipo
FROM tipo
WHERE EXISTS (SELECT * FROM imoveis imo
WHERE tipo.id_tipo = imo.id_tipo AND imo.publicado ='SIM')");
if(mysql_num_rows($pega_tipos) == 0){
echo '<option value="">Não foram encontrados tipos ainda</option>';
}else{
while($linhaC = mysql_fetch_array($pega_tipos)){
echo '<option value="'.$linhaC['id_tipo'].'">'.$linhaC['tipo'].'</option>';
}}
?>
</select><br />
<span>Preço</span><br />
<select name="preco">
<option value="" selected="selected">Selecione o preço...</option>
<option value="15000">Até 15000</option>
<option value="20000">Até 20000</option>
<option value="30000">Até 30000</option>
<option value="17000">Até 17000</option>
</select><br />
<input type="hidden" name="acao" value="enviar" />
<input type="submit" value="buscar" />
</form>
<hr />
<?php if(isset($_POST['acao']) && $_POST['acao'] == 'enviar'){
$cidade = $_POST['cidade'];
$bairro = $_POST['bairro'];
$tipo = $_POST['tipo'];
$preco = $_POST['preco'];
switch($preco){
case '15000';
$valor = 'AND preco <= 15000';
break;
case '20000';
$valor = 'AND preco BETWEEN 15000 AND 20000';
break;
case '30000';
$valor = 'AND preco BETWEEN 20000 AND 30000';
break;
case '17000';
$valor = 'AND preco BETWEEN 15000 AND 17000';
break;
}
$seleciona_imovel = mysql_query("SELECT cod_imoveis, id_cidade, id_bairro, id_tipo,
preco,
desc_curta,
quarto,
banheiro,
garagem
FROM imoveis
WHERE id_cidade = '$cidade'
OR id_bairro = '$bairro'
OR id_tipo = '$tipo'
AND publicado = 'SIM'
AND vendido = 'NAO'
$valor");
if(mysql_num_rows($seleciona_imovel) == 0){
echo '<h1>Desculpe, mais sua busca, não retornou maicon</h1>';
}else{
while($linhaImovel = mysql_fetch_array($seleciona_imovel)){
echo '<br>Caracteristicas do imóvel: Código: '.$linhaImovel['cod_imoveis'].'
<p> '.$linhaImovel['desc_curta'].'
<br>Cidade: '.$linhaImovel['id_cidade'].'
<br>Bairro: '.$linhaImovel['id_bairro'].'
<br>Tipo : '.$linhaImovel['id_tipo'].'
<br>Quarto(s): '.$linhaImovel['quarto'].'
<br>Banheiro(s): '.$linhaImovel['banheiro'].'
<br>Garagem(s): '.$linhaImovel['garagem'].'
<br>Preço de Venda: R$: '.$linhaImovel['preco'].'<p>';
}
}}
?>
</body>
</html>

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.