lucaswxp 22 Denunciar post Postado Novembro 17, 2009 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