Automatische Paginanummering

Door Steven Pollux, 22 jaar geleden, 6.006x bekeken

Dit script kan automatisch rows uit een database in verschillende pagina's zetten. Denk bijvoorbeeld aan een ledenlijst, een gastenboek of een fotoalbum.

Het geeft nu heel simpel wat informatie weer over het aantal rows, hoeveel rows per pagina en daarna hoeveel pagina's hij dan aanmaakt. Daarna 2varianten van paginaverdeling en als laatste een voorbeeld om alles echo'en. Ik heb nu wat gastenboek-entrys gebruikt maar je kan natuurlijk honderden toepassingen bedenken. In die laatste while kan je alles laten doen met wat hij uit de database haalt. Verder kan je het ook een beetje verbouwen zodat hij het niet ui een database haalt, maar bijvoorbeeld bestanden telt in een map of uit een txt de informatie haalt.

Je kan zelf met een dropdown-menutje instellen hoeveel rows per pagina je wil zien, dit vind je terug in de array in de code. Deze waardes kan je natuurlijk veranderen/aanvullen.

Succes ermee!

--edit op 14/08/06 om 12:18am--
Een paar kleine schoonheidsfoutjes eruit gehaald, update met functies volgt nog een keer!

--edit op 17/08/06 om 5:18pm--
Hele nieuwe versie geschreven, met functies en een betere opbouw/layout. Ook heb ik mijn MySQL table toegevoegd, wel zo handig om wat linken te kunnen leggen!

Voorbeeld: http://img67.imageshack.us/img67/9843/previewzi1.jpg

Gesponsorde koppelingen

PHP script bestanden

  1. automatische-paginanummering

 

Er zijn 37 reacties op 'Automatische paginanummering'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Vdleije .
vdleije .
22 jaar geleden
 
0 +1 -0 -1
GAAAAAAF! Had ik net nodig!
Hipska BE
Hipska BE
22 jaar geleden
 
0 +1 -0 -1
gooi het nog in een functie en we zijn allen tevreden ;-)

trouwens er stond hier al ergens een hele goeie
Steven Pollux
Steven Pollux
22 jaar geleden
 
0 +1 -0 -1
Hipska, klopt dat is mijn volgende stap. Ik heb het juist zo open gelaten nu zodat je het makkelijk kan customizen en verbouwen. Ik ga sommige dingen nog wel in functies verwerken inderdaad, een update volgt nog!

Edit: Ik weet niet of phphulp daar zelf ruimte voor heeft, maar ik wil best een testversie ergens online gooien hoor! Mijn eigen server is te klein voor continue bezoek vanaf zo'n site, dat trekt hij niet.. Iemand?
K i p
K i p
22 jaar geleden
 
0 +1 -0 -1
www.sourceforge.net kun je dit soort dingen opzetten toch?
PHP Newbie
PHP Newbie
22 jaar geleden
 
0 +1 -0 -1
zou je even voor je code willen zetten en na je code?
Ponzi
Ponzi
22 jaar geleden
 
0 +1 -0 -1
Goed gemaakt, maar misschien toch een kleine tip :) : Zorg ervoor dat je altijd dezelfde 'structuur' voor je scripts gebruikt, en ook de opmaak wat verzorgen ;) ! Tabs enzo respecteren, dat komt het debuggen/aanpassen echt tengoede !
- -
- -
22 jaar geleden
 
0 +1 -0 -1
je zou wel even accolades bij je ifs mogen gebruiken, dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
if(isset($_GET['each'])){
    $each = $_GET['each'];
}

else{
    else $each = 10;
}

?>

i.p.v.:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
    if(isset($_GET['each'])) $each = $_GET['each'];
    else $each = "10";
?>

. Nog officieler kan zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
if(isset($_GET['each']))
{

    $each = $_GET['each'];
}

else
{
    else $each = 10;
}

?>


Verder wel mooi script

Oh ja, je wewrkt met getallen, maar jij gebruikt ze alsof ze tekst zjn. Bij getallen mag je de aanhalingstekens weglaten (had ik ookal in het voorbeeld gedaan.)
Steven Pollux
Steven Pollux
22 jaar geleden
 
