Ir para conteúdo

POWERED BY:

Arquivado

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

Remazela

Busca em PHP+PDO

Recommended Posts

Caros amigos

 

Estou com um problema de busca em banco de dados.

 

Preciso efetuar a seguinte busca por: Tipo(Venda/Alugar), Categoria e Bairro.

 

Quando clico em buscar tudo o sistema faz a busca legal, quando quero que busque apenas por (Venda - Casa) a pesquisa busca alguns e não efetua a paginação, ou seja, se perde.

 

Como consigo fazer essa busca ?

 

Abaixo coloquei o meu código fonte que estou usando para efetuar a pesquisa ( PHP+PDO ).

<?php  
    //Conexão com o Banco de Dados
    include"Connections/config.php";

    //Paginação da página
    $pag = "$_GET[pag]";
    if($pag >= '1'){
     $pag = $pag;
     } else {
       $pag = '1';
    }

    $maximo = '5'; //RESULTADOS POR PÁGINA P/ TESTE
    $inicio = ($pag * $maximo) - $maximo;
    
    $tipo         = $_POST['tipo'];
    $categoria    = $_POST['categoria'];
    $subCat       = $_POST['sub-cat'];
    $bairro       = $_POST['bairro'];
    $imovelStatus = 'pendente';      
    $dataVal      = date('Y-m-d H:m:s');

    //Faço uma busca no banco de dados
    $sql = 'SELECT * FROM imoveis WHERE imovelTermino >= :dataVal AND imovelNegocio LIKE :tipo AND imovelTipo LIKE :categoria
            AND ImovelBairro LIKE :subcat AND imovelComodos LIKE :bairro AND imovelStatus LIKE :imovelStatus  
            ORDER BY imovelId DESC LIMIT '.$inicio.','.$maximo;
 
    //Executo a conexão
    try{
      $query = $conecta->prepare($sql);
      $query->bindValue(':dataVal',$dataVal,PDO::PARAM_STR);
      $query->bindValue(':tipo','%'.$tipo.'%',PDO::PARAM_STR);
      $query->bindValue(':categoria','%'.$categoria.'%',PDO::PARAM_STR);
      $query->bindValue(':subcat','%'.$subCat.'%',PDO::PARAM_STR);
      $query->bindValue(':bairro','%'.$bairro.'%',PDO::PARAM_STR);
      $query->bindValue(':imovelStatus',$imovelStatus,PDO::PARAM_STR);
      $query->execute();
      
      $resultado = $query->fetchAll(PDO::FETCH_ASSOC);

      //Total do resultado da pesquisa
      $result = count($resultado);

      }catch(PDOexception $error_imovels){
        echo 'Erro ao selecionar os imoves!';   
      }

?>


<div id="pagina"> 

  <h1>Categoria</h1>
   <table width="100%" border="0" cellpadding="3" cellspacing="2" bordercolor="#666666";>
     <tr style="color:#005789; font-variant:small-caps; font:14px 'Trebuchet MS', Arial, Helvetica, sans-serif;">

       <td height="30" align="center" bgcolor="#E0E0E0"><strong>Ilustração:</strong></td>
       <td align="center" bgcolor="#E0E0E0"><strong>Tipo:</strong></td>
       <td align="center" bgcolor="#E0E0E0"><strong>Operação:</strong></td>
       <td align="center" bgcolor="#E0E0E0"><strong>Dormitórios:</strong></td>
       <td align="center" bgcolor="#E0E0E0"><strong>Data do Anúncio:</strong></td>
       <td align="center" bgcolor="#E0E0E0"><strong>Acessar:</strong></td>
     </tr>

<?php 

    //Mostro na Tela o Resultado.
    foreach($resultado as $res){
      $imovelID    = $res['imovelId'];
      $tipo        = $res['imovelTipo'];
      $negocio     = $res['imovelNegocio'];
      $valor       = $res['imovelValor'];
      $thumb       = $res['imovelThumb'];
      $titulo      = $res['imovelTitulo'];
      $dormitorios = $res['imovelComodos'];
      $data        = $res['imovelCadastro'];

       echo '<tr>';
       echo '<td align="center" bgcolor="#F0F0F0"><a href="index.php?pg=single&imovel='.$imovelID.'"><img src="timthumb.php?src=midias/'.$thumb.'&h=60&w=100&zc=1" alt="'.$titulo.'" title="'.$titulo.'" border="0" /></a></td>';
       echo '<td align="center" bgcolor="#F0F0F0"><a href="index.php?pg=single&imovel='.$imovelID.'">'.$tipo.'</a></td>';
       echo '<td align="center" bgcolor="#F0F0F0"><a href="index.php?pg=single&imovel='.$imovelID.'">'.$negocio.'</a></td>';
       echo '<td align="center" bgcolor="#F0F0F0"><a href="index.php?pg=single&imovel='.$imovelID.'">'.$dormitorios.' Domitórios</a></td>';
       echo '<td align="center" bgcolor="#F0F0F0"><a href="index.php?pg=single&imovel='.$imovelID.'">'.date('d/m/Y',strtotime($data)).'</a></td>';
       echo '<td align="center" bgcolor="#F0F0F0"><a href="index.php?pg=single&imovel='.$imovelID.'" class="veja_mais">Veja Mais</a></td>';
       echo '</tr>';
    
    }   

?>

   </table>
   
   
   <div class="paginator">  
     
     <?php
     
        //Faço a conexão com o Banco de Dados para saber quantos dados Buscou.

        $tipo = $_POST['tipo'];
        if($tipo == ""){

        $sql_res = $conecta->query("SELECT * FROM imoveis WHERE imovelStatus = 'pendente' ORDER BY imovelTermino ASC") or die(mysql_error());
        $total = $sql_res->rowCount();

        $paginas = ceil($total / $maximo);

        /*Redirecionar página se for maior que a quantidade de paginas, que o sistame buscou */
        if ($pag > $paginas) {
            echo '<script language= "JavaScript">
                 location.href="index.php?pg=filtro";
                 </script>';                 
        }

        $links = '3'; //QUANTIDADE DE LINKS NO PAGINATOR    

        echo "<a href=\"index.php?pg=filtro&pag=1\">Primeira Página</a>   ";

        for ($i = $pag-$links; $i <= $pag-1; $i++){
          if ($i <= 0){
          }else{
           echo"<a href=\"index.php?pg=filtro&pag=$i\">$i</a>   ";
          }
        } echo "$pag    ";

        for($i = $pag +1; $i <= $pag+$links; $i++){
          if($i > $paginas){
          }else{
           echo "<a href=\"index.php?pg=filtro&pag=$i\">$i</a>   ";
          }
        }
        echo "<a href=\"index.php?pg=filtro&pag=$paginas\">Última página</a>   ";
    
       } else {

         echo "<a href=\"index.php?pag=$paginas\">Voltar a Pesquisa</a>   "; 
    
       }        
       
    ?>

   </div><!--paginator-->
  

</div><!--fecha pagina-->    

Grato a todos.

 

Atenciosamente,

 

Renato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo

 

Williams

 

Agradeço pela a sua dica, já fiz os testes mas não tive êxito.

 

O meu código acima até encontra por categoria, mas quando faz a paginação se perde e volta como todos.

 

O amigo teria algum exemplo de como faço uma busca no Banco de Dados usando PDO para: Tipo (Venda/Alugar), Categoria e Bairro sem perder o foco na paginação?

 

Grato,

 

Renato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Passa os dados via GET, ou vai ter que guardar os dados dos posts em alguma variável de sessão.

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.