terça-feira, 16 de novembro de 2010

Paginação simples e rápida em PHP utilizando a classe Paging

Apesar de ser um assunto muito abordado em outros sites e blogs, resolvi postar aqui a minha abordagem de paginação em PHP. Se trata de uma classe, que com algumas poucas linhas de código, pode ser configurada para mostrar dados tabelados, com um painel de navegação entre páginas, semelhante ao utilizado no site da google.com.

Imagem demonstrativa


Exemplo de utilização

  1. Crie uma instância da classe
    require_once('paging.class.php');
    $paging = new Paging();
  2. Defina os parâmetros (atributos) principais
    $paging->table('produtos');
    $paging->labels('ID,Nome,Tipo, Descrição');
    $paging->fields('id,nome,tipo,descricao');
    $paging->page(isset($_GET['p']) ? $_GET['p'] : 1);
  3. Mostre os resultados: a tabela com os registros e controles de navegação
    $paging->show_table();
    $paging->show_controls();

Confira mais exemplos


Arquivos

Utilize o link abaixo para fazer o download dos arquivo necessários, esta tudo compactado em um arquivo zip, no total são dois arquivos, um é a classe connection.class.php, que você deve configurar com os dados de acesso para um banco de dados e o outro arquivo é o paging.class.php, responsável por criar a paginação. Caso tenha dúvidas de como proceder, confira os tutoriais disponíveis nos links acima.

Documentação

Abaixo você pode conferir a documentação da classe paging, com a lista de atributos e métodos disponíveis.

Atributos


NomeTipoModificadorDescrição
s_tableStringPublicNome da tabela do banco em que o objeto irá operar.
s_fieldsStringPublicLista de campos(colunas) da tabela que deverão ser retornadas (separados por vírgulas).
s_labelsStringPublicLista com os valores que serão apresentados nas colunas do cabeçalho da tabela (separados por vírgulas).
s_whereStringPublicClausúla 'Where', caso ouver, senão poderá ser deixada em branco e assumirá '1' (tudo) na hora de realizar a query.
s_orderbyStringPublicNome da coluna que irá ser utilizada para ordenar os registros. Assume 'id' como padrão, caso não seja informada.
s_orientationStringPublicOrientação dos registros Ascendente 'ASC' ou Descendente 'DESC'.
i_rowsperpageIntegerPublicNúmero de registros mostrados por página. Se não for informado, assumirá 50 por padrão.
i_pageIntegerPublicPágina atual utilizada para a leitura dos registro. O padrão é 1, ou seja, primeria página.
i_link_limitIntegerPublicLimite de número de links de páginas mostrados no painel de navegação da paginação. Assume 5 caso não seja informado.
a_columnsArrayPublicArray responsável por armazenar as colunas inseridas manualmente.
a_cols_widthArrayPublicArray com os tamanhos das colunas do grid.

Métodos

NomeRetornaModificadorDescrição
table(String)NullPublicMétodo set, utilizado para definir a propriedade 's_table'
fields(String)NullPublicMétodo set, utilizado para definir a propriedade 's_fields'
labels(String)NullPublicMétodo set, utilizado para definir a propriedade 's_labels'
where(String)NullPublicMétodo set, utilizado para definir a propriedade 's_where'
orderby(String)NullPublicMétodo set, utilizado para definir a propriedade 's_orderby'
orientation(String)NullPublicMétodo set, utilizado para definir a propriedade 's_orientation'
rowsperpage(Int)NullPublicMétodo set, utilizado para definir a propriedade 'i_rowsperpage'
page(Int)NullPublicMétodo set, utilizado para definir a propriedade 'i_page'
link_limit(Int)NullPublicMétodo set, utilizado para definir a propriedade 'i_link_limit'
total_rows()IntegerPublicRetorna o número total de registros encontrados, baseando-se nos atributos(s_fields,s_where) passados para o objeto.
pages_count()IntegerPublicRetorna o número total de páginas.
thead()ArrayPrivateRetorna um array com as células utilizados no cabeçalho da tabela. Usada apenas internamente pela classe.
cells()ArrayPrivateRetorna um array com os campos que deverão ser retornados do banco de dados. Usada apenas internamente pela classe.
page_scale(Int, Int, Int)ArrayPrivateCria uma escala numerada de páginas, avança na escala conforme o número da página atual informado, mantendo sempre números iguais de páginas anteriores e próximas a atual. Usada apenas internamente pela classe.
show_table()NullPublicEscreve na tela a tabela com os registros recuperados.
show_controls()NullPublicMostra o painel de controle da paginação, com os links: ('Primeira','Anterior','Escala numerada','Próxima','Última'). Aqui existe um pequeno porém, caso o número de registros por página seja insuficiente para criar mais do que uma página, então os controles não serão mostrados, resumindo: 1 página = nenhum controle, 2 páginas ou mais = mostra controles.
add_column()NullPublicPermite adicionar manualmente colunas no grid.
cols_width()NullPublicPermite ajustar o tamanho das colunas do grid.
É isso aí, espero que tenham apreciado, qualquer dúvida, critica ou sugestão por favor deixe um comentário, irei responder assim que possível.

Nenhum comentário:

Postar um comentário