Ir para conteúdo

POWERED BY:

Arquivado

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

ronaldo_calado

Paginação e sistema de busca avançada

Recommended Posts

Galera, to fazendo o site de uma imobiliario, tava tentando fazer o script pra busca avançada dos imóveis, pensei que tava funcionando, mais quando fui tentar fazer a paginação não deu certo, alguem tem um modelo bom de busca multipla, ja andei olhando alguns aqui e nao consegui entender direito, tava precisando pq o da imobiliaria são com 6 opções pra pessoa escolher para fazer a busca, to precisando mto dessa ajuda mesmo!!! o site já é pra ser entregue e eu pensava q isso ja tava resolvido... http://forum.imasters.com.br/public/style_emoticons/default/cry.gif

Da pra algume me ajudar??

Compartilhar este post


Link para o post
Compartilhar em outros sites

COnsegui fazer a busca funcionar, com um modelo que vi aqui, ta funcionando...mais surgui mais um problema, vou precisar fazer a paginação dos resultados...iai, como eu faço pra passar os valores pras próximas páginas, da pra alguem me ajudar????o script é esse:

include "conecta.php"; @$bairro = $_POST['bairro'];@$tipo_imovel = $_POST['tipo_imovel'];@$tipo_negociacao = $_POST['tipo_negociacao'];@$n_quartos = $_POST['n_quartos'];@$n_suites = $_POST['n_suites'];@$valor_maximo = $_POST['valor_maximo'];$auxwheresql = array(); if (!empty($bairro)) { // CAMPO1 DA PESQUISA $auxwheresql[] = "bairro = '$bairro'"; } if (!empty($tipo_imovel)) { // CAMPO2 DA PESQUISA $auxwheresql[] = "tipo_imovel = '$tipo_imovel'"; } if (!empty($tipo_negociacao)) { // CAMPO1 DA PESQUISA $auxwheresql[] = "transacao = '$tipo_negociacao'"; } if (!empty($n_quartos)) { // CAMPO2 DA PESQUISA $auxwheresql[] = "quartos = '$n_quartos'"; }if (!empty($n_suites)) { // CAMPO1 DA PESQUISA $auxwheresql[] = "suites = '$n_suites'"; } if (!empty($valor_maximo)) { // CAMPO2 DA PESQUISA $auxwheresql[] = "valor = '$valor_maximo'"; } // ADICIONE AQUI QUANTOS CAMPOS QUISER À PESQUISA $auxsql = "Select DISTINCT id_imovel,bairro,transacao,tipo_imovel,quartos,suites,valor FROM imoveis"; if (count($auxwheresql)) { $auxsql .= ' WHERE '. join(' AND ', $auxwheresql); } $auxsql .= ' ORDER BY bairro'; $sql = mysql_query($auxsql); if(!$sql){echo mysql_error();exit();} $total = mysql_num_rows($sql); if($total == 0) { echo "Não foi encontrado nenhum resultado em sua busca!"; exit; } else { echo "<table width='444' border='1' bordercolor='#cccccc' cellpadding='0' cellspacing='0'> <tr bgcolor='#FF0000' align='center'> <td width='35' class='style4'>Tipo</td> <td width='110' class='style4'>Bairro</td> <td width='80' class='style4'>Negociação</td> <td width='45' class='style4'>Quartos</td> <td width='45' class='style4'>Suítes</td> <td width='64' class='style4'>Preço(R$)</td> <td width='65' class='style4'>Detalhes</td> </tr>"; for ($a = 1 ; $a <= $total ; $a++) { $array = mysql_fetch_array($sql); $id_imovel = $array['id_imovel']; $bairro = $array['bairro']; $transacao = $array['transacao']; $tipo_imovel = $array['tipo_imovel']; $quartos = $array['quartos']; $suites = $array['suites']; if(empty($quartos)) { $quartos = "0"; } if(empty($suites)) { $suites = "0"; } $preco = $array['valor']; $valor = number_format($preco, 2, ',', '.'); echo "<tr> <td class='style3'>$tipo_imovel</td> <td class='style3'>$bairro</td> <td class='style3'>$transacao</td> <td class='style3'>$quartos</td> <td class='style3'>$suites</td> <td class='style3'>$valor</td> <td class='style3'><a href='#' onclick='window.open(\"v_imovel.php?id_imovel=$id_imovel\",\"\",\"status=yes,width=490,height=540\")'><div align='center'>Ver</div></a></td> </tr>"; }}

Da pra alguem me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

No Laboratório de Scripts tem muitos scripts de paginação. Dá uma olhada lá.

Só que eu não to conseguindo integrar nenhum código de paginação de la com essa minha busca...Elas não tao passando o valor da minha pesquisa, por exemplo, se to pesquisando todas as casas de determinado bairro, tenho que passar o nome do bairro pelas páginas, e não to conseguindo fazer isso!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O script que eu tenho é esse:Páginação e busca

include "conecta.php"; @$bairro = $_GET['bairro'];@$tipo_imovel = $_GET['tipo_imovel'];@$tipo_negociacao = $_GET['tipo_negociacao'];@$n_quartos = $_GET['n_quartos'];@$n_suites = $_GET['n_suites'];@$valor_maximo = $_GET['valor_maximo'];$auxwheresql = array(); if (!empty($bairro)) { // CAMPO1 DA PESQUISA $auxwheresql[] = "bairro='$bairro'"; } if (!empty($tipo_imovel)) { // CAMPO2 DA PESQUISA $auxwheresql[] = "tipo_imovel='$tipo_imovel'"; } if (!empty($tipo_negociacao)) { // CAMPO1 DA PESQUISA $auxwheresql[] = "transacao='$tipo_negociacao'"; } if (!empty($n_quartos)) { // CAMPO2 DA PESQUISA $auxwheresql[] = "quartos='$n_quartos'"; }if (!empty($n_suites)) { // CAMPO1 DA PESQUISA $auxwheresql[] = "suites='$n_suites'"; } if (!empty($valor_maximo)) { // CAMPO2 DA PESQUISA $auxwheresql[] = "valor='$valor_maximo'"; } // ADICIONE AQUI QUANTOS CAMPOS QUISER À PESQUISA $auxsql = "Select DISTINCT id_imovel,bairro,transacao,tipo_imovel,quartos,suites,valor FROM imoveis"; if (count($auxwheresql)) { $auxsql .= ' WHERE '. join(' AND ', $auxwheresql); } $auxsql .= ' ORDER BY bairro '; $sql = mysql_query($auxsql); if(!$sql){echo mysql_error();exit();} //tentativa de paginação$resul = mysql_num_rows($sql); @ $pagina = $_GET['pagina'];$lpp = 2;$paginas = ceil($resul / $lpp);if(!isset($pagina)) { $pagina = 0; }$inicio = $pagina * $lpp;$auxsql2 = "Select DISTINCT id_imovel,bairro,transacao,tipo_imovel,quartos,suites,valor FROM imoveis"; if (count($auxwheresql)) { $auxsql2 .= " WHERE ". join(" AND ", $auxwheresql); } $auxsql2 .= " ORDER BY bairro LIMIT $inicio, $lpp ";$sql2 = mysql_query($auxsql2); if(!$sql2){echo mysql_error();exit();} $total = mysql_num_rows($sql2);//fim da tentativaif($total == 0) { echo "Não foi encontrado nenhum resultado em sua busca!"; exit; } else { echo "<table width='444' border='1' bordercolor='#cccccc' cellpadding='0' cellspacing='0'><tr bgcolor='#FF0000' align='center'><td width='35' class='style4'>Tipo</td><td width='110' class='style4'>Bairro</td><td width='80' class='style4'>Negociação</td><td width='45' class='style4'>Quartos</td><td width='45' class='style4'>Suítes</td><td width='64' class='style4'>Preço(R$)</td><td width='65' class='style4'>Detalhes</td></tr>";for ($a = 1 ; $a <= $total ; $a++) { $array = mysql_fetch_array($sql); $id_imovel = $array['id_imovel']; $bairro = $array['bairro']; $transacao = $array['transacao']; $tipo_imovel = $array['tipo_imovel']; $quartos = $array['quartos']; $suites = $array['suites']; if(empty($quartos)) { $quartos = "0"; } if(empty($suites)) { $suites = "0"; } $preco = $array['valor']; $valor = number_format($preco, 2, ',', '.'); echo "<tr> <td class='style3'>$tipo_imovel</td> <td class='style3'>$bairro</td> <td class='style3'>$transacao</td> <td class='style3'>$quartos</td> <td class='style3'>$suites</td> <td class='style3'>$valor</td> <td class='style3'><a href='#' onclick='window.open(\"v_imovel.php?id_imovel=$id_imovel\",\"\",\"status=yes,width=490,height=540\")'><div align='center'>Ver</div></a></td> </tr>"; } echo "</table>"; $PHP_SELF = $_SERVER['PHP_SELF']; echo "<br>"; if($pagina > 0) { $menos = $pagina - 1; $url = "$PHP_SELF?pagina=$menos"; echo "<a href='$url'><font face='verdana' size='1' color='#000000'>Anterior</font></a>"; // Vai para a página anterior } for($i=0;$i<$paginas;$i++) { // Gera um loop com o link para as páginas $url = "$PHP_SELF?pagina=$i"; echo " | <a href='$url'><font face='verdana' size='1' color='#000000'>$i</font></a>"; } if($pagina < ($paginas - 1)) { $mais = $pagina + 1; $url = "$PHP_SELF?pagina=$mais"; echo " | <a href='$url'><font face='verdana' size='1' color='#000000'>Próxima</font></a>"; } exit;}

Esse é o script da busca e da paginação, não to conseguindo passar os valores solicitados na busca para as outras páginas...O que tenho q fazer, mudar??/?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!Não sei se ajuda, pois ainda não sou muito conhecedora de PHP, mas, apenas como idéia: eu utilizo paginação em uma área restrita e para transmitir as informações de uma página para outra, eu gravo em um arquivo txt.Só não sei como fica isso em uma área aberta em que várias pessoas podem utilizar ao mesmo tempo. <_< Tomara que você consiga resolver seu problema !!!Depois que resolver, posta aqui o resultado, ok? afinal, tudo é válido pra gente aprender um pouquinho mais...Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, você tem no forum uma classe de paginação que eu desenvolvi, e ela foi feita pensando exatamente em preservar os dados do query string passado pelo usuário.

 

Veja neste endereço se ela te ajuda:

http://forum.imasters.com.br/index.php?showtopic=183225

 

Basta passar como parâmetro url a sua página atual, mais o parâmetro da url que você quer que persista. Ex.:

 

$url = $_SERVER['PHP_SELF'] . "?busca=" . $_GET['busca'];

 

Com aquele script sua paginação terá algo como (digamos que a busca foi "casas em belo horizonte"):

 

<a href="pagina.php?busca=casas+em+belo+horizonte&pg=1">1</a>

 

Até logo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, você tem no forum uma classe de paginação que eu desenvolvi, e ela foi feita pensando exatamente em preservar os dados do query string passado pelo usuário.

 

Veja neste endereço se ela te ajuda:

http://forum.imasters.com.br/index.php?showtopic=183225

 

Basta passar como parâmetro url a sua página atual, mais o parâmetro da url que você quer que persista. Ex.:

 

$url = $_SERVER['PHP_SELF'] . "?busca=" . $_GET['busca'];

 

Com aquele script sua paginação terá algo como (digamos que a busca foi "casas em belo horizonte"):

 

<a href="pagina.php?busca=casas+em+belo+horizonte&pg=1">1</a>

 

Até logo

Kra, valew por tentar ajudar, mas eu nao entendo nda sobre class e programação orientada a objetos, o meu maior problema é passar as informações para a outra página, meu script de paginação é esse:

 

@ $pagina = $_GET['pagina'];

 

echo $pagina;

 

$lpp = 2;

 

$paginas = ceil($resul / $lpp);

 

if(!isset($pagina)) { $pagina = 0; }

 

$inicio = $pagina * $lpp;

 

echo $inicio;

 

$auxsql2 = "Select DISTINCT id_imovel,bairro,transacao,tipo_imovel,quartos,suites,valor FROM imoveis";

if (count($auxwheresql)) {

$auxsql2 .= " WHERE ". join(" AND ", $auxwheresql);

}

 

$auxsql2 .= " ORDER BY bairro LIMIT $inicio, $lpp ";

 

$sql2 = mysql_query($auxsql2);

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

 

$total = mysql_num_rows($sql2);

 

if($total == 0) {

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

exit;

} else {

 

for ($a = 1 ; $a <= $total ; $a++)

 

{

 

//mostra os arquivos

 

}

echo "</table>";

 

$PHP_SELF = $_SERVER['PHP_SELF'];

 

echo "<br>";

 

if($pagina > 0) {

$menos = $pagina - 1;

$url = "$PHP_SELF?pagina=$menos";

echo "<a href='$url'><font face='verdana' size='1' color='#000000'>Anterior</font></a>"; // Vai para a página anterior

}

for($i=0;$i<$paginas;$i++) { // Gera um loop com o link para as páginas

$url = "$PHP_SELF?pagina=$i";

echo " | <a href='$url'><font face='verdana' size='1' color='#000000'>$i</font></a>";

}

if($pagina < ($paginas - 1)) {

$mais = $pagina + 1;

$url = "$PHP_SELF?pagina=$mais;

echo " | <a href='$url'><font face='verdana' size='1' color='#000000'>Próxima</font></a>";

}

exit;

}

Eu gostaria de saber como eu faço pra passar os valores da pesquisa pela variavel URL??? é só esse o problema, passar para a proxima página os valores da pesquisa inicial... :blink:

Compartilhar este post


Link para o post
Compartilhar em outros sites

OK!

Boa oportunidade para você tentar aprender então.

 

Mas vamos lá, no seu script de paginação coloque no começo assim:

$busca = $_GET['busca'];

Isso levando em conta que sua busca é passada como o parâmetro "busca" pela url.

 

Depois na hora de declarar a url para os links da paginação você adiciona o valor de $busca:

 

$url = $PHP_SELF . "?busca=" . $busca . "&pagina=" . $mais;

Aí você troca o valor de pagina pela var que tiver que colocar ($menos, $i ou $mais)

 

Até logo,

Compartilhar este post


Link para o post
Compartilhar em outros sites

OK!Boa oportunidade para você tentar aprender então.Mas vamos lá, no seu script de paginação coloque no começo assim:

$busca = $_GET['busca'];
Isso levando em conta que sua busca é passada como o parâmetro "busca" pela url.Depois na hora de declarar a url para os links da paginação você adiciona o valor de $busca:
$url = $PHP_SELF . "?busca=" . $busca . "&pagina=" . $mais;
Aí você troca o valor de pagina pela var que tiver que colocar ($menos, $i ou $mais)Até logo,
Logo acima tem todo o meu script, da uma olhada pra v se você entende melhor pra poder me ajudar...to precisando, já era pra ter entregue esse script, pensei que ele estava funcionando pq na pagina de busca geral ele funciona, mais quando tem q passar algum valor pelo link ele não ta passando! http://forum.imasters.com.br/public/style_emoticons/default/upset.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas cara, já respondi sua pergunta.....

Agora é adaptação.....

Mostrei como passar os parâmetros pela url. Agora você passa todos os parâmetros que precisar.....

 

$url = $PHP_SELF . "?busca=" . $busca . "&pagina=" . $mais . "&quartos=" . $quartos ..... até onde precisar.....

flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas cara, já respondi sua pergunta.....Agora é adaptação.....Mostrei como passar os parâmetros pela url. Agora você passa todos os parâmetros que precisar.....

$url = $PHP_SELF . "?busca=" . $busca . "&pagina=" . $mais . "&quartos=" . $quartos ..... até onde precisar.....
flw
Mais esse link tem q ser montado dinamicamente...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja se isso resolve seu problema:

$url = $PHP_SELF . "?";foreach($_GET as $chave => $valor){	$chave != 'pagina' ? $url .= $chave . "=" . $valor . "&" : "";}

você terá montada uma nova url com todos os parâmetros vindos na url atual, exceto o parâmetro pagina.

 

Aposto que agora você consegue quebrar um pouco a cabeça e terminar seu script.

E ve se manda pra nós o resultado.... :D

 

flw

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.