paginanummering-v30
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
// Deze functie heb je nodig om de bladwijzer-functie te kunnen gebruiken.
// Deze functie staat ook http://www.phphulp.nl/php/scripts/2/1079/
function url($replace = array(), $url = 'x') {
// De array $geturl zetten, deze zal later alle GET waarden bevatten
$geturl = array();
// De URL geschikt maken, zodat deze gebruikt kan worden (als er geen URL is ingevuld, dan word de huidige URL gebruikt)
$url = $url == 'x' ? $_SERVER['PHP_SELF'] : $url;
$explurl = explode('?', $url);
$url = $explurl[0];
$url = basename($url);
// Als de opgegeven URL hetzelfde is als de URL van de pagina waar je nu op bent, dan zullen alle GET waarden
// ... ook weer meedoen. Als je dit ook wilt bij een URL die niet gelijk is, gebruik dan de functie: url($_GET);
if ($url == basename($_SERVER['PHP_SELF'])) {
global $_GET;
$geturl = $_GET;
}
// Hier worden de GET variabelen uit de opgegeven link gehaalt (stel je vult pagina.php?var=8 in,
// ... dan komt die var=8 ook weer voor in de nieuwe URL)
if (!empty($explurl[1])) {
$explurl2 = explode('&', $explurl[1]);
foreach ($explurl2 as $value) {
$explvalue = explode('=', $value);
$geturl[$explvalue[0]] = $explvalue[1];
}
}
// Hier worden alle GET variabelen die ingevuld werden als GET variabelen omgezet.
foreach ($replace as $key => $value) {
$geturl[$key] = $value;
}
// Hier dan, eindelijk de final touch: Alle GET variabelen worden aan de URL toegevoegd.
$newurl = $url;
foreach ($geturl as $key => $value) {
$newurl .= !empty($key) && !empty($value) ? htmlentities(($newurl == $url ? '?' :'&').$key.'='.urlencode($value)) : '';
}
return $newurl;
}
?>
// Deze functie heb je nodig om de bladwijzer-functie te kunnen gebruiken.
// Deze functie staat ook http://www.phphulp.nl/php/scripts/2/1079/
function url($replace = array(), $url = 'x') {
// De array $geturl zetten, deze zal later alle GET waarden bevatten
$geturl = array();
// De URL geschikt maken, zodat deze gebruikt kan worden (als er geen URL is ingevuld, dan word de huidige URL gebruikt)
$url = $url == 'x' ? $_SERVER['PHP_SELF'] : $url;
$explurl = explode('?', $url);
$url = $explurl[0];
$url = basename($url);
// Als de opgegeven URL hetzelfde is als de URL van de pagina waar je nu op bent, dan zullen alle GET waarden
// ... ook weer meedoen. Als je dit ook wilt bij een URL die niet gelijk is, gebruik dan de functie: url($_GET);
if ($url == basename($_SERVER['PHP_SELF'])) {
global $_GET;
$geturl = $_GET;
}
// Hier worden de GET variabelen uit de opgegeven link gehaalt (stel je vult pagina.php?var=8 in,
// ... dan komt die var=8 ook weer voor in de nieuwe URL)
if (!empty($explurl[1])) {
$explurl2 = explode('&', $explurl[1]);
foreach ($explurl2 as $value) {
$explvalue = explode('=', $value);
$geturl[$explvalue[0]] = $explvalue[1];
}
}
// Hier worden alle GET variabelen die ingevuld werden als GET variabelen omgezet.
foreach ($replace as $key => $value) {
$geturl[$key] = $value;
}
// Hier dan, eindelijk de final touch: Alle GET variabelen worden aan de URL toegevoegd.
$newurl = $url;
foreach ($geturl as $key => $value) {
$newurl .= !empty($key) && !empty($value) ? htmlentities(($newurl == $url ? '?' :'&').$key.'='.urlencode($value)) : '';
}
return $newurl;
}
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?php
function bladwijzer($input, $aantal, $scheiding = '-', $pagenaam = 'page', $volgorde = 'ASC', $vorigevolgende = 'regular') {
// De variabele 'totaal' zetten
if (is_array($input)) {
$totaal = count($input);
}
else {
$inputgedaan = mysql_query($input);
$totaal = mysql_num_rows($inputgedaan);
}
// Wat belangrijke variabelen: Aantal pagina's, huidige pagina en het beginpunt van de gewenste resultatien
$aantpages = ceil($totaal/$aantal);
$nopage = $volgorde == 'ASC' ? 1 : $aantpages;
$page = isset($_GET[$pagenaam]) ? $_GET[$pagenaam] : $nopage;
$begin = ($page-1) * $aantal;
$begin = $begin < 0 ? 0 : $begin;
// De results (en een scheiding tussen sql en array)
if (is_array($input)) {
foreach ($input as $key => $value) {
if ($i >= $begin && $i < ($begin+$aantal)) {
$return['array'][$key] = $value;
}
$i++;
}
}
else {
$return['sql'] = mysql_query($input." LIMIT ".$begin.",".$aantal);
if (mysql_error()) {
error_function('MySQL', mysql_error().'<br />SQL: '.$input." LIMIT ".$begin.",".$eind, 'function_bladwijzer.php', 28);
}
}
// De tekst bepalen voor 'Volgende' en 'Vorige'. Als je weinig ruimte hebt, zijn '«' en '»' wel handig.
$vorigetext = 'Vorige';
$volgendetext = 'Volgende';
$puntjes = '...';
if ($vorigevolgende == 'klein') {
$vorigetext = '»';
$volgendetext = '«';
$puntjes = '…';
}
else {
$vorigetext = 'Vorige';
$volgendetext = 'Volgende';
$puntjes = '...';
}
// Vorige
$vorige = $page > 1 ? '<a href="'.url(array($pagenaam => ($page-1))).'">'.$vorigetext.'</a>' : '';
// Volgende
$volgende = $aantpages >= 1 && ($page+1) <= $aantpages ? '<a href="'.url(array($pagenaam => ($page+1))).'">'.$volgendetext.'</a>' : '';
// Variabelen voor het inspringen (voor de $scheiding)
$i_begin = 0;
$i_eind = $aantpages;
if (is_numeric($scheiding)) {
$i_begin = $page-$scheiding;
$i_eind = $page+$scheiding;
if ($i_begin < 1) {
$i_eind -= $i_begin-1;
}
if ($i_eind > $aantpages) {
$i_begin -= $i_eind-$aantpages;
}
$vorigepuntjes = $page-$scheiding > 1 ? $puntjes : '';
$volgendepuntjes = $page+$scheiding < $totaal/$aantal ? $puntjes : '';
}
// De nummering
for ($i = $i_begin; $i <= $i_eind; $i++) {
if ($i >= 1 && $i <= $aantpages) {
$bladwijzer[] = $page == $i ? '<b>'.$i.'</b>' : '<a href="'.url(array($pagenaam => $i)).'">'.$i.'</a>';
}
}
if (isset($bladwijzer)) {
$return['nummering'] = $vorige.' '.$vorigepuntjes.implode(", ", $bladwijzer).$volgendepuntjes.' '.$volgende;
}
if ($volgorde != 'ASC') {
if (isset($bladwijzer)) {
$bladwijzer = array_reverse($bladwijzer);
$return['nummering'] = $volgende.' '.$volgendepuntjes.implode(", ", $bladwijzer).$vorigepuntjes.' '.$vorige;
}
}
$return['e - l'] = '<a href="'.url(array($pagenaam => $aantpages)).'">Last</a> - <a href="'.url(array($pagenaam => 1)).'">First</a>';
$return['totaal'] = $totaal;
return $return;
}
?>
function bladwijzer($input, $aantal, $scheiding = '-', $pagenaam = 'page', $volgorde = 'ASC', $vorigevolgende = 'regular') {
// De variabele 'totaal' zetten
if (is_array($input)) {
$totaal = count($input);
}
else {
$inputgedaan = mysql_query($input);
$totaal = mysql_num_rows($inputgedaan);
}
// Wat belangrijke variabelen: Aantal pagina's, huidige pagina en het beginpunt van de gewenste resultatien
$aantpages = ceil($totaal/$aantal);
$nopage = $volgorde == 'ASC' ? 1 : $aantpages;
$page = isset($_GET[$pagenaam]) ? $_GET[$pagenaam] : $nopage;
$begin = ($page-1) * $aantal;
$begin = $begin < 0 ? 0 : $begin;
// De results (en een scheiding tussen sql en array)
if (is_array($input)) {
foreach ($input as $key => $value) {
if ($i >= $begin && $i < ($begin+$aantal)) {
$return['array'][$key] = $value;
}
$i++;
}
}
else {
$return['sql'] = mysql_query($input." LIMIT ".$begin.",".$aantal);
if (mysql_error()) {
error_function('MySQL', mysql_error().'<br />SQL: '.$input." LIMIT ".$begin.",".$eind, 'function_bladwijzer.php', 28);
}
}
// De tekst bepalen voor 'Volgende' en 'Vorige'. Als je weinig ruimte hebt, zijn '«' en '»' wel handig.
$vorigetext = 'Vorige';
$volgendetext = 'Volgende';
$puntjes = '...';
if ($vorigevolgende == 'klein') {
$vorigetext = '»';
$volgendetext = '«';
$puntjes = '…';
}
else {
$vorigetext = 'Vorige';
$volgendetext = 'Volgende';
$puntjes = '...';
}
// Vorige
$vorige = $page > 1 ? '<a href="'.url(array($pagenaam => ($page-1))).'">'.$vorigetext.'</a>' : '';
// Volgende
$volgende = $aantpages >= 1 && ($page+1) <= $aantpages ? '<a href="'.url(array($pagenaam => ($page+1))).'">'.$volgendetext.'</a>' : '';
// Variabelen voor het inspringen (voor de $scheiding)
$i_begin = 0;
$i_eind = $aantpages;
if (is_numeric($scheiding)) {
$i_begin = $page-$scheiding;
$i_eind = $page+$scheiding;
if ($i_begin < 1) {
$i_eind -= $i_begin-1;
}
if ($i_eind > $aantpages) {
$i_begin -= $i_eind-$aantpages;
}
$vorigepuntjes = $page-$scheiding > 1 ? $puntjes : '';
$volgendepuntjes = $page+$scheiding < $totaal/$aantal ? $puntjes : '';
}
// De nummering
for ($i = $i_begin; $i <= $i_eind; $i++) {
if ($i >= 1 && $i <= $aantpages) {
$bladwijzer[] = $page == $i ? '<b>'.$i.'</b>' : '<a href="'.url(array($pagenaam => $i)).'">'.$i.'</a>';
}
}
if (isset($bladwijzer)) {
$return['nummering'] = $vorige.' '.$vorigepuntjes.implode(", ", $bladwijzer).$volgendepuntjes.' '.$volgende;
}
if ($volgorde != 'ASC') {
if (isset($bladwijzer)) {
$bladwijzer = array_reverse($bladwijzer);
$return['nummering'] = $volgende.' '.$volgendepuntjes.implode(", ", $bladwijzer).$vorigepuntjes.' '.$vorige;
}
}
$return['e - l'] = '<a href="'.url(array($pagenaam => $aantpages)).'">Last</a> - <a href="'.url(array($pagenaam => 1)).'">First</a>';
$return['totaal'] = $totaal;
return $return;
}
?>