0 +1 -0 -1
Jonathan, dank voor de tip, je hebt opzich wel een punt maar het is niet nodig. Als je met een if statement maar 1 actie hebt, zijn brackets niet nodig ( de { en } ). Voor de officieliteit zal ik ze er wel inzetten inderdaad, maar ik gebruik ze nooit voor elkele acties. Ik probeer juist mijn code een beetje kleiner te schrijven, scheelt een hele hoop regels en zo hou ik juist mijn overzicht over mijn code! :)

zelfde als het volgende:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if($steven)echo $steven;
?>

of
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
if(isset($steven))
{

echo $steven;
}

?>


Het scheelt een hele hoop rompslomp en doet toch het zelfde.

@Ponzi: Klopt, het moet nog verder uitgewerkt worden, dit heb ik in een nachtje in elkaar gesleuteld maar ik ga het nog verder uitwerken.
Lissy Pixel
Lissy Pixel
22 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
//get the rows from the database
$first_result = $pag * $each - $each;
$query = mysql_query("select * from test limit ".$first_result.", ".$each);
while($r=mysql_fetch_array($query))
{
    
   $id=$r["id"];
   $name=$r["name"];
   $text=$r["text"];
   $date=$r["date"];
   $time=$r["time"];
?>


Wellicht handig om ook je tabel "test" sql code hier neer te zetten zodat een ieder die dit wil leren een goed werkend voorbeeld heeft.
Anders zou bovenstaande code wel is niet kunnen werken wanneer je dit niet in je eigen tabel hebt staan.
Mebus  Hackintosh
Mebus Hackintosh
22 jaar geleden
 
0 +1 -0 -1
is ie eigenlijk kwa beveiliging ook wel goed?

Want wat ook wel handig is omdat je toch met getallen werkt

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

is_numeric()

?>


werken?

Mischien als nodig is ook met:

mysql_real_escape_string()

na GR.mebus!
The Beeding Clown
The Beeding Clown
22 jaar geleden
 
0 +1 -0 -1
dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
    //count the number of rows
    $query = mysql_query("select * from test");
    $counter = mysql_num_rows($query);
?>


kan je beter zo doen, is sneller

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
    //count the number of rows
    $query = mysql_query("SELECT COUNT(*) AS num FROM test");
    $counter = mysql_result($query, 0, "num");
?>
Arjan Schuurman
Arjan Schuurman
22 jaar geleden
 
0 +1 -0 -1
@Hipska: 2 zijn toch beter dan 1?

Vissen vangen toch geen koe in een sloot?
Arjan Schuurman
Arjan Schuurman
22 jaar geleden
 
0 +1 -0 -1
@Hipska: 2 zijn toch beter dan 1?

Vissen vangen toch geen koe in een sloot?

PS. Srry van de dubbele post, moet nog even leren mijn volgende en vorige knoppen in bedwang te houden.
Steven Pollux
Steven Pollux
22 jaar geleden
 
0 +1 -0 -1
Eerst een paar reacties en daarna een kleine update, zal later ook het script zelf aanpassen!
@lissy: ik kan wel een kleine opbouw geven nog een keer, dat is wel een goede. Verder zijn het hele standaard gastenboek entry's dus niks spannend. Ik heb het er meer bijgezet om de paginanummering werkend te krijgen. Met deze table heb ik het werkend gekregen, maar je kan het ook anders toepassen uiteraard.

@mebus: het hele script draaid op cijfers dus er zal weinig misgaan, ik heb het voor de zekerheid er nu wel ingezet inderdaad.

@nano: klopt, deze manier was ik zelf ook mee aan het stoeien maar was de 'as num' vergeten :/ ik heb hem er nu in verwerkt.

Ok, versie 1.1.
-Een hoop dingen in functies verwerkt, ziet er strakker uit
-Mijn code een beetje opgeruimd, tabs erin gezet etc
-De 2 tips van nano en mebus (is_numeric en de mysql fetch manier) erin verwerkt
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
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<?php
//connect
    mysql_connect("***","***","***");
    mysql_select_db("***");
//Retrieve and create the $each and $each_array vars
    if(isset($_GET['each'])&&is_numeric($_GET['each'])) $each = $_GET['each'];
    else $each = 10;
    $each_options = array("5", "10", "15", "20");
//Create the $counter var
    $query = mysql_query("select count(*) as num from test");
    $counter = mysql_result($query, 0, "num");
//Create the $pages var
    $pages = $counter / $each;
    $pages = ceil($pages);
//Check on witch page you are now
    if(isset($_GET['pag'])&&$_GET['pag'] <= $pages&&$_GET['pag']>0&&is_numeric($_GET['pag'])) $pag = $_GET['pag'];
    else $pag = 1;
//Get the results from the database
    $first_result = $pag * $each - $each;
    $query = mysql_query("select * from test limit ".$first_result.", ".$each);

function
render_each_dropdown($each_options,$each)
{

    echo '<form action="index.php">';
    echo '<select name="each" onchange="this.form.submit();">'."\n";
    foreach($each_options as $item)
    {

        echo '<option value="'.$item.'"';
        if($item==$each) echo ' selected';
        echo '>'.$item.'</option>'."\n";
    }

    echo '</select></form>';
}
function
render_arrow($kind,$pag,$pages,$each)
{

    $pag_back = $pag-1;
    $pag_next = $pag+1;
    if($kind == "back")
    {

        echo '<a ';
        if($pag > 1) echo 'href="index.php?pag='.$pag_back.'&each='.$each.'"';
        echo '><<</a>';
    }

    if($kind == "forward")
    {

        echo '<a ';
        if($pag < $pages) echo 'href="index.php?pag='.$pag_next.'&each='.$each.'"';
        echo '>>></a>';    
    }
}
function
render_pagenumbers($pag,$pages,$each)
{

    $i = 1;
    while($i<=$pages)
    {

        echo '<a ';
        if($i!=$pag) echo 'href="index.php?pag='.$i.'&each='.$each.'"';
        echo '>'.$i.'</a>&nbsp;&nbsp;';
        $i++;
    }
}

?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

    <title>Pages test</title>
    <style type="text/css" media="all">
    <!--
    #Comment        {    float: left;
                        margin: 5px 50px 0px 0px;
                        padding: 2px 0px;
                        background-color: #C3C3C3;
                        width: 100%;    }

    #Comment .date    {    color: #CCFFCC;
                        font-size: 11px;    }
    -->
    </style>    
