Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

lucaswxp

[Resolvido] [SCRIPT] Classe para paginação

Recommended Posts

Olá pessoal. Postando aqui um script de paginação para vocês.

Bom, fiz este script para ficar parecido com o PaginatorHelper do cakephp. Apesar de ter um pouco de POG no meio do sistema (pretendo refazer em futuras possíveis versões) parece estar funcionando bem :) (apesar de algumas limitações).

 

[DOWNLOAD]: http://sharex.xpg.com.br/files/5105731244/paginator.rar.html

 

No arquivo ja vem um exemplo de uso (index.php).

A classe Paginator utiliza abstração de base de dados, portanto não se preocupe com qual DB você irá utilizar.

 

E por este motivo (utilizar abstração) é necessario configurar a conexão com a base de dados. E algumas outras coisinhas extras.

Abra paginator/config.php.

Você verá três variavel, comece configurando a $config, com colocando seus dados do banco de dados, veja um exemplo:

$config = array(
            'driver' => 'mysqli',
            'host' => 'localhost',
            'user' => 'lucas1234',
            'password' => 'rte68f',
            'database' => 'site_db',
            'persistent' => false, // (opcional, padrão=false) Conexão será persistente?
        );

Depois configure $pagConf, neste vetor existem varios indices, porém a maioria é opcional (o codigo está bem comentado). Veja um exemplo de configuração mais simples:

$pagConf = array(
            'tables' => 'noticias',
        );
DUMP: SELECT * FROM noticias (...)

 

Este é o unico indice obrigatorio, porém vamos deixar um pouco mais personalizado:

$pagConf = array(
            'limit' => 15, //Quantos registro paginará por página?
            'tables' => array('noticias' , 'eventos'), 
            'fields' => array('eventos.*','noticias.id'), // Quais campos retornar
            'where' => 'noticias.ativo=true', // Fragmento SQL
        );
DUMP: SELECT eventos.*,noticias.id FROM noticias,eventos

 

Como você pode ver, praticamente não tocamos em codigo SQL (a não ser em Where). Ok, Ok, mas como eu faço para pegar os dados?

Basta incluir onde você quer e todos os dados estarão disponiveis em $dados. Veja um exemplo:

<?php
        include 'paginator/Paginator.php';

        echo ("<a href=\"$paginator->first()\"><< Primeira</a>");

        echo("<a href=\"$paginator->prev()\">< Anterior</a>");


        echo $paginator->numbers(3);


        echo ("<a href=\"$paginator->next()\">> Próxima</a>");

        echo ("<a href=\"$paginator->last()\">Última >></a>" , );

        /** TODOS OS DADOS FICAM POR PADRÃO DISPONIVEIS EM DADOS, PARA MUDAR ISSO ALTERA $varData EM CONFIG.PHP **/
        foreach($dados as $dado){
            // $dado contém o valor currente agora
            echo 'ID: ' . $dado['id'];
        }
        ?>

Nenhuma destas variavel são obrigatorias, mas você pode usa-las para efetuar a páginação. Ok, e agora? Agora pronto! O resto acontece sozinho :). Se o usuario clicar em Proxima, a script tratará de resgatar dos proximos dados.

 

Caso você queira utilizar urls amigaveis, coloque "fu" => true la em config.php (tem exemplo ja).

Assim ao invés dele gerar ?pagina=5, gerará /pagina:5/. Você também pode trocar o "pagina" (o $_GET['pagina']), você quer "page" ou algo do tipo? Ok, só trocar o indice para "var" => "page" em config.php (tem exemplos ja).

 

Ainda tem varios outros indices que você pode modificar, todos eles estão listados no arquivo config.php (o que tem para download).

 

Bom, é isso, fiz este guiazinho rapidao porque estou com pressa xD. Bom até

 

ATENÇÃO: Se não estiver retornando os dados (vindo em branco) provavelmente está dando ambiguidade nos campos da tabelas (você pode estar chamando 2 campos com o mesmo nome). Para mudar isso você deve trocar para "fetch" => "row" em config.php, lembre que assim você acessará a tabela pelo numero, e não pelo nome, exemplo: $dados[0] e não $dados['id'].

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.