cassianooliver Postado Dezembro 9, 2007 Denunciar Share Postado Dezembro 9, 2007 pessoal, to tentando colocar uma paginação aqui em uma página, mas num tendo sucesso não...o código ficou assim..Me basiei nesse tuto do fabyo: http://forum.imasters.com.br/index.php?showtopic=125127O código inteiro é enorme, só deixei mesmo o da paginação, pra facilitar...<?php $sql1 = "SELECT * FROM shows"; $seleciona = mysql_query($sql1); $ts = mysql_num_rows($seleciona); if($ts == 0) { echo "<h2 class='titulo'>Nenhum show cadastrado...</h2>"; } $pagina = 0; if(isset($_GET["pagina"])) { $pagina = $_GET["pagina"]; } $limite = 10; $paginas = ceil($ts / $limite); $inicio = $pagina * $limite; $sql2 = mysql_query("SELECT * FROM shows ORDER BY data DESC LIMIT $inicio, $limite"); $conta = mysql_num_rows($sql2); while ($exibe = mysql_fetch_array ($seleciona)) { ... } if($pagina > 0) { $menos = $pagina - 1; $url = $_SERVER["PHP_SELF"]."?pagina=".$menos; echo "Anterior"; } for($i = 1;$i < $paginas; $i++) { $url = $_SERVER["PHP_SELF"]."?pagina=".$i; echo " | $i"; } if($pagina < $paginas - 1) { $mais = $pagina + 1; $url = $_SERVER["PHP_SELF"]."?pagina=".$mais; echo " | Próxima"; } ?>O que ta acontecendo é o seguinte...Não ta funcionando o "limite" de registros, mas mesmo assim aparece a paginação no final da página...| 1 | 2 | 3 | Próxima...onde to errando? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest dr Postado Dezembro 10, 2007 Denunciar Share Postado Dezembro 10, 2007 acho que é o $inicio que estah errado, deveria ser assim$inicio = ($pagina-1) * $limite; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 cassianooliver Postado Dezembro 10, 2007 Autor Denunciar Share Postado Dezembro 10, 2007 na verdade não...while ($exibe = mysql_fetch_array ($seleciona)) aqui usei a variavel errada... o correto é assim... while ($exibe = mysql_fetch_array ($sql2)) Bom, pelo menos agora o limite de registros ta funcionando.. mas a paginação aparece como texto normal... e não como link para navegar... não aparecia links porque não os coloquei... agora corrigi, mas a paginação não funciona... quando clico num link aparece assim na url:http://localhost/v2.0/administracao/admin.php?pagina=2 mas vai para a página inicial... <?php $sql1 = "SELECT * FROM shows"; $seleciona = mysql_query($sql1); $ts = mysql_num_rows($seleciona); if($ts == 0) { echo "<h2 class='titulo'>Nenhum show cadastrado...</h2>"; } $pagina = 0; if(isset($_GET["pagina"])) { $pagina = $_GET["pagina"]; } $limite = 10; $paginas = ceil($ts / $limite); $inicio = $pagina * $limite; $sql2 = mysql_query("SELECT * FROM shows ORDER BY data DESC LIMIT $inicio, $limite"); $conta = mysql_num_rows($sql2); while ($exibe = mysql_fetch_array ($sql2)) { ... } if($pagina > 0) { $menos = $pagina - 1; $url = $_SERVER["PHP_SELF"]."?pagina=".$menos; echo "<a href='$url'>Anterior</a>"; } for($i = 1;$i < $paginas; $i++) { $url = $_SERVER["PHP_SELF"]."?pagina=".$i; echo " | <a href='$url'>$i</a>"; } if($pagina < $paginas - 1) { $mais = $pagina + 1; $url = $_SERVER["PHP_SELF"]."?pagina=".$mais; echo " | <a href='$url'>Próxima</a>"; } ?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 cassianooliver Postado Dezembro 11, 2007 Autor Denunciar Share Postado Dezembro 11, 2007 pessoal, descobri onde tá o erro...a página inicial, abri assim:admin.php?pg=agendaaí quando clico para paginar, só retornaadmin.php?pag=1ele tá tirando o pg=agenda...como fazer pra que ele não remova isso da url?* Manualmente acrescentei isso nos links e a paginação já está funcionando, mas gostaria de saber se tem como fazer isso sem ter que acrescentar manualmente...echo "<span class='AntProx'><a href=".$PHP_SELF."?pg=agenda&pag=".($pag + 1)." class='prox'>Próxima</a></span>"; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Dezembro 11, 2007 Denunciar Share Postado Dezembro 11, 2007 Coloca:echo "<span class='AntProx'><a href=".$PHP_SELF."?pg=".$_GET['pg']."&pag=".($pag + 1)." class='prox'>Próxima</a></span>"; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 cassianooliver Postado Dezembro 11, 2007 Autor Denunciar Share Postado Dezembro 11, 2007 era isso mesmo...eu até tentei fazer, mas me embolei todo com essas aspas, pontos e tudo mais...brigadão ESerra! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 cassianooliver Postado Dezembro 12, 2007 Autor Denunciar Share Postado Dezembro 12, 2007 (editado) Bom, o problema ta resolvido (como já colocaram no tópico), mas tava tentando fazer 2 coisinhas aqui mas não tive sucesso...na página dos registros, mesmo que não precise da paginação, o "1" que representa a 1ª página sempre é exibido, não to conseguindo condicionar pra remover a paginação caso não seja necessário...e "pag" inicia sempre em 0.Ex: to na página 1, mas na url ta pag=0..to na página 2, mas na url ta pag=1gostaria de deixar igual...o script<?php #Número de registros por página $NumReg = 10; #Verifica se a páginação está setada if(!isset($_GET["pag"])) { $pag = 0; } #Pego o 1º registro $inicio = $pag * $NumReg; # Número total de páginas $Npg = ceil($tr / $NumReg); $Npg++; # Verifica se esta na primeira página, se não estiver ele libera o link para anterior if ( $pag > 0) { echo "<span class='AntProx'><a href=".$PHP_SELF."?pg=" . $_GET["pg"] . "&pag=".($pag-1) ." class='ant'>Anterior</a></span>"; } else { echo ""; # Caso contrário oculta o link "anterior" } # Faz aparecer os numeros das páginas entre os links ANTERIOR e PROXIMA for($i = 1; $i < $Npg; $i++) { # Verifica a página que o navegante esta e retira o link do número para identificar visualmente if($pag == ($i - 1)) { echo "<span class='pga'>$i</span>"; } else { # Acrescenta os links para cada página $i2 = $i - 1; echo "<a href=".$PHP_SELF."?pg=" . $_GET["pg"] . "&pag=$i2 class='pg'>$i</a>"; } } # Verifica se esta na ultima página, se não estiver ele libera o link para próxima if (($pag + 2) < $Npg) { echo "<span class='AntProx'><a href=".$PHP_SELF."?pg=" . $_GET["pg"] . "&pag=".($pag + 1)." class='prox'>Próxima</a></span>"; } else { echo ""; # Caso contrário oculta o link "próxima" } ?> Editado Dezembro 12, 2007 por cassianooliver Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Dezembro 12, 2007 Denunciar Share Postado Dezembro 12, 2007 Para exibir a paginação apenas quando for necessário pegue a variável $Npg e com um if verifique se ela tem valor diferente de 1... algo do tipo:if ($Npg != '1'){ //Aqui o código da paginação } Tem que ver se realmente é 1 ou zero o valor que tem que aparecer... mas dê um echo pra ver que valor aparece quando a paginação não é necessário ai é só substitiuir no que eu passei... Quanto a outra parte, isso acontece por causa de uma "preguiça" de tratar o que vem do GET... Assim isso: if(!isset($_GET["pag"])) { $pag = 0; } #Pego o 1º registro $inicio = $pag * $NumReg; Deve ser trocado por isso: if(!isset($_GET["pag"])) { $pag = 1; }else{ $pag = $_GET["pag"]; } #Pego o 1º registro $pag = $pag-1; $inicio = $pag * $NumReg;Você vai ter que alterar nos links para começar a aparer agora a partir do 1... mas to com preguiça de pensar por você essa parte... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 cassianooliver Postado Dezembro 12, 2007 Autor Denunciar Share Postado Dezembro 12, 2007 pra tentar tirar a paginação fiz assimfiz assimif($tr > $Npg) { echo ""; } else { mostro a paginação... }mas funciona em uma página só, nas outras não...tipo, pag1.php funciona, já na pag2.php a paginação nem aparece... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Dezembro 12, 2007 Denunciar Share Postado Dezembro 12, 2007 Deixa eu recapitular, pelo que eu entedi o que acontece é, mesmo que não seja nacessária a página aparece o número "1" referente a página 1 (que é única), se for isso, a questão é de lógica, olha só, pelo seu script $tr é o número de registros contados no banco... agora olha se isso tem sentido:if($tr > $Npg) {Tradução:Se(número total de registros do BD for maior que o número total de página){Vê só como não tem sentido algum... o que você tem que fazer é ver a quantidade total de páginas, se for igual a 1 não exibe a páginação, caso contrário exibe... Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
cassianooliver
pessoal, to tentando colocar uma paginação aqui em uma página, mas num tendo sucesso não...
o código ficou assim..
Me basiei nesse tuto do fabyo: http://forum.imasters.com.br/index.php?showtopic=125127
O código inteiro é enorme, só deixei mesmo o da paginação, pra facilitar...
O que ta acontecendo é o seguinte...
Não ta funcionando o "limite" de registros, mas mesmo assim aparece a paginação no final da página...
| 1 | 2 | 3 | Próxima...
onde to errando?
Link para o comentário
Compartilhar em outros sites
9 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.