</head>
<body>
<?php
//Echo the information about the table and settings
    echo 'aantal rows: '.$counter."<br />\n";
    echo 'Aantal rows per pagina: '.$each."<br />\n";
    echo 'Aantal pagina\'s: '.$pages."<br />\n";
    echo "<br />\n";
        render_each_dropdown($each_options,$each);
        render_arrow(back,$pag,$pages,$each);
    echo $pag;
        render_arrow(forward,$pag,$pages,$each);
    echo "<br />\n";
        render_pagenumbers($pag,$pages,$each);
//echo the rows
    while($r=mysql_fetch_array($query))
    {
    
        $id=$r["id"];
        $name=$r["name"];
        $text=$r["text"];
        $date=$r["date"];
        $time=$r["time"];  
        echo '<div id="Comment"><b>'.$name.'</b><br>'.$text.'<br><span class="date">'.$date.' | '.$time.' (<a href="index.php?edit='.$id.'">'.$id.'</a>)</span></div><br>';
    }

?>

</body>
</html>
Lissy Pixel
Lissy Pixel
22 jaar geleden
 
0 +1 -0 -1
Ziet er idd strakker uit.
Leuk dat je wat met de opbouwende kritieken hebt gedaan :)
Lissy Pixel
Lissy Pixel
22 jaar geleden
 
0 +1 -0 -1
Ik loop effies vast met de output voor de diverse paginas hun linken.
Mijn site heeft 1 lay-out index.php en hierin komen de content paginas d.m.v. ?id= en dan een nummer. Voor het gastenboek is dit ?id=27
Hoe verwerk ik dit hierin?

Ik heb het voor de 2e ? maak je een & en dan zou het moeten werken :)
Crispijn -
Crispijn -
22 jaar geleden
 
0 +1 -0 -1
Ik heb zo iets nog nooit in een functie gezien terwijl een hoop mensen dat altijd als commentaar geven wanneer zo'n script geplaatst wordt. Ik ben best benieuwd hoe ik zo iets in een functie kan zetten..

@Steven: Ga je dit nog in een functie verwerken? Ik ben best wel benieuwd wat je er van gaat maken dan.

That would be all!
Steven Pollux
Steven Pollux
22 jaar geleden
 
0 +1 -0 -1
lissy, zo te zien heb je hem zelf al! :) variabelen kan je oneindig opstapelen doormiddel van de volgende methode:
paginaam.php?var1=waarde1&var2=waarde2&var3=waarde3

