Pagina nummers
Ik heb tijdje geleden toen ik net begon met php op internet een pagina nummer script gevonden. Dit script was de enigste die ik toen een beetje kon volgen en in me website kon plaatsen. Het enigste probleem is dat er een komma tussen de url's blijft staan. Het is een fout in het script en de bedoeling dat deze weggefilterd worden.
Hieronder het script, ik begrijp dat het misschien een hoop werk is maar ik hoop tocht dat er iemand naar kan kijken.
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
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
<?php
$max_entries_per_page = 3;
// Het pagina nummer opvragen uit de url. Als deze niet vermeld is in de url, of dat deze niet nummeriek is, dan gebruiken we de laagste waarde. Dus het cijfer 1.
$pagenum = (isset($_GET['page_num']) && is_numeric($_GET['page_num'])) ? $_GET['page_num'] : 1;
// We gaan nu het aantal reacties opvragen uit de database
$query = mysql_query("SELECT * FROM gastenboek") or die(mysql_error());
$aantal_reacties = mysql_num_rows($query);
// Nu kunnen we berekenen hoeveel pagina's er nodig zijn voor alle reacties.
$totaal = ceil( $aantal_reacties / $max_entries_per_page);
// Ook kunnen we erachter komen vanaf welke row we gaan selecteren uit de database.
$limit = (($pagenum -1) * (int) $max_entries_per_page);
// En tot slot kunnen we dus de query uitvoeren
$query = mysql_query("SELECT *,datum + INTERVAL 2 HOUR AS datum FROM gastenboek ORDER BY datum DESC LIMIT ". $limit .", ". $max_entries_per_page);
// De url om naar de vorige pagina te gaan. Als het pagina nummer niet groter is dan 1, dan hoeven we ook geen url te maken.
$url_vorige = ($pagenum > 1) ? '<a href="index.php?pagina=gastenboek_wensen&page_num='.($pagenum-1).'">« Vorige</a>' : '';
// De url om naar de volgende pagina te gaan. Als het totaal aantal berichten groter is dan de huige paginanummer, dan maken we een url. Anders niet.
$url_volgende = ($pagenum < $totaal) ? '<a href="index.php?pagina=gastenboek_wensen&page_num='.($pagenum+1).'">Volgende »</a>' : '';
//tussen de url's
$range = 10;
//waar de nummering berint
$startWith = 1;
$use_pagenum = true;
//Deze variabele is de template voor het paginanummer waar we ons bevinden, tenzij $use_pagenum of false staat dan wordt dit een url
$current_template = '<b>%s</b>';
//het begin van de url, hierna komt het pagina nummer
$prefix= 'index.php?pagina=gastenboek_wensen&page_num=';
//einde van de url net noodzakelijk
$suffix = '';
// De for-lus. Deze is vrij lastig. We lussen vanaf $startWith, tot en met $totaal. De $i houdt bij hoever we zijn.
for($i = $startWith; $i <= $totaal; $i++) {
if($i > ($totaal-$range)) {
# Als de teller ($i) groter is dan het totaal - de range, dan mogen we de dit nummer omzetten tot url
# Deze if zorgt ervoor dat er geen verdere stappen meer worden ondernomen in deze if-else-structuur
} elseif($use_pagenum && $totaal > $range && $i > $range && ($i == $pagenum - $range || $i == $pagenum + $range) ) {
# Als we gebruik maken van het pagina nummer, dan willen we op deze plek die punten plaatsen om de boel te scheiden
# De preg_replace verwijderd de laatste komma van de string, omdat we deze niet nodig hebben.
$urls = preg_replace('/,$/', '', $urls);
$urls .= '...';
# Ook zorgen we dat het huidge nummer niet als url wordt opgenomen
continue;
} elseif($use_pagenum && $i > ($pagenum - $range) && $i < ($pagenum+$range)) {
# Eigenlijk zijn dit alle urls in het midden, als we luisteren naar het pagina nummer.
# 1,2,3...deze dus...65,66,67
} elseif(!$use_pagenum && $i==($range+1)) {
# Als we niet luisteren naar de pagina nummer, willen we bij veel resultaten 3 punten in het midden
$urls = preg_replace('/,$/', '', $urls);
$urls .= '...';
continue;
} elseif($totaal > $range && $i > $range) {
# Als het totaal en de teller hoger zijn de de range, willen we voor de rest alles negeren
continue;
}
if($i!=$pagenum || ($i==$pagenum && !$current_template)) {
// De teller is niet gelijk aan de huidige paginanummer. OF WEL, maar dan is $current_template op de waarde false.
// Dus we schrijven de url voor pagina nummer $i.
$urls .= '<a href="'.$prefix.$i.$suffix.'">'.$i.'</a>,';
} else {
// Oke, deze pagina wordt op dit moment opgevraagt, en $current_template is niet false.
// Vervang %s door $i in de 'template'.
$urls .= sprintf($current_template, $i).',';
}
}
// En weer even de laatste overbodige komma weghalen
$urls = preg_replace('/,$/', '', $urls);
//en dan de code om de pagina nummers weer te geven
echo $url_vorige .' '. $urls .' '. $url_volgende;
[/code]
$max_entries_per_page = 3;
// Het pagina nummer opvragen uit de url. Als deze niet vermeld is in de url, of dat deze niet nummeriek is, dan gebruiken we de laagste waarde. Dus het cijfer 1.
$pagenum = (isset($_GET['page_num']) && is_numeric($_GET['page_num'])) ? $_GET['page_num'] : 1;
// We gaan nu het aantal reacties opvragen uit de database
$query = mysql_query("SELECT * FROM gastenboek") or die(mysql_error());
$aantal_reacties = mysql_num_rows($query);
// Nu kunnen we berekenen hoeveel pagina's er nodig zijn voor alle reacties.
$totaal = ceil( $aantal_reacties / $max_entries_per_page);
// Ook kunnen we erachter komen vanaf welke row we gaan selecteren uit de database.
$limit = (($pagenum -1) * (int) $max_entries_per_page);
// En tot slot kunnen we dus de query uitvoeren
$query = mysql_query("SELECT *,datum + INTERVAL 2 HOUR AS datum FROM gastenboek ORDER BY datum DESC LIMIT ". $limit .", ". $max_entries_per_page);
// De url om naar de vorige pagina te gaan. Als het pagina nummer niet groter is dan 1, dan hoeven we ook geen url te maken.
$url_vorige = ($pagenum > 1) ? '<a href="index.php?pagina=gastenboek_wensen&page_num='.($pagenum-1).'">« Vorige</a>' : '';
// De url om naar de volgende pagina te gaan. Als het totaal aantal berichten groter is dan de huige paginanummer, dan maken we een url. Anders niet.
$url_volgende = ($pagenum < $totaal) ? '<a href="index.php?pagina=gastenboek_wensen&page_num='.($pagenum+1).'">Volgende »</a>' : '';
//tussen de url's
$range = 10;
//waar de nummering berint
$startWith = 1;
$use_pagenum = true;
//Deze variabele is de template voor het paginanummer waar we ons bevinden, tenzij $use_pagenum of false staat dan wordt dit een url
$current_template = '<b>%s</b>';
//het begin van de url, hierna komt het pagina nummer
$prefix= 'index.php?pagina=gastenboek_wensen&page_num=';
//einde van de url net noodzakelijk
$suffix = '';
// De for-lus. Deze is vrij lastig. We lussen vanaf $startWith, tot en met $totaal. De $i houdt bij hoever we zijn.
for($i = $startWith; $i <= $totaal; $i++) {
if($i > ($totaal-$range)) {
# Als de teller ($i) groter is dan het totaal - de range, dan mogen we de dit nummer omzetten tot url
# Deze if zorgt ervoor dat er geen verdere stappen meer worden ondernomen in deze if-else-structuur
} elseif($use_pagenum && $totaal > $range && $i > $range && ($i == $pagenum - $range || $i == $pagenum + $range) ) {
# Als we gebruik maken van het pagina nummer, dan willen we op deze plek die punten plaatsen om de boel te scheiden
# De preg_replace verwijderd de laatste komma van de string, omdat we deze niet nodig hebben.
$urls = preg_replace('/,$/', '', $urls);
$urls .= '...';
# Ook zorgen we dat het huidge nummer niet als url wordt opgenomen
continue;
} elseif($use_pagenum && $i > ($pagenum - $range) && $i < ($pagenum+$range)) {
# Eigenlijk zijn dit alle urls in het midden, als we luisteren naar het pagina nummer.
# 1,2,3...deze dus...65,66,67
} elseif(!$use_pagenum && $i==($range+1)) {
# Als we niet luisteren naar de pagina nummer, willen we bij veel resultaten 3 punten in het midden
$urls = preg_replace('/,$/', '', $urls);
$urls .= '...';
continue;
} elseif($totaal > $range && $i > $range) {
# Als het totaal en de teller hoger zijn de de range, willen we voor de rest alles negeren
continue;
}
if($i!=$pagenum || ($i==$pagenum && !$current_template)) {
// De teller is niet gelijk aan de huidige paginanummer. OF WEL, maar dan is $current_template op de waarde false.
// Dus we schrijven de url voor pagina nummer $i.
$urls .= '<a href="'.$prefix.$i.$suffix.'">'.$i.'</a>,';
} else {
// Oke, deze pagina wordt op dit moment opgevraagt, en $current_template is niet false.
// Vervang %s door $i in de 'template'.
$urls .= sprintf($current_template, $i).',';
}
}
// En weer even de laatste overbodige komma weghalen
$urls = preg_replace('/,$/', '', $urls);
//en dan de code om de pagina nummers weer te geven
echo $url_vorige .' '. $urls .' '. $url_volgende;
[/code]
ik ben zelf nog maar beginner
maar volgens mij moet je het sterretje gebruiken voor en na de slash:
Jij hebt:
$urls = preg_replace('/,$/', '', $urls);
Probeer eens:
$urls = preg_replace(*/$/*, '', $urls);
Bertus