Ir para conteúdo

Arquivado

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

Remazela

Paginação usando PDO

Recommended Posts

Caros amigos

 

Recorro a ajuda de todos que puderem me auxiliar, num erro de paginação que está me deixando louco.

 

Estou escrevendo uma rotina em PHP PDO e quando quero paginar não consigo.

 

Abaixo postei meu código:

 

Criei uma rotina chamada filtroS.php desta forma consigo somente consigo paginar, mas não consigo filtrar os dados.

<?php      //Conexão com o Banco de Dados    include"Connections/config.php";?><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      $imovelStatus = 'pendente';    //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;    $sql = 'SELECT * FROM imoveis WHERE imovelStatus = :imovelStatus ORDER BY imovelTermino ASC LIMIT '.$inicio.','.$maximo;    try{      $query = $conecta->prepare($sql);      $query->bindValue(':imovelStatus',$imovelStatus,PDO::PARAM_STR);      $query->execute();            $resultado = $query->fetchAll(PDO::FETCH_ASSOC);            }catch(PDOexception $error){         echo 'Erro ao selecionar pendentes';      }    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        $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);        $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>   ";         ?>   </div><!--paginator-->   </div><!--fecha pagina-->    

Criei outra Rotina de filtro.php - que chama 2 funções a:

- get_filtro()-> (que filtra os dados)

- paginator()-> (para paginar)

Observação: infelizmente não consigo paginar a quantidade de dados que quero na página, somente filtra os dados.

 

Rotina do filtro.php

<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           get_filtro();                ?>   </table>         <div class="paginator">            <?php          paginator();      ?>   </div><!--paginator-->   </div><!--fecha pagina-->   

Rotina das Funções:

<!--Função para Filtrar o Selecionar --><?php function get_filtro(){	include"Connections/config.php";      $tipo      = $_POST['tipo'];      $categoria = $_POST['categoria'];      $subCat    = $_POST['sub-cat'];      $bairro    = $_POST['bairro'];	  	$dataVal = date('Y-m-d H:m:s');	$sql = 'SELECT * FROM imoveis WHERE imovelTermino >= :dataVal AND imovelNegocio LIKE :tipo AND imovelTipo LIKE :categoria	        AND ImovelBairro LIKE :subcat AND imovelComodos LIKE :bairro ORDER BY imovelId DESC';	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->execute();				$resultado = $query->fetchAll(PDO::FETCH_ASSOC);				}catch(PDOexception $error_imovels){		  echo 'Erro ao selecionar os imoves!'; 			}				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.'"><strong>'.$negocio.'</strong></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>';         		}			}	?><!--Função para Paginar --><?php function paginator(){    include"Connections/config.php";    $imovelStatus = 'pendente';    //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;       $dataVal = date('Y-m-d H:m:s');    $sql = 'SELECT * FROM imoveis WHERE imovelStatus = :imovelStatus ORDER BY imovelTermino >= :dataVal ASC LIMIT '.$inicio.','.$maximo;    try{      $query = $conecta->prepare($sql);      $query->bindValue(':imovelStatus',$imovelStatus,PDO::PARAM_STR);      $query->bindValue(':dataVal',$dataVal,PDO::PARAM_STR);      $query->execute();            $resultado = $query->fetchAll(PDO::FETCH_ASSOC);            }catch(PDOexception $error){         echo 'Erro ao selecionar pendentes';      }               $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);	  	$links = '4'; //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>   ";  }?>

Grato a todos.

 

Atenciosamente,

 

Renato

 

 

Alguém por favor, pode me ajudar ?

 

Grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente mudar o seu SQL no primeiro código que você postou. Adicione o OFFSET no sql. Essa foi a solução para um problema parecido que eu tive.

SELECT * FROM imoveis WHERE imovelStatus = :imovelStatus ORDER BY imovelTermino ASC LIMIT '.$inicio.' OFFSET'.$maximo

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.