@Crispijn, waar heb je het precies over? Ik snap niet wat je bedoeld! :)

Ik heb trouwens ook mijn MySQL table toegevoegd!
Lissy Pixel
Lissy Pixel
22 jaar geleden
 
0 +1 -0 -1
@ Steven : echt leuk dat je ook wat met de comments doet :) Dank je wel voor het delen van jouw kennis ^_-
Lissy Pixel
Lissy Pixel
22 jaar geleden
 
0 +1 -0 -1
Nog effies over het dropdown gedeelte :

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
<?php
function render_each_dropdown($each_options,$each)
{

echo '<form action="?id=27">';
echo '<select name="each" onchange="this.form.submit();">'."\n";
foreach($each_options as $item)
{

    echo '<option value="'.$item.'"';
    if($item == $each)
    echo ' selected';
    echo '>'.$item.'</option>'."\n";
}

    echo '</select></form>';
}

?>


dit krijg ik niet goed en snap niet waarom niet.
hij laat standaard wel de 10 messages zien en dan kan je op pagina 1 en 2 maar wil ik ze per 5 groeperen dan no way dan gaat dit fout....
Steven Pollux
Steven Pollux
22 jaar geleden
 
0 +1 -0 -1
Eens kijken lissy.. Probeer eens bij de <form tag ook method="post" te zetten, misschien dat dat helpt?

Trouwens, kan je 'dan gaat het fout' beter defineren? Wat gaat er fout? geeft hij een php error, groepeert hij nog steeds op 10, wat is er precies?
Lissy Pixel
Lissy Pixel
22 jaar geleden
 
0 +1 -0 -1
@ Steven : *blush* Je hebt helemaal gelijk voor wat betreft m'n foutformulering. Shame on me... Normaal gesproken geef ik ook een link zodat men dan kan gaan kijken. Ik heb dit nu niet gedaan omdat het gastenboek in gebruik is.

Wat ik zal doen is een demo maken en hierop de paginanummering (proberen) te maken zodat je dan kan zien wat er fout gaat. Ik kom erop terug ^_-

Edit: Hier de link: demo-gastenboek
probeer maar dan zie je dat het aantal berichten wat je ook aangeeft op 10 blijft. De eerdere fouten zijn al weg door idd dit aan te brengen: method="post" maar het is nog niet zoals het 'moet'... lijkt mij...
Steven Pollux
Steven Pollux
22 jaar geleden
 
0 +1 -0 -1
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
<?php
function render_each_dropdown($each_options,$each)
{

echo '<form action="index2.php" method="get">';
echo '<select name="each" onchange="this.form.submit();">'."\n";
foreach($each_options as $item)
{

    echo '<option value="'.$item.'"';
    if($item == $each)
    echo ' selected';
    echo '>'.$item.'</option>'."\n";
}

    echo '</select>';
    echo '<input type="hidden" name="id" value="'.$id.'"></form>';
}

?>

Zo werkt het wel! Je kan geen action invullen met variabelen. Die moet je in een hidden input steken, dan werken ze! :) En foutje van mij, je moet met method get werken, post is weer de andere O-)
Lissy Pixel
Lissy Pixel
22 jaar geleden
 
0 +1 -0 -1
Ik kom er bijna want als ik naar de adresbalk kijk zie ik dat hij wel de id meeneemt maar niet de waarde dus daar gaan we nog fout. Klik ik op 5 per pagina dan staat er dit:
http://www.bearded-collies.net/index2.php?each=5&id=

en dit zou moeten worden:
http://www.bearded-collies.net/index2.php?id=82&pag=2&each=5
Steven Pollux
Steven Pollux
22 jaar geleden
 
0 +1 -0 -1
lissy, waarscheinlijk benader jij in je code de $_GET['id'] anders, ik heb hem hier nu $id genoemd maar ik vrees dat je dat niet gebruikt in je eigen code.

