terça-feira, 16 de novembro de 2010

Tutorial: Utilizando a classe Paging para criar uma paginação simples e rápida

No post "Paginação simples e rápida em PHP utilizando a classe Paging" foi apresentado a classe Paging, para criar paginação de dados tabelados.

Neste post, vamos ver passo a passo como fazer para utilizar os recursos desta classe e vamos construir um pequeno sistema de visualização de registros com as funções mais comuns esperadas de um recurso como este.

Arquivos necessários

Utilize o link abaixo para fazer o download dos arquivo necessários, esta tudo compactado em um arquivo zip, no total são cinco arquivos, iremos ver cada um deles a partir de agora.

produtos.sql

Execute o conteúdo deste arquivo no seu servidor mysql. Todo este exemplo é trabalhado baseando-se nos registros deste banco. Fique livre para usar qualquer outra tabela caso não queira poluir seu banco de dados com este sql. :)

paging.css

Utilizado para dar uma "floreada" em nossa tabela, aplicando alguns estilos.

connection.class.php

Utilizaremos este arquivo para fazer a conexão com o banco de dados.


  1. Abra o arquivo e altere os valores destacados em negrito, utilizando os dados de acesso ao seu banco de dados:

    private $dsn = 'mysql:dbname=paging;host=localhost';
    private $user = 'root';
    private $pass = '';
  2. Depois de alterado, pode salvar e fechar o arquivo, não iremos mais mexer nele.

paging.class.php

Este é o arquivo que faz toda a mágica. Você não precisa mexer em basicamente nada nele, a não ser que queira personalizar, fique a vontade para realizar as mudanças que julgar necessário.

exemplo_simples.php

É neste arquivo que iremos utilizar a classe Paging.

  1. Abra o arquivo e procure pelas linhas:
    1. require_once('paging.class.php');
    2. $paging = new Paging();
    3. $paging->table('produtos');
    4. $paging->labels('ID,Nome,Tipo, Descrição');
    5. $paging->fields('id,nome,tipo,descricao');
    6. $paging->rowsperpage(10);
    7. $paging->page(isset($_GET['p']) ? $_GET['p'] : 1);
  2. Nas primeiras duas linhas nos apenas incluímos a classe Paging e criamos uma instância do objeto Paging. Até aqui nada demais.
  3. Na linha "$paging->table('produtos');", nós informamos ao objeto, qual a tabela dentro do banco de dados, que queremos que os registros sejam retornados.
  4. Na linha "$paging->labels('ID,Nome,Tipo, Descrição');", utilizamos o método labels( ) para definir quais serão os valores do cabeçalho da tabela. Os valores que forem colocados ali, ficarão dentro das tags <th> da tabela. Utilize vírgulas para separar os valores.
  5. Na linha "$paging->fields('id,nome,tipo,descricao');", temos um método bem semelhante: fields( ), aqui você precisa informar quais são as colunas que terão o conteúdo retornado da tabela. Assim como no método labels( ), utilize vírgula para separar os valores.
  6. Na linha "$paging->rowsperpage(10);", temos o método rowsperpage( ), aqui você definirá o número máximo de registros que serão mostrados em cada página.
  7. Na linha "$paging->page(isset($_GET['p']) ? $_GET['p'] : 1);", temos o método page( ). Vamos passar como parâmetro o valor da página atual, informando ao objeto, de qual página queremos que ela retorne os registros. A classe Paging, utiliza a variável $_GET['p'] como padrão, portanto deixe ela reservada para a classe, caso precise mudá-la, você terá que fazer isso manualmente no arquivo paging.class.php. Como geralmente na primeira visualização da página, a variável $_GET['p'] não esta definida, nós utilizamos um "if inline" para validá-la.

Até aqui, o que nós apenas fizemos, foi configurar nosso objeto com alguns parâmetros, nada é mostrado em tela até então. Vamos ver como isso é feito:

  1. Procure pelas linhas:
    1. <div id="All">
    2. <div id="Table"><?php $paging->show_table(); ?></div>
    3. <div id="Paging"><?php $paging->show_controls(); ?></div>
    4. <div id="Pagecount">Página: <?php echo($paging->i_page) ?> de <?php echo($paging->pages_count())?></div>
    5. </div>
  2. Vamos ignorar a explicação das divs neste exemplo, elas são praticamente auto-explicativas e servem basicamente apenas para organizar o conteúdo.
  3. Na segunda linha, utilizamos mais um método de nossa classe: show_table( ), como o nome da a entender, é ele quem imprime na tela os registros recuperados.
  4. Logo abaixo, utilizamos mais um importante método, o show_controls( ), é ele quem mostrará os controles de navegação das páginas. Por padrão este método irá sempre mostrar até 5 links com páginas para o usuário navegar, mas caso você queira alterar este valor, utilize o método link_limit( ), e informe um novo valor para o objeto.
  5. Por último, temos na penúltima linha, o uso de mais um método pages_count( ), ele nos permite retornar o número de páginas encontradas pela classe, e com isso nós conseguimos mostrar ao usuário um status da navegação dele pelas páginas.

Se você conseguiu rodar localmente este exemplo, você deve estar vendo algo parecido com a imagem abaixo:

Bom, por hoje é só, espero que tenham apreciado o exemplo. Fiquem livre para comentar, tirar dúvidas ou dar sugestões. Até breve!

Um comentário:

  1. Viva.
    A ligação para descarregar o pagingclass penso que já n está disponivel!
    Sabe dizer onde posso ir buscar?

    Cumps,
    Paulo

    ResponderExcluir