« Color Blender
Design de logos 2009 »

Função para Paginação PHP

Agência O Positivo - www.opositivo.com

Hoje vou mostrar como montar uma paginação

PLAIN TEXT
PHP:
  1. function paginacao($items, $items_pagina, &$pagina_atual, &$pagina_total, &$pagina_anterior, &$pagina_proxima, &$indice_primeiro, &$indice_ultimo, &$items_total) {
  2.         if ((!$items) || (!is_array($items)))
  3.             return array();
  4.         $items_total = sizeof($items);
  5.         $pagina_total = ceil($items_total / $items_pagina);
  6.         if ((!$pagina_atual) || ($pagina_atual <1) || ($pagina_atual> $pagina_total)) {
  7.             $pagina_atual = 1;
  8.         }
  9.         $pagina_anterior = ($pagina_atual == 1 ? 0 : ($pagina_atual-1));
  10.         $pagina_proxima  = ($pagina_atual == $pagina_total ? 0 : ($pagina_atual+1));
  11.         $indice_primeiro = ((($pagina_atual - 1) * $items_pagina) + 1);
  12.         $indice_ultimo   = (($indice_primeiro + $items_pagina - 1)> $items_total ? $items_total : ($indice_primeiro + $items_pagina - 1));
  13.         return array_slice($items, $indice_primeiro - 1, $items_pagina, TRUE);
  14.     }

Para fazer esta function funcionar, basta ter os dados em uma array ex:

PLAIN TEXT
PHP:
  1. $conteudo[]=array('Nome' => 'O Positivo', 'site'=>'www.opositivo.com');
  2. $conteudo[]=array('Nome' => 'O Positivo', 'site'=>'www.opositivo.com');
  3. $conteudo[]=array('Nome' => 'O Positivo', 'site'=>'www.opositivo.com');
  4. $conteudo[]=array('Nome' => 'O Positivo', 'site'=>'www.opositivo.com');
  5. $conteudo[]=array('Nome' => 'O Positivo', 'site'=>'www.opositivo.com');
  6. $conteudo[]=array('Nome' => 'O Positivo', 'site'=>'www.opositivo.com');
  7. $conteudo[]=array('Nome' => 'O Positivo', 'site'=>'www.opositivo.com');
  8. $conteudo[]=array('Nome' => 'O Positivo', 'site'=>'www.opositivo.com');
  9. $conteudo[]=array('Nome' => 'O Positivo', 'site'=>'www.opositivo.com');
  10. $conteudo[]=array('Nome' => 'O Positivo', 'site'=>'www.opositivo.com');
  11. $conteudo[]=array('Nome' => 'O Positivo', 'site'=>'www.opositivo.com');

Agora vamos chamar a função paginacao

PLAIN TEXT
PHP:
  1. $items_pagina   =5;
  2. $pagina_atual   =addslashes($_REQUEST['p']);
  3. if(!$pagina_atual)
  4.     $pagina_atual = 1;
  5.  
  6. $resultado=paginacao($conteudo, $items_pagina, &$pagina_atual, &$pagina_total, &$pagina_anterior, &$pagina_proxima, &$indice_primeiro, &$indice_ultimo, &$items_total);

Pronto a função vai retornar a array e os dados da paginação

PLAIN TEXT
PHP:
  1. // imprimindo tudo que a função retorna, para você mostrar na tela
  2. echo "<li> Pagina Atual = ".$pagina_atual;
  3. echo "</li><li> Pagina Total = ".$pagina_total;
  4. echo "</li><li> Pagina Anterior = ".$pagina_anterior;
  5. echo "</li><li> Proxima Pagina = ".$pagina_proxima;
  6. echo "</li><li> Primeira Chave = ".$indice_primeiro;
  7. echo "</li><li> Ultima Chave= ".$indice_ultimo;
  8. echo "</li><li> Total de dados = ".$items_total;
  9. echo "<pre>";
  10.  
  11. // montar anteriores e proximas paginas
  12. if($items_total> 1){
  13.     $paginas .="PAGINAS:";
  14.     if($pagina_atual> 5) {
  15.         $inicio_paginacao=$pagina_atual-3;
  16.         $pagina_final=$pagina_atual+4;
  17.         if($pagina_final> $pagina_total)
  18.             $pagina_final=$pagina_total;
  19.         $paginas .=" ... | ";
  20.  
  21.     }else {
  22.         $inicio_paginacao=1;
  23.         $pagina_final=($pagina_total> 13 ? 13 : $pagina_total);
  24.     }
  25.    
  26.     for($i=$inicio_paginacao; $i <= $pagina_final; $i++){
  27.         if($pagina_atual==$i)
  28.             $paginas .="<a href='?p=$i'><font color=red><b>$i</b></font> | ";
  29.         else
  30.             $paginas .="<a href='?p=$i'>$i</a> | ";
  31.     }   
  32.     if($pagina_final <$pagina_total)
  33.         $paginas .=" ... ";
  34.     }
  35.  
  36. // mostrando o resultado agora basta você saber trabalhar eles
  37. echo $paginas;
  38. echo "<pre>";
  39. print_r($resultado);

Ta feito a brincadeira.
Agora é só colocar o layout e saber trabalhar a array

Link para testar: http://opositivo.selfip.com:9080/blog/paginacao.php

Ducca - Agência O Positivo | www.opositivo.com

Artigo de Quarta-feira, 19 de Novembro, 2008 às 13:03, arquivado em PHP. Pode seguir os comentários a esta entrada através do feed RSS 2.0. Pode comentar ou criar um Trackback para aqui, no seu site.

Um Comentário a “Função para Paginação PHP”

  1. green card diz:
    3 de Dezembro, 2008 às 20:44

    Há alguma informação sobre este assunto em outras línguas?

Comentar

  • Categorias

    • C# (1)
    • CAPA (13)
    • Design (2)
    • Fotografia (3)
    • HTML (2)
    • Links positivos (9)
    • PHP (6)
    • Sem categoria (2)
    • Sharepoint (3)
    • SQL (1)
    • VBA (1)
    • Visual basic (1)
  • Posts Recentes

    • Tabela Tipográfica
    • Design de logos 2009
    • Função para Paginação PHP
    • Color Blender
    • Pulseira USB
  • Páginas

    • Acerca

O + criado com WordPress
RSS Artigos e RSS Comentários.