Bij dit stukje code hierboven (mijn vorige post) op regel 14 $id te vervangen voor $_GET['id]
Ik denk dat hij het dan wel doet!

Succes, Steve
Lissy Pixel
Lissy Pixel
22 jaar geleden
 
0 +1 -0 -1
Yes idd hij doet het nu en m'n volgende goal is om nu ook weer de smileys aan de praat te krijgen maar daar zal ik je niet mee belasten :)
Dank je wel voor zover dat je me hebt willen helpen dat hij het nu doet !!
Steven Pollux
Steven Pollux
22 jaar geleden
 
0 +1 -0 -1
No problemo, ik vind het ook wel leuk mensen te helpen zo met wat php probleempjes! :) Ik hou je site in de gaten, kijken of het lukt! ;)
Lissy Pixel
Lissy Pixel
22 jaar geleden
 
0 +1 -0 -1
Grinnnnn... ik denk allemaal die hier op PHPhulp komen die helpen graag of willen geholpen worden ^_ -
Maar goed leuk om te lezen dat jij ook graag helpt. Ik meld me zeker weer, ben nu effies aan het graphics maken en er is al weer wat ge-upload maar dat is m'n personal site en niet de doggies...
Machiel
Machiel
22 jaar geleden
 
0 +1 -0 -1
Ik vind dit echt een mooi script heb alleen een probleem. Als je heel erg veel berichten laad. Krijg je bijvoorbeeld pagina nummers 1 tot en met 60 of iets dergelijks. Ik zou dit liever zo zien.
<<Eerste pagina <<Vorige Pagina 1 2 3 4 5 Volgende pagina>> Laatste pagina>>

of

<<Eerste pagina <<Vorige Pagina 1 2... 59 60 Volgende pagina>> Laatste pagina>>

Of iets wat erop lijkt. Hoe kan ik dit in dit script inbouwen? Ik hoop dat iemand hierbij kan helpen oid.
Ger van detr linde
Ger van detr linde
22 jaar geleden
 
0 +1 -0 -1
Ik heb de code ook in gebruik. allen wanneer ik boven de 65 paginas kom loopt hij me het scherm uit. eingelijk zou er dan een 2e rij met nummers moeten komen. wie heeft de oplossing.

Verder ziet het er goed uit. Mijn dank
Ariena
ariena
22 jaar geleden
 
0 +1 -0 -1
Dat wat Machiel zegt, zou ik ook wel graag willen weten!!!! Wie is zo aardig om ons te helpen??
Pieter
Pieter
21 jaar geleden
 
0 +1 -0 -1
Volgens mij heb ik iets gemaakt wat we allemaal wel nodig hebben nu en dan: een pagina teller die niet door gaat tot 60 paginas en dan de hele layout verkl*** maar met navigatieknoppen en met max 10 pagina's. IN EEN FUNCTIE

Is wel een hele lap tekst geworden, maar ik heb het maar meteen zo compleet mogelijk gedaan (inclusief test scriptjes voor diegene die het willen uitproberen zonder uren lang uit te vogelen hoe het script werkt).


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
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
<?php

/*
    Deze pagina maakt gebruik van een tabelletje waarmee je kunt testen
    Gebruik daarvoor deze queries
    CREATE TABLE test1 (`field` char( 3 ) NOT NULL default '');
    CREATE TABLE test2 (`field` char( 3 ) NOT NULL default '');
    
    maak een appart scriptje om er wat data in te gooien;
    veel in de ene
    for($i=10;$i<275;$i++){
        $query="INSERT INTO test1 (field) VALUES ($i)";
        mysql_query($query, $database_connection);
    }
    weinig in de andere
    for($i=10;$i<7;$i++){
        $query="INSERT INTO test2 (field) VALUES ($i)";
        mysql_query($query, $database_connection);
    }
    
    Met behulp van de &db=$db kan je dan wisselen tussen de tabellen
    Om te kijken hoe de paginanavigatie reageert
    &db=test1 of &db=test2 (kan je dus in de url veranderen)
*/



# ================================== HIER BEGINT DE FUNCTIE =======================================================================



function createPageNavigation($p=1, $maxLinesPerPage=10, $totalRecords=0, $extraLink, &$showFromRecord, &$showToRecord)
# Deze functie maakt een pagina teller met voor en achteruitspoel knoppen en toont max 10 paginas daartussen
#
# $p - input                    : De huidige pagina (if leeg, then 1)
# $maxLinesPerPage - input        : Het maximaal aantal records op een pagina (if leeg, then 10)
# $totalRecords - input            : Het totaal aantal gevonden records uit de query (if leeg, then 0)
# $extraLink - input            : Indien er nog meer gegevens mee moeten komen in de link die wordt gemaakt
# $showFromRecord - output        : Moet worden gebruikt om te bepalen welke records er moeten worden getoond uit de result set van de query        
# $showToRecord - output        : Moet worden gebruikt om te bepalen welke records er moeten worden getoond uit de result set van de query        

