bLTR Posted May 4, 2012 at 11:20 AM Report #453040 Posted May 4, 2012 at 11:20 AM Bom dia novamente! O meu codigo esta aqui: <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=".$_SERVER['PHP_SELF'] ."?pg=".($pg-1) ."class=pg><b>« anterior</b></a>"; } else { echo "<font color=#CCCCCC>« anterior</font>"; } // Aqui começa a alteração // faz o controle da quantidade de paginas irá mostrar em números na paginação if (($pg - 3) < 1 ){ $ant = 1; } else { $ant = $pg - 3; } if (($pg + 6) > $quant_pg ) { $pos = $quant_pg; } else { $pos = $pg + 6; } // Faz aparecer os numeros das página entre o ANTERIOR e PROXIMO for($i_pg=$ant;$i_pg < $pos;$i_pg++) { // Aqui termina a alteração // 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=".$_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 (($pg+2) < $quant_pg) { echo "<a href=".$_SERVER['PHP_SELF'] ."?pg=".($pg+1)." class=pg><b>próximo »</b></a>"; } else { echo "<font color=#CCCCCC>próximo »</font>"; } ?> Funciona perfeitamente, mas o que eu quero mesmo é que me apareca da seguinte forma: « anterior 1 2 3 ... 7 [8] 9 ... 18 19 20 próximo » ele está assim neste momento: « anterior [1] 2 3 4 5 próximo »
bLTR Posted May 4, 2012 at 02:13 PM Author Report #453085 Posted May 4, 2012 at 02:13 PM preciso mesmo de ajuda aqui pessoal :/
bLTR Posted May 8, 2012 at 10:26 AM Author Report #453724 Posted May 8, 2012 at 10:26 AM ... ninguem?
pedrosorio Posted May 8, 2012 at 10:42 AM Report #453731 Posted May 8, 2012 at 10:42 AM Bom, não tens informação suficiente para perceber onde está o erro. Onde é que estão definidas as variáveis $pg, $quantreg e $numreg? De acordo com o código que aí tens nunca poderia aparecer: « anterior 1 2 3 ... 7 [8] 9 ... 18 19 20 próximo » Porque ele só mostra as 3 páginas anteriores à actual e as 6 páginas posteriores. Por outro lado, pode estar a aparecer o que tu dizes se $pg == 0 e $quant_pg for 5. Se nem sequer dizes quais os valores destas variáveis, é óbvio que não podemos adivinhar o que está mal. Não respondo a dúvidas por mensagem.
bLTR Posted May 8, 2012 at 10:49 AM Author Report #453734 Posted May 8, 2012 at 10:49 AM vou meter o novo código que estive a fazer para ja... <?php if(isset($_GET['pagina'])) $pagina = $_GET['pagina']; else $pagina=0; //######### INICIO Paginação // $nr_limite = $_SESSION['nr_paginas']=$_POST['nr_paginas']; // Quantos registos por página vai ser mostrado $adjacents = 30; if(!isset($_SESSION['nr_paginas'])) { $sql_conta = pg_query("SELECT * FROM variaveis_sistema where nome like 'Numero Elementos Paginas' "); $quantidade_paginas = pg_fetch_array($sql_conta); $_SESSION['nr_paginas']=$quantidade_paginas['valor']; } $nr_limite = $_SESSION['nr_paginas']; /* if(isset($_GET['nr_limite'])) $nr_limite = $_GET[nr_limite]; else $nr_limite=30; */ $inicial = $pagina * $nr_limite; if($pagina) { $inicial = ($pagina - 1) * $nr_limite; } else { $inicial = 0; } //######### FIM dados Paginação $sql = pg_query("SELECT * FROM alunos ORDER BY nome LIMIT $nr_limite OFFSET $inicial"); $sql_conta = pg_query("SELECT * FROM alunos ORDER By nome"); $quantidade_paginas = pg_num_rows($sql_conta); $a=0; echo '<br clear="all"><table cellpadding="0" cellspacing="0" border="0" width="100%" class="sample">'; echo '<tr><th>Op</th><th>N Prosseso</th><th>Nome</th><th>telefone</th><th>telemovel</th><th>email</th></tr>'; while($row=pg_fetch_array($sql)){ $COR="#FFFFFF"; if($count%2==0) $COR="#F5FFB9"; echo '<tr style="background-color: '.$COR.' ">'; echo "<td><a href='javascript:setId(".$row['id'].",6311)'><img src='images/edit.png' border=0 alt='Editar Professor'></a></td>"; echo "<td>".$row['num_processo']."</td>"; echo "<td>".$row['nome']."</td>"; echo "<td>".$row['telefone']."</td>"; echo "<td>".$row['telemovel']."</td>"; echo "<td>".$row['email_login']."@".$row['email_dominio']."</td>"; echo "</tr>"; $count=$count+1; } echo "</table>"; ?> <?php $quant_pg = ceil($quantidade_paginas/$nr_limite); $quant_pg++; $anterior = $pagina - 1; $proximo = $pagina + 1; $ultima_pagina = ceil($quantidade_paginas/$nr_limite); $ultima_pagina_menos_1 = $ultima_pagina - 1; $paginacao = ""; if ($ultima_pagina > 1) { if ($pagina > 0) { $paginacao .= "<div class=\"paginacao\">"; //Botão "Anterior" $paginacao.= "<a href=\"?pagina=$anterior\">« Anterior </a>"; } else { $paginacao.= "<span class=\"disabled\">« Anterior </span>"; } //Páginas if ($ultima_pagina < 3 + ($adjacents * 2)) { for($conta = 1; $conta <= $ultima_pagina; $conta++) { if ($conta == $pagina) { $paginacao.= "<span class=\"current\">$conta </span>"; } else { $paginacao.= "<a href=\"?pagina=$conta\">$conta </a>"; } } } else if ($ultima_pagina < 1 + ($adjacents * 2)) { // fecha no inicio; apenas esconde ultimas paginas if($pagina < 1 + ($adjacents * 2)) { for ($conta = 1; $conta < 2 + ($adjacents * 2); $conta++) { if ($conta == $pagina) { $paginacao.= "<span class=\"current\">$conta </span>"; } else { $paginacao.= "<a href=\"?pagina=$conta\">$conta </a>"; } $paginacao.= "..."; $paginacao.= "<a href=\"?pagina=$ultima_pagina_menos_1\">$ultima_pagina_menos_1</a>"; $paginacao.= "<a href=\"?pagina=$ultima_pagina\">$ultima_pagina</a>"; // no meio; esconde alguns à frente e atrás tambem } } else if ($ultima_pagina - ($adjacents * 2) > $pagina && $pagina > ($adjacents * 2)) { $paginacao.= "<a href=\"?pagina=1\">1</a>"; $paginacao.= "<a href=\"?pagina=2\">2</a>"; $paginacao.= "..."; for ($conta = $pagina - $adjacents; $conta <= $pagina + $adjacents; $conta++) { if ($conta == $pagina) { $paginacao.= "<span class=\"current\">$conta </span>"; } else { $paginacao.= "<a href=\"?pagina=$conta\">$conta </a>"; } } $paginacao.= "..."; $paginacao.= "<a href=\"?pagina=$ultima_pagina_menos_1\">$ultima_pagina_menos_1</a>"; $paginacao.= "<a href=\"?pagina=$ultima_pagina\">$ultima_pagina</a>"; } // fecha no fim; apenas esconde paginas anteriores else { $paginacao.= "<a href=\"?pagina=1\">1</a>"; $paginacao.= "<a href=\"?pagina=2\">2</a>"; $paginacao.= "..."; for ($conta = $ultima_pagina - (2 + ($adjacents * 2)); $conta <= $ultima_pagina; $conta++) { if ($conta == $pagina) { $paginacao.= "<span class=\"current\">$conta </span>"; } else { $paginacao.= "<a href=\"?pagina=$conta\">$conta </a>"; } } } } // Botão "Próximo" if ($pagina < $conta - 1) { $paginacao.= "<a href=\"?pagina=$proximo\">Próximo »</a>"; } else { $paginacao.= "<span class=\"disabled\">Próximo »</span>"; $paginacao.= "</div>\n"; } } ?> <ul> <?php while($aux = pg_fetch_array($sql)) { ?> <li><a href=""></a></li> <?php } ?> </ul> <?=$paginacao?> os meus novos problemas são: 1- Quando abro no website a pagina, onde está a paginação, ele em vez de começar na página 1, começa no "anterior" que é a página 0; 2- Continua sem aparecer as reticencias (...) o esquema que eu quero é: << Anterior 1 2 ... 5 [6] 7 ... 10 11 Seguinte >> ; 3- Sei que o 2º problema tem a haver com as contas, já tentei de tudo e não consegui solucionar a cena das contas. cumprimentos, bLTR'
pedrosorio Posted May 8, 2012 at 11:11 AM Report #453749 Posted May 8, 2012 at 11:11 AM Está uma confusão ainda maior. O que quer isto dizer, por exemplo: $inicial = $pagina * $nr_limite; $pagina é um número entre 0 e 1? Se não é porque é que estás a multiplicar a página pelo nr_limite (que presumo seja o número total de páginas?) Estás a usar muito mais variáveis do que é necessário e é impossível perceber o que se passa aí, devias pensar antes de escrever o código. Não respondo a dúvidas por mensagem.
bLTR Posted May 8, 2012 at 11:21 AM Author Report #453754 Posted May 8, 2012 at 11:21 AM $inicial -> é o inicio $pagina -> é a pagina $ nr_limite -> numero total de páginas que é 30
pedrosorio Posted May 8, 2012 at 11:57 AM Report #453769 Posted May 8, 2012 at 11:57 AM $inicial -> é o inicio $pagina -> é a pagina $ nr_limite -> numero total de páginas que é 30 Portanto, $página = 5, $nr_limite = 30, logo $inicial = 150? Que sentido é que isto faz? Não respondo a dúvidas por mensagem.
bLTR Posted May 8, 2012 at 12:01 PM Author Report #453770 Posted May 8, 2012 at 12:01 PM talvez me tenha explicado mal, ou entao a variavel inicial deveria ser o numero do registo, ou seja, o registo 150, ira aparecer na pagina 5
bLTR Posted May 8, 2012 at 01:41 PM Author Report #453807 Posted May 8, 2012 at 01:41 PM Boa tarde, já estive a mudar alguma coisa no código, parece ja nao estar tao confuso... <?php if(isset($_GET['pagina'])) $pagina = $_GET['pagina']; else $pagina=""; //######### INICIO Paginação // $nr_limite = $_SESSION['nr_paginas']=$_POST['nr_paginas']; // Quantos registos por página vai ser mostrado $nr_limite = 30; if(!isset($_SESSION['nr_paginas'])) { $sql_conta = pg_query("SELECT * FROM variaveis_sistema where nome like 'Numero Elementos Paginas' "); $quantidade_paginas = pg_fetch_array($sql_conta); $_SESSION['nr_paginas']=$quantidade_paginas['valor']; } $nr_limite = $_SESSION['nr_paginas']; /* if(isset($_GET['nr_limite'])) $nr_limite = $_GET[nr_limite]; else $nr_limite=30; */ if($pagina) { $inicial = ($pagina - 1) * $nr_limite; } else { $inicial = 0; } //######### FIM dados Paginação $sql = pg_query("SELECT * FROM alunos ORDER BY nome LIMIT $nr_limite OFFSET $inicial"); $sql_conta = pg_query("SELECT * FROM alunos ORDER By nome"); $quantidade_paginas = pg_num_rows($sql_conta); $a=0; echo '<br clear="all"><table cellpadding="0" cellspacing="0" border="0" width="100%" class="sample">'; echo '<tr><th>Op</th><th>N Prosseso</th><th>Nome</th><th>telefone</th><th>telemovel</th><th>email</th></tr>'; while($row=pg_fetch_array($sql)){ $COR="#FFFFFF"; if($count%2==0) $COR="#F5FFB9"; echo '<tr style="background-color: '.$COR.' ">'; echo "<td><a href='javascript:setId(".$row['id'].",6311)'><img src='images/edit.png' border=0 alt='Editar Professor'></a></td>"; echo "<td>".$row['num_processo']."</td>"; echo "<td>".$row['nome']."</td>"; echo "<td>".$row['telefone']."</td>"; echo "<td>".$row['telemovel']."</td>"; echo "<td>".$row['email_login']."@".$row['email_dominio']."</td>"; echo "</tr>"; $count=$count+1; } echo "</table>"; ?> <?php $conta=0; $anterior = $pagina - 1; $proximo = $pagina + 1; $ultima_pagina = ceil($quantidade_paginas/$nr_limite); $ultima_pagina_menos_1 = $ultima_pagina - 1; $paginacao = ""; if ($ultima_pagina > 1) { if ($pagina > 0) { $paginacao .= "<div class=\"paginacao\">"; //Botão "Anterior" $paginacao.= "<a href=\"?pagina=$anterior\">« Anterior </a>"; } else { $paginacao.= "<span class=\"disabled\">« Anterior </span>"; } //Páginas if ($ultima_pagina < 3 + ($nr_limite * 4)) { for($conta = 1; $conta <= $ultima_pagina; $conta++) { if ($conta == $pagina) { $paginacao.= "<span class=\"current\">$conta </span>"; } else { $paginacao.= "<a href=\"?pagina=$conta\">$conta </a>"; } } } else if ($ultima_pagina < 1 + ($nr_limite * 2)) { // fecha no inicio; apenas esconde ultimas paginas if($pagina < 3 + ($nr_limite * 2)) { for ($conta = 1; $conta < 2 + ($nr_limite * 2); $conta++) { if ($conta == $pagina) { $paginacao.= "<span class=\"current\">$conta </span>"; } else { $paginacao.= "<a href=\"?pagina=$conta\">$conta </a>"; } $paginacao.= "..."; $paginacao.= "<a href=\"?pagina=$ultima_pagina_menos_1\">$ultima_pagina_menos_1</a>"; $paginacao.= "<a href=\"?pagina=$ultima_pagina\">$ultima_pagina</a>"; // no meio; esconde alguns à frente e atrás tambem } } else if ($ultima_pagina - ($nr_limite * 2) > $pagina && $pagina > ($nr_limite * 2)) { $paginacao.= "<a href=\"?pagina=1\">1</a>"; $paginacao.= "<a href=\"?pagina=2\">2</a>"; $paginacao.= "..."; for ($conta = $pagina - $nr_limite; $conta <= $pagina + $nr_limite; $conta++) { if ($conta == $pagina) { $paginacao.= "<span class=\"current\">$conta </span>"; } else { $paginacao.= "<a href=\"?pagina=$conta\">$conta </a>"; } } $paginacao.= "..."; $paginacao.= "<a href=\"?pagina=$ultima_pagina_menos_1\">$ultima_pagina_menos_1</a>"; $paginacao.= "<a href=\"?pagina=$ultima_pagina\">$ultima_pagina</a>"; } // fecha no fim; apenas esconde paginas anteriores else { $paginacao.= "<a href=\"?pagina=1\">1</a>"; $paginacao.= "<a href=\"?pagina=2\">2</a>"; $paginacao.= "..."; for ($conta = $ultima_pagina - (2 + ($nr_limite * 2)); $conta <= $ultima_pagina; $conta++) { if ($conta == $pagina) { $paginacao.= "<span class=\"current\">$conta </span>"; } else { $paginacao.= "<a href=\"?pagina=$conta\">$conta </a>"; } } } } // Botão "Próximo" if ($pagina < $conta - 1) { $paginacao.= "<a href=\"?pagina=$proximo\">Próximo »</a>"; } else { $paginacao.= "<span class=\"disabled\">Próximo »</span>"; $paginacao.= "</div>\n"; } } ?> <ul> <?php while($aux = pg_fetch_array($sql)) { ?> <li><a href=""></a></li> <?php } ?> continuo com os mesmo problemas...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now