prova così... l'ho scritto velocemente e con pochi test quindi controllalo bene...
Codice PHP:
<?php
/* impostiamo il db*/
$db_txt = 'file.txt';
/*se il file non esiste fermi tutti!!!*/
if(!file_exists($db_txt)){
exit('il database non può essere aperto perchè non esiste');
}
/*costruiamo un array con i righi del db e contiamo i righi presenti*/
$array_righi = file($db_txt);
$count_righi = count($array_righi);
/*impostiamo quanti righi per ogni pagina*/
$per_page = 5;
/*calcoliamo il numero di pagine necessarie per l'impagginazione */
$numero_pagine = ceil($count_righi / $per_page);
/*intercettiamo la pagina corrente tramite GET altrimenti è pagina 1*/
$page_corrente = ( isset($_GET['pos']) AND intval($_GET['pos']) ) ? min($numero_pagine, intval($_GET['pos'])) : 1;
/*estraiamo il sotto-array che vogliamo visualizzare*/
$righi_da_visualizzare = array_slice($array_righi, ($page_corrente-1)*$per_page, $per_page);
/*... e mostriamo questi righi...*/
$output_content = '';
foreach($righi_da_visualizzare as $key => $rigo){
/*ogni rigo contiene due parti separati da |
e li isoliamo così da potermi stampare separatamente*/
list($parte_a, $parte_b) = explode('|', $rigo);
$output_content .= $parte_a . ' ' . $parte_b . '
';
}
/*semplice pagination due pagine successive e due pagine precedenti*/
$inizio_pag = max(1, ($page_corrente-2));
$fine_pag = min($numero_pagine, ($page_corrente+2));
$output_pagination = '<div id="pagination">';
for($i=$inizio_pag; $i<=$fine_pag; $i++ ){
if($i!=$page_corrente){
$output_pagination .= '[url="' .$_SERVER['PHP_SELF']. '?pos=' . $i . '"]' .$i . '[/url] ';
}
else{
$output_pagination .= $i .' ';
}
}
$output_pagination .= '</div>';
/*mandiamo l'output prodotto*/
echo $output_content;
echo $output_pagination;
?>