{
    global $PHP_SElF;
    global $navToStartOn, $navToStartOff, $navFastRewindOn, $navFastRewindOff, $navRewindOn, $navFastRewindOff;
    global $currentPageLeft, $currentPageRight, $pageSeperator;
    global $navForwardOn, $navForwardOff, $navFastForwardOn, $navFastForwardOff, $navToEndOn, $navToEndOff;

    # in het geval de globals niet gezet zijn, hier alsnog even vullen
    # wat navigatie zooi (kan je ook een plaatje in knikkeren)
    # On/off kan je een ander plaatje geven of ander kleurtje maken

    if(!$navToStartOn)        $navToStartOn         = "|< ";
    if(!$navToStartOff)        $navToStartOff         = "|< ";
    if(!$navFastRewindOn)    $navFastRewindOn    = "<< ";
    if(!$navFastRewindOff)    $navFastRewindOff    = "<< ";
    if(!$navRewindOn)        $navRewindOn        = "< ";
    if(!$navRewindOff)        $navRewindOff        = "< ";
    if(!$navToEndOn)        $navToEndOn            = " >|";
    if(!$navToEndOff)        $navToEndOff        = " >|";
    if(!$navFastForwardOn)    $navFastForwardOn    = " >>";
    if(!$navFastForwardOff)    $navFastForwardOff    = " >>";
    if(!$navForwardOn)        $navForwardOn        = " >";
    if(!$navForwardOff)        $navForwardOff        = " >";
    if(!$pageSeperator)        $pageSeperator        = " | ";
    if(!$currentPageLeft)    $currentPageLeft    = " [ ";
    if(!$currentPageRight)    $currentPageRight    = " ] ";

    function
getRange($p, $n, &$onder, &$boven)
    {

        if($p!=0){
            $onder = floor(($p-1)/$n)*$n + 1;
            $boven = ceil(($p)/$n)*$n;
            if ($onder == $boven) { $boven += $n;}
        }
else {
            $onder = 1;
            $boven = $n;
        }    
    }


    # Totaal aantal paginas berekenen
    $nrOfPages             = ceil($totalRecords/$maxLinesPerPage);
    $maxPagesPerPage    = 10;

    # wat moet ik op deze pagina laten zien
    $showFromRecord        = (($p-1)*$maxLinesPerPage);
    $showToRecord        = (($p-1)*$maxLinesPerPage)+$maxLinesPerPage;
    
    $nrOfPreviousNav    = $showFromRecord/$maxLinesPerPage;
    $nrOfNextNav        = ceil(($totalRecords-$showToRecord)/$maxLinesPerPage);

    # berekenen welke pagina´s we moeten laten zien
    getRange($p, $maxPagesPerPage, $rangeStart, $rangeEnd);

    # De goto start en fastrewind knop maken
    if($p-$maxPagesPerPage<1){
        $output .= $navToStartOff;
        $output .= $navFastRewindOff;
    }
else{    
        $output .= " <a href=\"$PHP_SElF?p=1$extraLink\">$navToStartOn</a> ";
        $output .= " <a href=\"$PHP_SElF?p=".($p-$maxPagesPerPage)."$extraLink\">$navFastRewindOn</a> ";
    }


    # de rewind knop maken (een pagina)
    if($p-1<1){
        $output .= $navRewindOff;
    }
else{
        $output .= " <a href=\"$PHP_SElF?p=".($p-1)."$extraLink\">$navRewindOn</a>$pageSeperator";
    }


    # Hier de paginas (binnen het huidige 10tal) gaan maken links van de huidige pagina
    for($j=$rangeStart;$j<=$rangeEnd;$j++){
        if($j<=$nrOfPages){
            if($j==$p){
                # De huidige pagina
                $output .= $currentPageLeft.$p.$currentPageRight;
            }
else{
                $output .= "<a href=\"$PHP_SElF?p=".$j.$extraLink."\">$j</a>$pageSeperator";
            }
        }
    }


    # de forward knop maken (een pagina)
    if($p+1>$nrOfPages){
        $output .= $navForwardOff;
    }
else{
        $output .= "<a href=\"$PHP_SElF?p=".($p+1)."$extraLink\">$navForwardOn</a> ";
    }

    
    # de fast forward en de goto End knop maken
    if($p+$maxPagesPerPage>$nrOfPages){
        $output .= $navFastForwardOff;
        $output .= $navToEndOff;
    }
else{    
        $output .= " <a href=\"$PHP_SElF?p=".($p+$maxPagesPerPage)."$extraLink\">$navFastForwardOn</a> ";
        $output .= " <a href=\"$PHP_SElF?p=".$nrOfPages.$extraLink."\">$navToEndOn</a> ";
    }

    
    # de boel uitpoepen
    return $output;
}




