Pestana74 0 Denunciar post Postado Abril 11, 2011 Amigos, estou com umproblema de paginação.. Consigo listar todos os registros, separar por página e etc... Só que clicando em avançar ou nos numeros da pagina ex: 1,2,3... é listado apenas o registro da primeira página. O seja a pagina não muda sempre fica mostrando a primeira pagina.. O que pode ser? Segue cópia do script: <? if($page > 1){ $anterior = $page -1; $url = "?pg=$pg&acao=$acao&page=$anterior"; echo "<li><a href='$url' class='pag_nav'><span><span>Anterior<span/></span></a></li>"; } else { echo "<li><a href='#' class='current_page'><span><span>Anterior</span></span></a></li>"; } ?> <? for($i=1; $i<$page; $i++) if($i>=$page-5) echo "<li><a href='?pg=$pg&acao=$acao&page=$i'><span><span>$i</span></span></a><li>"; echo "<a href='#' class='current_page'><span><span>$page</span></span></a></li> "; for($i=$page+1; $i<=$tp; $i++) if($i<=$page+5) echo " <li> <a href='?pg=$pg&acao=$acao&page=$i'>$i</a></li>"; ?> <? if($tp > $page){ $proxima = $page +1; $url = "?pg=$pg&acao=$acao&page=$proxima"; echo "<li><a href='$url' class='pag_nav'><span><span>Próxima </span></span></a></li>"; } else { echo "<li><a href='#' class='current_page'><span><span>Próxima </span></span></a></li>"; } ?> Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Abril 12, 2011 mostre agora o trecho em que você monta a string sql. Compartilhar este post Link para o post Compartilhar em outros sites
Pestana74 0 Denunciar post Postado Abril 13, 2011 mostre agora o trecho em que você monta a string sql. <? // inicio da acao LISTAR //if($acao == "listar"){ $form2 = "FORMLISTA"; if(!empty($id_finalidade)) $whx1 = "AND id_finalidade = '$id_finalidade'"; if(!empty($id_tipo)) $whx2 = "AND id_tipo = '$id_tipo'"; if(!empty($id_cidade)) $whx3 = "AND id_cidade = '$id_cidade'"; if(!empty($codigo)) $whx4 = "AND referencia = '$codigo'"; $busca = "SELECT * FROM tb_imoveis WHERE status!='' $whx1 $whx2 $whx3 $whx4"; //echo $busca; $total_reg = "3"; if(!$page){ $page = "1"; }else{ $page = $_GET['page']; } $inicio = $page-1; $inicio = $inicio*$total_reg; $limite = mysql_query("$busca LIMIT $inicio,$total_reg"); $todos = mysql_query("$busca"); $tr = mysql_num_rows($todos); //$tr = count($op); //echo $tr; $tp = ceil($tr / $total_reg); ?> Compartilhar este post Link para o post Compartilhar em outros sites
mangakah 217 Denunciar post Postado Abril 13, 2011 Seus calculos(offset e total de páginas) parecem corretos. Uma boa dia para debugar paginação é ficar imprimindo a consulta SQL nas páginas, assim você pode ter uma melhor idéia do que está acontecendo. Compartilhar este post Link para o post Compartilhar em outros sites
Pestana74 0 Denunciar post Postado Abril 13, 2011 Já tentei de tudo que estava no meu conhecimento mas não consegui o resultado. Ela lista todas as paginas ex: 1.2.3.4.5 mas posso clicar em qualquer uma que sou levado para a primeira página... O que será que está errado? Abraços Compartilhar este post Link para o post Compartilhar em outros sites
mangakah 217 Denunciar post Postado Abril 13, 2011 Essa parte está estranha... if(!$page){ $page = "1"; }else{ $page = $_GET['page']; } Acho que seria melhor: $page = 1; if(isset($_GET['page']) and $_GET['page'] <= $tp) { // $tp é onde está o total e páginas, né? $page = $_GET['page']; } Compartilhar este post Link para o post Compartilhar em outros sites
Pestana74 0 Denunciar post Postado Abril 13, 2011 Essa parte está estranha... if(!$page){ $page = "1"; }else{ $page = $_GET['page']; } Acho que seria melhor: $page = 1; if(isset($_GET['page']) and $_GET['page'] <= $tp) { // $tp é onde está o total e páginas, né? $page = $_GET['page']; } Então mudei como sugeriu e não houve efeito continua mostrando em todas as páginas a pagina 1 Compartilhar este post Link para o post Compartilhar em outros sites
mangakah 217 Denunciar post Postado Abril 13, 2011 E essa parte aqui: $limite = mysql_query("$busca LIMIT $inicio,$total_reg"); $todos = mysql_query("$busca"); Você tinha que fazer query com a variável $limite, não? Compartilhar este post Link para o post Compartilhar em outros sites
Pestana74 0 Denunciar post Postado Abril 13, 2011 E essa parte aqui: $limite = mysql_query("$busca LIMIT $inicio,$total_reg"); $todos = mysql_query("$busca"); Você tinha que fazer query com a variável $limite, não? Não foi feito? não entendi? Compartilhar este post Link para o post Compartilhar em outros sites
mangakah 217 Denunciar post Postado Abril 13, 2011 Ué... pelo que eu entendi do seu código você não está executando o "LIMIT $inicio,$total_reg" Coloque assim pra ver: $todos = mysql_query($limite); Compartilhar este post Link para o post Compartilhar em outros sites
Pestana74 0 Denunciar post Postado Abril 13, 2011 Ué... pelo que eu entendi do seu código você não está executando o "LIMIT $inicio,$total_reg" Coloque assim pra ver: $todos = mysql_query($limite); Colocando assim tive erro e some a paginação. Warning: mysql_num_rows(): supplied argument is not a valid MySQL result Compartilhar este post Link para o post Compartilhar em outros sites
mangakah 217 Denunciar post Postado Abril 13, 2011 dá um echo nesse query aí. echo $limite; me manda o resultado verifique se o query é executado diretamente no mysql (usando o phpmyadmin por exemplo) Compartilhar este post Link para o post Compartilhar em outros sites
Pestana74 0 Denunciar post Postado Abril 13, 2011 dá um echo nesse query aí. echo $limite; me manda o resultado verifique se o query é executado diretamente no mysql (usando o phpmyadmin por exemplo) Alterando para: echo $limite = mysql_query("$busca LIMIT $inicio,$total_reg"); $todos = mysql_query($limite); Dá o seguinte erro: Resource id #29 Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource Isso acontece apenas no acesso adm do site. no front do site tambem tem paginação e está funcionando normal... dá um echo nesse query aí. echo $limite; me manda o resultado verifique se o query é executado diretamente no mysql (usando o phpmyadmin por exemplo) Alterando para: echo $limite = mysql_query("$busca LIMIT $inicio,$total_reg"); $todos = mysql_query($limite); Dá o seguinte erro: Resource id #29 Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource Isso acontece apenas no acesso adm do site. no front do site tambem tem paginação e está funcionando normal... Além do erro acima some a paginação. Compartilhar este post Link para o post Compartilhar em outros sites
Pestana74 0 Denunciar post Postado Abril 13, 2011 Amigos, novamente explicando o meu problema.. A paginação lista a quantidade de páginas, mas au clicar em qualquer página e mostrado apenas a pagina 1 Ou seja tem lá: 1,2,3,4,5 (clico na 2 mostra a 1... clico na 4 mostra a 1 e assim por diante) Alguem pode me ajudar? Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Moraes 0 Denunciar post Postado Abril 14, 2011 amigo da um echo na variavel $tr echo $tr; Compartilhar este post Link para o post Compartilhar em outros sites
Pestana74 0 Denunciar post Postado Abril 14, 2011 Pessoal resolvido pelo mangakah.. Muito obrigado Mangakah pela atenção e experiência no assunto! $busca = "SELECT * FROM tb_imoveis WHERE status != '' $whx1 $whx2 $whx3 $whx4"; //echo $busca; $registrosPorPagina = "3"; /* Alterei aqui */ $page = 1; if(isset($_GET['page']) and $_GET['page'] > 1) { $page = $_GET['page']; } /* É preciso antes fazer a contagem dos registros no banco de dados ou não será é validar a página -- impedir que seja requisitada uma página maior que o total de páginas */ $contarRegistros = "SELECT COUNT(*) AS total_registros FROM tb_imoveis"; $contarRegistros = mysql_query($contarRegistros) or die('Contagem de registros falhou'); $contarRegistros = mysql_fetch_array($contarRegistros, MYSQL_ASSOC); $totalRegistros = $contarRegistros['total_registros']; $totalPaginas = ceil($totalRegistros / $registrosPorPagina); $inicio = ($page-1) * $registrosPorPagina; /** Alterei aqui */ $busca .= " LIMIT $inicio,$registrosPorPagina"; // DEBUG //echo "<h1>DEBUG</h1>"; //echo "<br />Página atual = " . $page; //echo "<br />Total registros = " . $totalRegistros; //echo "<br />Total páginas = " . $totalPaginas; //echo "<br />Consuta SQL = " . $busca; //echo "<hr />"; $limite = mysql_query("$busca"); $todos = mysql_query("$busca"); ?> /** Navegação de Págians */ // Link para a primeira página - adicionei // Link "Página anterior" if($page > 1) { $anterior = ($page - 1); if($anterior > 1) { // LINK PARA A PRIMEIRA PÁGINA -- ADICIONEI $primeira = 1; echo "<li><a href='?pg=$pg&acao=$acao&page=$primeira' class='pag_nav'><span><span>Primeira<span/></span></a></li>"; } $url = "?pg=$pg&acao=$acao&page=$anterior"; echo "<li><a href='$url' class='pag_nav'><span><span>Anterior<span/></span></a></li>"; } // Lista de páginas -- Tive que refazer essa parte for($i=1; $i <= $totalPaginas; $i++) { if($i == $page) { // verifica se é a página atual echo "<li>$i</li>"; } else { // se não for gera um link echo "<li><a href=\"?pg=$pg&acao=$acao&page=$i\">$i</a></li>"; } } // Próxima página if($page < $totalPaginas){ $proxima = ($page + 1); $url = "?pg=$pg&acao=$acao&page=$proxima"; echo "<li><a href='$url' class='pag_nav'><span><span>Próxima </span></span></a></li>"; if($proxima < $totalPaginas) { // LINK PARA A ULTIMA PÁGINA -- ADICIONEI $ultima = $totalPaginas; echo "<li><a href='?pg=$pg&acao=$acao&page=$ultima' class='pag_nav'><span><span>Ultima<span/></span></a></li>"; } } ?> RESOLVIDO E TESTADO TUDO OK! Compartilhar este post Link para o post Compartilhar em outros sites