Jump to content

Recommended Posts

Posted

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 »

Posted

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.

Posted

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'

Posted

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.

Posted

$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.

Posted

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

Posted

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...

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.