Remazela 6 Denunciar post Postado Maio 18, 2015 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
DLSeken 4 Denunciar post Postado Maio 19, 2015 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
Remazela 6 Denunciar post Postado Maio 21, 2015 Grato, consegui resolver. Compartilhar este post Link para o post Compartilhar em outros sites