# ================================== HIER STOPT DE FUNCTIE EN BEGINT HET TEST SCRIPT ==========================================



$connection = mysql_connect(server, user, password);
mysql_selectdb(database, $connection);

#eerst even een functie die het uitlezen van de query wat makkelijker maakt (is niet nodig voor de pagina teller, maar een leuke bonus)
function executeQuery($query, $connection, &$number)
{

    $mysqlArray = mysql_query($query,$connection) or die ("<p>De query \"$query\" kon niet worden uitgevoerd !</p>");
    $i=0;
    while ($myrow = mysql_fetch_array($mysqlArray)){
        $aant = mysql_num_fields($mysqlArray);;
        for ($j=0;$j<=$aant-1;$j+=1){
            $veldnaam = mysql_field_name($mysqlArray, $j);
            $nw_array[$i][$veldnaam] = $myrow[$j];
        }

        $i+=1;
    }

    $number = $i;
    if ($i==0) {return 0;} else {return $nw_array;}
}


# De query met wat ik wil tonen (totale set)
$query = "SELECT field FROM $db WHERE 1";
$result = executeQuery($query, $connection, $totalRecords);

#hoeveel regels wil ik op m´n pagina?
$maxLinesPerPage=10;

# hier dus de functie voor de pagina teller initieren
# daaruit komen dus $showFrom en $showTo

$navigationbar = createPageNavigation($p, $maxLinesPerPage, $totalRecords, "&db=$db", &$showFromRecord, &$showToRecord);

# Nu de resultaten van de query uitlezen
$r=1;
for($i=0; $i<$totalRecords; $i++){
    if($i>=$showFromRecord && $i<$showFromRecord+$maxLinesPerPage){
        
        #hier dan de output van de tabel
        echo "$r: {$result[$i][field]}<br>";
        $r++;

    }
}


echo "$navigationbar";

?>
Stijn Dumoulin
Stijn Dumoulin
21 jaar geleden
 
0 +1 -0 -1
k heb stukken van je scriptje gebruikt in een forum software die ik aan het maken ben, als je wil plaats ik wel een link ernaar als voorbeeldje. Echter sinds toevoeging van men script voert ie de query niet uit... lukt dit bij jou wel?? Dit geeft hij:

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\pcfreaky.be.tc\forum\messages.php on line 55
1 >>


Edit: sorry dat ik dit topic schopte trouwens...

Het script werkt echter wel want er zijn 3 pagina's beschikbaar. Dit is ook juist. De pijlen '<<' en '>>' werken ook goed.
Ni bot
ni bot
20 jaar geleden
 
0 +1 -0 -1
Kijk deze heeft mij na uren zoeken uit de brand geholpen om een duidelijke pagina numering script te schrijven!
Gm1999
gm1999
18 jaar geleden
 
0 +1 -0 -1
mag ik vragen wat er onder die '***' moet staan?
moet bij de eerste naam,wachtwoord etz.
Vincent Huisman
Vincent Huisman
18 jaar geleden
 
0 +1 -0 -1
host (localhost vaak) gebruikersnaam en password van de database
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Peter
peter
18 jaar geleden
 
0 +1 -0 -1
Hoi,

Ik had een klein vraagje over de bovenstaande script, is het hier ook mogelijk nog om een soort van filter in te maken dus bijv. met films dat je dat op genre kan sorteren en dat je alleen met genre die jij wilt te zien krijgt?

Al vast bedankt voor de reacties...

***UPDATE 2-1-2010***
Laat maar zitten mensen het is me al gelukt :D

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

Inhoudsopgave

  1. automatische-paginanummering

Labels

  • Geen tags toegevoegd.

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.