wolfphw 60 Report post Posted September 5, 2006 Bem como eu vi tem muita gente que pega uns scripts de paginação e acabam penando numas partes... Entaum eu fiz um script bem simplificado para qualquer um poder utilizar sem problemas... Ele é dividido em 2 arquivos... um que é o arquivo onde você vai fazer a sua consulta SQL e outro é o que monta a paginação.... pagina.php <?php//######### INICIO Paginação $numreg = 40; // Quantos registros por página vai ser mostrado if (!isset($pg)) { $pg = 0; } $inicial = $pg * $numreg; //######### FIM dados Paginação // Faz o Select pegando o registro inicial até a quantidade de registros para página $sql = mysql_query("SELECT * FROM tabela LIMIT $inicial, $numreg"); // Serve para contar quantos registros você tem na seua tabela para fazer a paginação $sql_conta = mysql_query("SELECT * FROM tabela"); $quantreg = mysql_num_rows($sql_conta); // Quantidade de registros pra paginação include("paginacao.php"); // Chama o arquivo que monta a paginação. ex: << anterior 1 2 3 4 5 próximo >> echo "<br><br>"; // Vai servir só para dar uma linha de espaço entre a paginação e o conteúdo while ($aux = mysql_fetch_array($sql)) { /* Ai o resto é com voces em montar como deve parecer o conteúdo */ }?> paginacao.php <style type="text/css"><!--.pgoff {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #FF0000; text-decoration: none}a.pg {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #003366; text-decoration: none}a:hover.pg {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #0066cc; text-decoration:underline}--></style><?php $quant_pg = ceil($quantreg/$numreg); $quant_pg++; // Verifica se esta na primeira página, se nao estiver ele libera o link para anterior if ( $pg > 0) { echo "<a href=".$PHP_SELF."?pg=".($pg-1) ."class=pg><b>« anterior</b></a>"; } else { echo "<font color=#CCCCCC>« anterior</font>"; } // Faz aparecer os numeros das página entre o ANTERIOR e PROXIMO for($i_pg=1;$i_pg<$quant_pg;$i_pg++) { // Verifica se a página que o navegante esta e retira o link do número para identificar visualmente if ($pg == ($i_pg-1)) { echo " <span class=pgoff>[$i_pg]</span> "; } else { $i_pg2 = $i_pg-1; echo " <a href=".$PHP_SELF."?pg=$i_pg2 class=pg><b>$i_pg</b></a> "; } } // Verifica se esta na ultima página, se nao estiver ele libera o link para próxima if (($pg+2) < $quant_pg) { echo "<a href=".$PHP_SELF."?pg=".($pg+1)." class=pg><b>próximo »</b></a>"; } else { echo "<font color=#CCCCCC>próximo »</font>"; }?> Share this post Link to post Share on other sites
diegoholiveira 3 Report post Posted September 18, 2006 Cara, otimo script, simples e eficiente.O unico problema é que se as registes_globals estiverem desligadas ele da alguns problemas, mas nada que não seja facilmente resolvido.Valeu Share this post Link to post Share on other sites
wolfphw 60 Report post Posted September 21, 2006 Pior.. eu nem tinha me ligado nisso.. mas eh coisa simples de resolver mesmo... :D/>vlw pela lembrança.. vou fazer um outro arrumando isso.. e quando terminar de arrumar eu posto aki... Share this post Link to post Share on other sites
wolfphw 60 Report post Posted September 22, 2006 Uma coisa que eu esqueci tb, quando você tiver um campo de busca por alguma coisa na página você vai ter que fazer o form que manda a busca mandar o valor via GET, e acrescentar o nome do campo e o valor na linha do link da página de paginação.... aki vai o exemplo de como ficaria se o nome do campo for busca paginacao.php <style type="text/css"><!--.pgoff {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #FF0000; text-decoration: none}a.pg {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #003366; text-decoration: none}a:hover.pg {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #0066cc; text-decoration:underline}--></style><?php $quant_pg = ceil($quantreg/$numreg); $quant_pg++; // Verifica se esta na primeira página, se nao estiver ele libera o link para anterior if ( $pg > 0) { echo "<a href=".$PHP_SELF."?pg=".($pg-1) ."&busca=$busca class=pg><b>« anterior</b></a>"; } else { echo "<font color=#CCCCCC>« anterior</font>"; } // Faz aparecer os numeros das página entre o ANTERIOR e PROXIMO for($i_pg=1;$i_pg<$quant_pg;$i_pg++) { // Verifica se a página que o navegante esta e retira o link do número para identificar visualmente if ($pg == ($i_pg-1)) { echo " <span class=pgoff>[$i_pg]</span> "; } else { $i_pg2 = $i_pg-1; echo " <a href=".$PHP_SELF."?pg=$i_pg2&busca=$busca class=pg><b>$i_pg</b></a> "; } } // Verifica se esta na ultima página, se nao estiver ele libera o link para próxima if (($pg+2) < $quant_pg) { echo "<a href=".$PHP_SELF."?pg=".($pg+1)."&busca=$busca class=pg><b>próximo »</b></a>"; } else { echo "<font color=#CCCCCC>próximo »</font>"; }?>Se notar eu acrescentei isso &busca=$busca nas seguintes linhasecho "<a href=".$PHP_SELF."?pg=".($pg-1) ."&busca=$busca class=pg><b>« anterior</b></a>"; echo " <a href=".$PHP_SELF."?pg=$i_pg2&busca=$busca class=pg><b>$i_pg</b></a> "; echo "<a href=".$PHP_SELF."?pg=".($pg+1)."&busca=$busca class=pg><b>próximo »</b></a>"; Share this post Link to post Share on other sites
Alan M. Diniz 1 Report post Posted November 14, 2006 Perfeito!valew Share this post Link to post Share on other sites
pensar 1 Report post Posted November 24, 2006 Muito bom valew Share this post Link to post Share on other sites
ErickX 1 Report post Posted November 26, 2006 cara, peguei seu codigo, fiz umas alterações... e fikou MASSA =)logico que as alterações foram mais adaptações que outra coisa... hehehe...brigadão brow por disponibilizar ele pra gente!!! =) Share this post Link to post Share on other sites
Microroots 0 Report post Posted December 15, 2006 Bem como eu vi tem muita gente que pega uns scripts de paginação e acabam penando numas partes... Entaum eu fiz um script bem simplificado para qualquer um poder utilizar sem problemas... Ele é dividido em 2 arquivos... um que é o arquivo onde você vai fazer a sua consulta SQL e outro é o que monta a paginação.... pagina.php <?php//######### INICIO Paginação $numreg = 40; // Quantos registros por página vai ser mostrado if (!isset($pg)) { $pg = 0; } $inicial = $pg * $numreg; //######### FIM dados Paginação // Faz o Select pegando o registro inicial até a quantidade de registros para página $sql = mysql_query("SELECT * FROM tabela LIMIT $inicial, $numreg"); // Serve para contar quantos registros você tem na seua tabela para fazer a paginação $sql_conta = mysql_query("SELECT * FROM tabela"); $quantreg = mysql_num_rows($sql_conta); // Quantidade de registros pra paginação include("paginacao.php"); // Chama o arquivo que monta a paginação. ex: << anterior 1 2 3 4 5 próximo >> echo "<br><br>"; // Vai servir só para dar uma linha de espaço entre a paginação e o conteúdo while ($aux = mysql_fetch_array($sql)) { /* Ai o resto é com voces em montar como deve parecer o conteúdo */ }?> paginacao.php <style type="text/css"><!--.pgoff {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #FF0000; text-decoration: none}a.pg {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #003366; text-decoration: none}a:hover.pg {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #0066cc; text-decoration:underline}--></style><?php $quant_pg = ceil($quantreg/$numreg); $quant_pg++; // Verifica se esta na primeira página, se nao estiver ele libera o link para anterior if ( $pg > 0) { echo "<a href=".$PHP_SELF."?pg=".($pg-1) ."class=pg><b>« anterior</b></a>"; } else { echo "<font color=#CCCCCC>« anterior</font>"; } // Faz aparecer os numeros das página entre o ANTERIOR e PROXIMO for($i_pg=1;$i_pg<$quant_pg;$i_pg++) { // Verifica se a página que o navegante esta e retira o link do número para identificar visualmente if ($pg == ($i_pg-1)) { echo " <span class=pgoff>[$i_pg]</span> "; } else { $i_pg2 = $i_pg-1; echo " <a href=".$PHP_SELF."?pg=$i_pg2 class=pg><b>$i_pg</b></a> "; } } // Verifica se esta na ultima página, se nao estiver ele libera o link para próxima if (($pg+2) < $quant_pg) { echo "<a href=".$PHP_SELF."?pg=".($pg+1)." class=pg><b>próximo »</b></a>"; } else { echo "<font color=#CCCCCC>próximo »</font>"; }?> Caro Wolfphw, tentei estou tentando usar o seu script mas, não está sequenciando os registros. Tipo: aparece o "anterior", o "próximo", os números, contabiliza o número de páginas pela quantidade de registros mas, quando passo o mouse em cima do numero "2", o rodape me mostra que é o número "1". Quer dizer, a página "1" ao invés de ser "1" é "0". A outra coisa é que quando clico no "próximo", ele não avança a sequencia dos meus registros. Tipo: se a primeira página é de 1 até 5, quando clico no "próximo" ou no número "2", os registros continuam sendo os cinco primeiros. Ele não avança do 6 a 10, entendeu? Pode me dizer que preciso inserir aqui? while ($aux = mysql_fetch_array($sql)) { ------> /* Ai o resto é com voces em montar como deve parecer o conteúdo */ } ?> Desculpe mas ainda tô num nível iniciante pra intermediário. Espero que possa me ajudar. Estou batendo cabeça com essa paginação. Boa noite. Share this post Link to post Share on other sites
wolfphw 60 Report post Posted December 19, 2006 tentei estou tentando usar o seu script mas, não está sequenciando os registros. Tipo: aparece o "anterior", o "próximo", os números, contabiliza o número de páginas pela quantidade de registros mas, quando passo o mouse em cima do numero "2", o rodape me mostra que é o número "1". Quer dizer, a página "1" ao invés de ser "1" é "0".tipo ele quando você passa o mouse nos numero e no rodapé mostra outro anterior é pq o certo a numeração começa com o numero 0, dai pro visual começar aparecendo por 1 em diante eu mando na hora do visual ele mostrar o valor da página + 1.. A outra coisa é que quando clico no "próximo", ele não avança a sequencia dos meus registros. Tipo: se a primeira página é de 1 até 5, quando clico no "próximo" ou no número "2", os registros continuam sendo os cinco primeiros. Ele não avança do 6 a 10, entendeu?Esse minha paginação nao tem esse função de mostrar um bloco de página como você esta querendo, se tiver digamos 200 páginas ele vai mostrar todas. while ($aux = mysql_fetch_array($sql)) { ------> /* Ai o resto é com voces em montar como deve parecer o conteúdo */ } ?> Ai você vai fazer a amostra do seu conteúdo.. a estrutura de como ele vai aparecer dentro de tabelas, tipo esse exemplo: Share this post Link to post Share on other sites
CappiLevi 1 Report post Posted December 31, 2006 Olha, eu não estou a conseguir fazer isto funcionar... Quando eu clico em próximo ele não vai para a próxima página, fica na mesma. Veja o link: CLIQUE AQUI Share this post Link to post Share on other sites
berkowitz 2 Report post Posted February 21, 2007 Fala pessoal.... firme???Eu segui o seu script, porém aqui tenho que trabalhar com SQLServer, e nele não tem o LIMIT! Como faço para paginar????Alguém pode me ajudar por favor?ABRAX! Share this post Link to post Share on other sites
alanrg.83 0 Report post Posted February 21, 2007 Cara me da uma força aqui!Como faço para adaptar este código da seguinte maneira!Na minha tabela nao são todas as linhas que vao ser mostradas, apenas as que no campo "assunto" tem um valor x!Como entao criar a paginação par mostar apenas uma linha de cada vez e só as linhas que no campo assunto com tem o valor x? Share this post Link to post Share on other sites
wolfphw 60 Report post Posted February 23, 2007 Cara me da uma força aqui!Como faço para adaptar este código da seguinte maneira!Na minha tabela nao são todas as linhas que vao ser mostradas, apenas as que no campo "assunto" tem um valor x!Como entao criar a paginação par mostar apenas uma linha de cada vez e só as linhas que no campo assunto com tem o valor x?basta você colocar o nome do campo e o valor do campo na sua consulta ao banco de dados...assim:// Faz o Select pegando o registro inicial até a quantidade de registros para página $sql = mysql_query("SELECT * FROM tabela WHERE coluna='valor' LIMIT $inicial, $numreg"); // Serve para contar quantos registros você tem na seua tabela para fazer a paginação $sql_conta = mysql_query("SELECT * FROM tabela WHERE coluna='valor'"); Share this post Link to post Share on other sites
Guilherme André 0 Report post Posted March 28, 2007 Olá pessoal! Alguem sabe uma solução para este script de paginação? Porque tipo lista tudo direitinho mais ao clicar na pagina 2 fica tudo em branco... pois eu estou ultilizando em uma pagina de pesquisa! Share this post Link to post Share on other sites
W i l l y 0 Report post Posted April 23, 2007 Para resolver o problema de quem estava tendo problema em clicar em "próximo" e ele não ir para a página correspondente, mude as variáveis $pg para $_GET['pg'] em paginação.php e em página.php troque$inicial = $pg * $numregpor $inicial = $_GET['pg'] * $numreg; Share this post Link to post Share on other sites
Marcelo Bento 0 Report post Posted April 25, 2007 Olá amigo eu usei o seu script so que estou tendo um problema na hora de mudar de pagina. ele aparece as seguintes paginas. ex: ID: Data: Nome: Excluir 1 23/04/2007 Video do Cutlas Jogando CS Excluir 2 23/04/2007 Video do Cutlas Jogando CS1 Excluir 3 23/04/2007 Video do Cutlas Jogando CS2 Excluir 4 23/04/2007 Video do Cutlas Jogando CS3 Excluir 5 23/04/2007 Video do Cutlas Jogando CS4 [1] 2 3 próximo » so que quando eu clico em proximo ele volta para a index do site. eu gostaria de saber se tenho que criar alguma pagina chamada pg. pois quando eu passo o mouse em cima do link aparece na barra isso http://localhost/ult/admin/index.php?pg=1 eu estou usando uma função aki para visualizar os resultados na mesma pagina. <?php $pag = $_GET['pag']; if ($pag == ""){ $pag = "menu.php";} include ($pag); ?> ai no caso o href que eu uso é assim <a href="?pag=exemplo.php"> abraços. Share this post Link to post Share on other sites
ARN 0 Report post Posted May 15, 2007 Olá pessoal, sou iniciante em PHP, mas trabalho a 20 anos com programação em diversas linguagens. Gostaria de agradecer pelo script de paginação, e eu dei um jeito nele já que ele apresentou alguns problemas. Agora, pelo menos aqui está 100%, com essas modificações. Se alguém verificar alguma coisa que derrepente poderia ser solucionada mais facilmente, com outro comando porfavor me digam, como já disse sou iniciante. Obrigado a todos. ----------------------------------------------------------pag_curso.php<?php// Incluindo a conexão com o banco include('sgbd/conn.php');//######### INICIO Paginação $numreg = 10; // Quantos registros por página vai ser mostrado if (!isset($pg)) { $pg = 0; } $inicial = @$_GET['pg'] * $numreg;//######### FIM dados Paginação // Faz o Select pegando o registro inicial até a quantidade de registros para página $sql = mysql_query("select * from cursos LIMIT $inicial, $numreg"); // Serve para contar quantos registros você tem na seua tabela para fazer a paginação $sql_conta = mysql_query("SELECT * FROM cursos"); $quantreg = mysql_num_rows($sql_conta); // Quantidade de registros pra paginação include("paginar_curso.php"); // Chama o arquivo que monta a paginação. ex: << anterior 1 2 3 4 5 próximo >> echo "<br><br>"; // Vai servir só para dar uma linha de espaço entre a paginação e o conteúdo while ($aux = mysql_fetch_array($sql)) { echo "<a href=" , $aux['endereco'] , ">" , $aux['descricao'], "</a>", "<br/>"; }?>----------------------------------------------------------paginar_curso.php<style type="text/css"><!--.pgoff {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #FF0000; text-decoration: none}a.pg {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #003366; text-decoration: none}a:hover.pg {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #0066cc; text-decoration:underline}--></style><?php $quant_pg = ceil($quantreg/$numreg); $quant_pg++; // Verifica se esta na primeira página, se nao estiver ele libera o link para anterior if ( @$_GET['pg'] > 0) { echo "<a href=".$_SERVER['PHP_SELF']."?pg=".(@$_GET['pg']-1)." class=pg ><b>« Anterior</b></a>"; } else { echo "<font color=#CCCCCC>« anterior</font>"; } // Faz aparecer os numeros das página entre o ANTERIOR e PROXIMO for($i_pg=1; $i_pg<$quant_pg;$i_pg++) { // Verifica se a página que o navegante esta e retira o link do número para identificar visualmente if (@$_GET['pg'] == ($i_pg-1)) { echo " <span class=pgoff>[$i_pg]</span> "; } else { $i_pg2 = $i_pg-1; echo " <a href=".$_SERVER['PHP_SELF']."?pg=$i_pg2 class=pg><b>$i_pg</b></a> "; } } // Verifica se esta na ultima página, se nao estiver ele libera o link para próxima if ((@$_GET['pg']+2) < $quant_pg) { echo "<a href=".$_SERVER['PHP_SELF']."?pg=".(@$_GET['pg']+1)." class=pg ><b>próximo »</b></a>"; } else { echo "<font color=#CCCCCC>próximo »</font>"; }?> Share this post Link to post Share on other sites
Master.Angel 0 Report post Posted May 20, 2007 Porque que com o include não esta funcionando.Toda vez que clico em próximo ele volta pra index.php.Na minha pagina.php eu coloquei o form e este codigo:$busca = ""; if ($_GET["busca"]!=""){ $txt_criterio = $_GET["busca"]; echo $txt_criterio;} Mas não esta fazendo a busca não.Abraços a todos. Share this post Link to post Share on other sites
guibean 0 Report post Posted May 23, 2007 Parabéns pelo script Mas agora gostaria de saber como que eu limito o número de páginas que apareceram Tipo se tiver mais de 30 páginas colocar "...." entre as páginas, assim o script ficaria completo Como por exemplo Share this post Link to post Share on other sites
wolfphw 60 Report post Posted May 23, 2007 Parabéns pelo script Mas agora gostaria de saber como que eu limito o número de páginas que apareceram Tipo se tiver mais de 30 páginas colocar "...." entre as páginas, assim o script ficaria completo Como por exemplo Tipo nesse seu caso você vai ter que fazer um monte de IFs para faer testes.... eu jah pensei em fazer algo dessa forma.. mas naum mexi nada ainda sobre isso... Share this post Link to post Share on other sites