Eenvoudige paginanummering

Door - Ricardo -, 17 jaar geleden, 6.992x bekeken

Eenvoudig script om een nette paginanummering neer te zetten, voor bijvoorbeeld je gastenboekje of forum.

Gesponsorde koppelingen

PHP script bestanden

  1. paginanummering.php

 

Er zijn 4 reacties op 'Eenvoudige paginanummering'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Ronald Van Zon
Ronald Van Zon
17 jaar geleden
 
0 +1 -0 -1
Wat zou ik hiermee kunnen? Lijkt me erg omslachtig dat ik elke keer als ik een pagina erbij krijg me script moet aanpassen.
- Ricardo -
- Ricardo -
17 jaar geleden
 
0 +1 -0 -1
Dit gedeelte is slechts onderdeel van een eventueel script wat iemand aan het schrijven is. Iemand maakt bijvoorbeeld een gastenboek en wil er een pagina systeem in bouwen. Hij zorgt alleen dat zijn gedeelte script uitrekent hoeveel pagina's het zijn, welke pagina geselecteerd is en vult de linkjes in, en z'n paginasysteem is klaar. Dat scheelt weer wat werk...
Ronald Van Zon
Ronald Van Zon
17 jaar geleden
 
0 +1 -0 -1
Zou persoonlijk de herhalende code in een functie zetten. Snel voorbeeldje hieronder. Is maar een ideetje.

Vind het concept wel goed bedacht.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
# Settings:
# Deze stel je normaal (natuurlijk) in met je script zelf, hier staan ze maar even voor het voorbeeldje

$ap = 30; # Aantal pagina's
$sp = 14; # Geselecteerde pagina
# Einde settings
# Je moet nog wel zelf hieronder de linkjes aanpassen


function firstPageSetup($ap)
{

    for($i = 1; $i <= $ap; $i++)
    {

        if($i == $sp)
            echo '<strong>'.$i.'</strong> ';
        else
        {
            echo '<a href='#'>'.$i.'</a> ';
        }
    }
}


//Als het aantal pagina's minder is dan 13 gewoon het hele rijtje laten zien
if ($ap < 13) {
    pageSetup($ap);
}

// Als de geselecteerde pagina een van de eerste 6 pagina's is gewoon de eerste 7 laten zien
elseif($sp < 6)
{

    pageSetup(7);
    echo '... ';
    for($i = ($ap - 2); $i <= $ap; $i++)
    {

        echo '<a href='#'>'.$i.'</a> ';
    }
}

// Als de geselecteerde pagina een van de laatste 6 pagina's is gewoon de laatste 7 laten zien
elseif($sp > ($ap - 5))
{


    echo '... ';
    for($i = ($ap - 5); $i <= $ap; $i++)
    {

        echo '<a href='#'>'.$i.'</a> ';
    }
}

// In alle overige gevallen de eerste 3 en de laatste 3 pagina's laten zien, en de 3 rondom de geselecteerde pagina
else
{
    for($i = 1; $i <= $ap; $i++)
    {

        echo '<a href='#'>'.$i.'</a> ';
    }    
    echo '... ';
    for($i = ($sp - 1); $i <= ($sp + 1); $i++)
    {

        echo '<a href='#'>'.$i.'</a> ';
    }
    echo '... ';
    for($i = ($ap - 2); $i <= $ap; $i++)
    {

        echo '<a href='#'>'.$i.'</a> ';
    }
}

?>
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Joren de Wit
Joren de Wit
17 jaar geleden
 
0 +1 -0 -1
Dit kan efficienter, bijvoorbeeld door het opbouwen van een array met alle elementen van je nummer reeks.

Zoiets bijvoorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
// Determine limit and offset
// $iPage previously determined by for example $_GET variable

$iPageLimit = 30;
$iOffset = ($iPage - 1) * $iPageLimit;

// Compute pages, change $aPageRange as desired
$iTotalPages = ceil($iNumUsers / $iPageLimit);
$aPageRange = array(1, 2, $iPage-3, $iPage-2, $iPage-1, $iPage, $iPage+1, $iPage+2, $iPage+3, $iTotalPages-1, $iTotalPages);

// Eliminate duplicate entries from pagerange, eliminate invalid pages and sort finally
$aPageRange = array_unique($aPageRange);
foreach($aPageRange as $key => $iPage) {
    if($iPage > $iTotalPages || $iPage < 1) {
        unset($aPageRange[$key]);
    }
}

sort($aPageRange);

// Add ... to the pagerange at appropriate places
$prev = 0;
$aPageRangeFinal = array();
foreach($aPageRange as $iPage) {
    if($iPage-1 != $prev) {
        $aPageRangeFinal[] = '...';
    }

    $aPageRangeFinal[] = $iPage;
    $prev = $iPage;
}


// Use foreach loop to read $aPageRangeFinal and echo values
?>

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. paginanummering.php

Labels

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.