Demonstratie Pagina nummering
(CFG) Range: 3(CFG) Maximum reacties per pagina: 15
(URL) Huidige pagina: 1
(SQL) Totaal reacties: 1000
(BEREKENING) Totaal paginas: 67
(RESULTAAT URLS) Pagina nummers: Vorige 1,2,3...65,66,67 Volgende
(RESULTAAT SQL) SQL: LIMIT 0, 15
<h1>Demonstratie Pagina nummering</h1>
<?php
function page_num_urls($max, $prefix=null, $suffix=null, $current_template=null, $use_pagenum=true, $startWith=1, $range=3) {
$prefix = ($prefix!==null) ? $prefix : '+page_num=';
$suffix = ($suffix!==null) ? $suffix : '';
$current_template = ($current_template!==null) ? $current_template : false;
$pagenum = (isset($_GET['page_num']) && is_numeric($_GET['page_num'])) ? $_GET['page_num'] : 1;
$urls = '';
for($i = $startWith; $i <= $max; $i++) {
if($i > ($max-$range)) {
# Goto Append
} elseif($use_pagenum && $max > $range && $i > $range && ($i == $pagenum - $range || $i == $pagenum + $range) ) {
$urls = preg_replace('/,$/', '', $urls);
$urls .= '...';
continue;
} elseif($use_pagenum && $i > ($pagenum - $range) && $i < ($pagenum+$range)) {
# Goto Append
} elseif(!$use_pagenum && $i==($range+1)) {
$urls = preg_replace('/,$/', '', $urls);
$urls .= '...';
continue;
} elseif($max > $range && $i > $range) {
continue;
}
// Append
if($i!=$pagenum || ($i==$pagenum && !$current_template)) {
$urls .= '<a href="'.$prefix.$i.$suffix.'">'.$i.'</a>,';
} else {
$urls .= sprintf($current_template, $i).',';
}
}
$urls = preg_replace('/,$/', '', $urls);
return $urls;
}
// Alle urls in dit script bevatten &test_reacties en &test_range puur voor de demonstratie. Deze moeten natuurlijk weg als jij het script gebruikt.
// Ipv daarvan wordt $aantal_reacties gevult m.b.v een query, en $range wordt een config variabele.
$max_entries_per_page = 15;
$pagenum = (isset($_GET['page_num']) && is_numeric($_GET['page_num'])) ? $_GET['page_num'] : 1;
$aantal_reacties = (isset($_GET['test_reacties']) && is_numeric($_GET['test_reacties'])) ? $_GET['test_reacties'] : 1000;
$totaal = ceil( (int) $aantal_reacties / (int) $max_entries_per_page);
$range = (isset($_GET['test_range']) && is_numeric($_GET['test_range'])) ? $_GET['test_range'] : 3;
$tussen_urls = page_num_urls($totaal, null, '&test_reacties='.$aantal_reacties.'&test_range='.$range, '<b>%s</b>', true, 1, $range);
$limit_x = (($pagenum -1) * (int) $max_entries_per_page);
$url_vorige = ($pagenum > 1) ? '<a href="?page_num='.($pagenum-1).'&test_reacties='.$aantal_reacties.'&test_range='.$range.'">Vorige</a>' : 'Vorige';
$url_volgende = ($pagenum < $totaal) ? '<a href="?page_num='.($pagenum+1).'&test_reacties='.$aantal_reacties.'&test_range='.$range.'">Volgende</a>' : 'Volgende';
echo '(CFG) <b>Range:</b> '.$range.'<br />';
echo '(CFG) <b>Maximum reacties per pagina:</b> '.$max_entries_per_page.'<br />';
echo '(URL) <b>Huidige pagina:</b> '.$pagenum.'<br />';
echo '(SQL) <b>Totaal reacties:</b> '.$aantal_reacties.'<br />';
echo '(BEREKENING) <b>Totaal paginas:</b> '.$totaal.'<br />';
echo '(RESULTAAT URLS) <b>Pagina nummers:</b> <small>'. $url_vorige.' '.$tussen_urls.' '.$url_volgende .'</small><br />';
echo '(RESULTAAT SQL) <b>SQL:</b> LIMIT '. $limit_x .', '.$max_entries_per_page.'<br />';
echo '<hr />';
highlight_file('voorbeelden/Vorige-Volgende.php');
?>