Ir para conteúdo
Fórum Script Brasil
  • 0

Paginação


Guilherme014

Pergunta

 
// Dados para conexão mySQL
 define ("host", "127.0.0.1");
 define ("conta", "guilherme");
 define ("senha", "gui417");
 define ("database", "advogados");

 // Cria a classe para paginação
 class Paginacao_Bonita {

   // Variáveis de classe
   var $rpp = 10; // Registros Por Página
   var $pagina;
   var $paginas;
   var $limite;
   var $dados = array();
   
   // Construtor
   function Paginacao_Bonita() {
   
     mysql_pconnect (host, conta, senha);
     
     mysql_select_db (database);
   
   }
   
   // Recebe a numeração de página enviada
   function Recebe_Dados() {
   
     // Obtêm dados em path da URL
     $this->pagina = $_SERVER["PATH_INFO"];
     
     // Separa as informações obtidas
     $temp = explode ("/", $this->pagina);
     
     // Armazena a página
     $this->pagina = $temp[1];
   
   }
   
   // Verifica a página recebida
   function Verifica_Pagina() {
   
     // Verifica se não é numérica a página
     if (!is_numeric ($this->pagina)) :
     
       $this->pagina = 1;
     
     endif;
   
   }
   
   // Obtêm o total de registros
   function Total_Registros() {
   
     // SQL de contagem
     $sql = "SELECT COUNT(vocabularioid) FROM vocabulario";
     
     // Executa o SQL de contagem
     $sql = mysql_query ($sql);
     
     // Obtêm os resultados em uma matriz
     $sql = mysql_fetch_row ($sql);
     
     // Armazena o número de registros
     $this->paginas = $sql[0];
   
   }
   
   // Calcula o total de páginas
   function Total_Paginas() {
   
     $this->paginas = ceil ($this->paginas / $this->rpp);
   
   }
   
   // Verifica o pedido de página
   function Verifica_Paginas() {
   
     // Verifica se a página requisitada não existe
     if ($this->pagina > $this->paginas) :
     
       $this->pagina = $this->paginas;
     
     endif;
   
   }
   
   // Calcula o limite para exibição
   function Calcula_Limite() {
   
     $this->limite = (($this->pagina - 1) * $this->rpp);
   
   }
   
   // Obtêm os dados do intervalo atual
   function Seleciona_Dados() {
   
     // SQL de seleção
     $sql = "SELECT * FROM vocabulario WHERE vo_status=1 ORDER BY letraid ASC LIMIT " . $this->limite . ", " . $this->rpp;
     
     // Executa o SQL de contagem
     $sql = mysql_query ($sql);
     
     // Contador auxiliar
     $i = 0;
     
     // Armazena em uma matriz os resultados
     while ($this->dados[$i] = mysql_fetch_assoc ($sql)) :
     
       $i++;
     
     endwhile;
     
     // Elimina o último índice, pois está vazio
     array_pop ($this->dados);
   
   }
   
   // Cria o HTML da paginação
   function Mostra_Paginacao() {
   
     // Primeiro
     $paginacao = ($this->pagina == 1) ? "<= Primeiro" : "<= <a href=\"" . $_SERVER["SCRIPT_NAME"] . "/1/\">Primeiro</a>";
   
     // Anterior
     $paginacao .= (($this->pagina - 1) <= 0) ? " | « Anterior" : " | « <a href=\"". $_SERVER["SCRIPT_NAME"] . "/" . ($this->pagina - 1) . "/\">Anterior</a>";
     
     // -3
     $paginacao .= (($this->pagina - 3) <= 0) ? "" : " | <a href=\"" . $_SERVER["SCRIPT_NAME"] . "/" . ($this->pagina - 3) . "/\">" . ($this->pagina - 3) ."</a>";
     
     // -2
     $paginacao .= (($this->pagina - 2) <= 0) ? "" : " | <a href=\"" . $_SERVER["SCRIPT_NAME"] . "/" . ($this->pagina - 2) . "/\">" . ($this->pagina - 2) ."</a>";
     
     // -1
     $paginacao .= (($this->pagina - 1) <= 0) ? "" : " | <a href=\"" . $_SERVER["SCRIPT_NAME"] . "/" . ($this->pagina - 1) . "/\">" . ($this->pagina - 1) ."</a>";
     
     // Atual
     $paginacao .= " | <strong>[" . $this->pagina . "]</strong>";
     
     // +1
     $paginacao .= (($this->pagina + 1) > $this->paginas) ? "" : " | <a href=\"" . $_SERVER["SCRIPT_NAME"] . "/" . ($this->pagina + 1) . "/\">" . ($this->pagina + 1) ."</a>";
     
     // +2
     $paginacao .= (($this->pagina + 2) > $this->paginas) ? "" : " | <a href=\"" . $_SERVER["SCRIPT_NAME"] . "/" . ($this->pagina + 2) . "/\">" . ($this->pagina + 2) ."</a>";
     
     // +3
     $paginacao .= (($this->pagina + 3) > $this->paginas) ? "" : " | <a href=\"" . $_SERVER["SCRIPT_NAME"] . "/" . ($this->pagina + 3) . "/\">" . ($this->pagina + 3) ."</a>";
   
     // Próximo
     $paginacao .= (($this->pagina + 1) > $this->paginas) ? " | Próximo »" : " | <a href=\"". $_SERVER["SCRIPT_NAME"] . "/" . ($this->pagina + 1) . "/\">Próximo</a> »";
     
     // Último
     $paginacao .= ($this->pagina == $this->paginas) ? " | Último =>" : " | <a href=\"" . $_SERVER["SCRIPT_NAME"] . "/" . ($this->paginas) . "/\">Último</a> =>";
     
     // Retorna a variável de paginação
     echo $paginacao;
   
   }

 }

 // Instancia a classe e executa suas rotinas
 $foo = new Paginacao_Bonita();
 $foo->Recebe_Dados();
 $foo->Verifica_Pagina();
 $foo->Total_Registros();
 $foo->Total_Paginas();
 $foo->Verifica_Paginas();
 $foo->Calcula_Limite();
 $foo->Seleciona_Dados();

 foreach ($foo->dados as $dados) :

?>

<div align="left" style="font: 70% verdana; border: 1px solid #CCCCCC; padding: 5px; margin: 5px; background-color: #F5F5F5;">

   <table border="0" cellpadding="0" cellspacing="0" width="*">
     <tr> 
       <td width="109"> PALAVRA: <br /> </td>
       <td width="168"><strong><? echo $dados["vo_nome"]; ?></strong></td>
     </tr>
     <tr> 
       <td>&nbsp;</td>
       <td>&nbsp;</td>
     </tr>
     <tr> 
       <td> DESCRIÇÂO: <br /> 
       </td>
       <td><div align="justify"><strong><? echo $dados["vo_descricao"]; ?></strong></div></td>
     </tr>
   </table>

</div>

<?

 endforeach;

?>

<br /><div align="center" style="font: 70% verdana;">

 <? $foo->Mostra_Paginacao(); ?>

</div>
 

o normal da pagina e assim:

quando clico em dois, aparece assim:

como faço para aparecer assim:

ou similar

valeu

guilherme

Link para o comentário
Compartilhar em outros sites

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

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,4k
    • Posts
      652,2k
×
×
  • Criar Novo...