Paginação Andrey Knupp - Mudar para módulo Sliding
Boa noite, pessoal.
Estou quebrando a cabeça em um código de paginação excelente
que achei aqui no fórum.
Atualmente eu busco os meus dados da tabela no MySQL e existe uma
paginação simples que exibe X registros por página. Eu gostaria
além disso, acrescentar o módulo Sliding que o mesmo disponibilizou
no pacote, porém estou quebrando a cabeça e os dados desaparecem quando
eu tento adaptar.
MEU CÓDIGO QUE BUSCA DO MYSQL E POSSUI UMA PAGINAÇÃO SIMPLES
<?php
//INICIA A CONEXÃO COM O BANCO DE DADOS
require_once '../lib/paginator/paginator.php';
require_once '../db/connect_show_veterinarios.php';
/*
* Recupera a quantidade de registros no banco de dados
*/
$query = mysql_query( 'SELECT COUNT(*) FROM `vet`' ) or die ( mysql_error( ) ) ;
$fetchAssoc = mysql_fetch_assoc ( $query ) ;
$rowCount = array_shift( $fetchAssoc );
$Paginator = Paginator::getInstance();
/*
* Limite de resultados por página
*/
$Paginator->setLimitOffset( 30 );
/*
* Quantidade de resultados existentes no banco de dados
* Você pode definir manualmente esse parâmetro
*/
$Paginator->setResultsAmount( $rowCount );
/*
* Setamos a página corrente, utilizando o parâmetro recebido
* pelo GET, índice 'p'
*/
$Paginator->setCurrentPage( isset( $_GET[ 'p' ] ) ? ( $_GET[ 'p' ] ) : 1 );
/*
* Faz a paginação, e atribui a entidade retornada
* a variável $Paginator
*/
$Paginator = $Paginator->assemble();
/*
* Recupera um iterator para ser iterado
*/
forEach( $Paginator->getIterator() as $Page )
echo '<a class="pageNumber" href="?p=', $Page ,'">', $Page ,'</a> ';
$SQL = mysql_query
(
sprintf( 'SELECT * FROM `vet` ORDER BY id_vet DESC LIMIT %d,%d' ,
$Paginator->getOffset() , # Recupera o deslocamento para a página atual
$Paginator->getLimit() # Recupera a quantidade de resultados por página
)
);
/*
* Exibe os dados
*/
//$Photos = glob ( '../insert_photos/upload/' . "26" . '/{*.jpg,*.png,*.gif,*.bmp}' , GLOB_BRACE | GLOB_NOSORT ) ;
// usort( $Photos , function ( $x , $y ) {
// return ( filemtime( $y ) - filemtime( $x ) ) ;
// } ) ;
//echo "$Photos[2]";
echo "<br /><br /><br />";
echo '<table class=gridtable>',
'<tr>',
'<th>Razão Social</th><th>Veterinário</th><th>E-mail</th>',
'</tr>';
while( $Data = mysql_fetch_assoc( $SQL ) ) {
echo '<tr>',
'<td>', $Data['razao_social'], '</td>',
'<td>', $Data['nome'], '</td>',
'<td>', $Data['email'], '</td>',
'</tr>';
}
echo '</table>';
echo "<br /><br /><br />";
/*Paginação na parte inferior dos dados*/
forEach( $Paginator->getIterator() as $Page )
echo '<a class="pageNumber" href="?p=', $Page ,'">', $Page ,'</a> ';
?>
CÓDIGO DO SLIDING PARA ADAPTAR AO CÓDIGO DE CIMA
Esse código definirá quantas páginas ficarão visíveis.
Exemplo: Se tenho 16 páginas e defino que somente 8 aparecerão,
as outras ficarão ocultas e vão aparecendo conforme o usuário clica na página seguinte.
<?php
require_once '../../Paginator.php';
require_once '../../Modules/PaginatorSliding.php';
$Paginator = Paginator::getInstance();
$Paginator->setCurrentPage( $_GET [ 'p' ] );
$Paginator->setLimitOffset( 5 );
$Paginator->setPageRange( 8 );
$Paginator->setResultsAmount( 100 );
$Sliding = new PaginatorSliding( $Paginator );
$Pages = $Sliding->assemble();
echo '<pre>';
print_r( $Pages ) ;
echo '</pre>';
echo '<h1>Sliding Module</h1>';
forEach ( $Pages as $Page ) {
echo '<a href="?p=', $Page ,'">', $Page ,'</a> ' ;
}
echo '<br />' ;
echo 'Limite de Resultados: ' , $Pages->getLimit() , '<br />' ;
echo 'Página Atual: ' , $Pages->getCurrentPage() , '<br />' ;
echo 'Primeira Página: ' , $Pages->getFirstPage() , '<br />' ;
echo 'Última Página: ' , $Pages->getLastPage() , '<br />' ;
echo 'Próxima Página: ' , $Pages->getNextPage() , '<br />' ;
echo 'Página Anterior: ' , $Pages->getPreviousPage() , '<br />' ;
echo 'Total de Páginas: ' , $Pages->getPageCount() ; // ... atualmente exibindo ( n° páginas )
/*
* A mesma coisa vale pro Scrolling .. é a mesma forma de aplicar pra
* qualquer módulo criado, basta entender o funcionamento dos mesmos
* ...
*/Discussão (4)
Carregando comentários...