Archief - PHP/MYSQL: paging

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

omfg

Legacy Member
lo,
ik zit al een tijdje met een klein probleempje :p
Als ik bij bv. een gastenboek, shoutbox, nieuwspagina, ... meerdere records heb dan verdeel ik ze onder pagina's (10 of 20 per pagina) om het overzichtelijker te maken.
Het lukt me om "first", "last", "next" en "previous" links te maken, en ook om het aantal pagina's weer te geven (bv. 1 - 2 - 3 - 4 - 5).
Maar als er bv 300 records zijn, met op elke pagina 10, dan is er een lijst van 30 pagina's, ik vind dat maar lelijk om zo een hele lijst te geven met pagina's 1 - 30, dus ik vroeg me af hoe je kan doen dat hij maar 5 of 10 pagina's per keer weergeeft?

bv:
1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 *je klikt op pagina 8*

4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13

dus eigenlijk zoals op TNGforum dat er maar 20 pagina-nr's getoond worden

Bertold

Legacy Member
omfg zei:
lo,
ik zit al een tijdje met een klein probleempje :p
Als ik bij bv. een gastenboek, shoutbox, nieuwspagina, ... meerdere records heb dan verdeel ik ze onder pagina's (10 of 20 per pagina) om het overzichtelijker te maken.
Het lukt me om "first", "last", "next" en "previous" links te maken, en ook om het aantal pagina's weer te geven (bv. 1 - 2 - 3 - 4 - 5).
Maar als er bv 300 records zijn, met op elke pagina 10, dan is er een lijst van 30 pagina's, ik vind dat maar lelijk om zo een hele lijst te geven met pagina's 1 - 30, dus ik vroeg me af hoe je kan doen dat hij maar 5 of 10 pagina's per keer weergeeft?

bv:
1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 *je klikt op pagina 8*

4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13

dus eigenlijk zoals op TNGforum dat er maar 20 pagina-nr's getoond worden


iets in de aard van :
PHP:
$minimum_pagina = $huidige_pagina - 5;
$maximum_pagina = $huidige_pagina + 5;

for($p = $minimum_pagina; $p <= $maximum_pagina; $p++){
if($p == $huidige_pagina){
echo '<b>'.$p.'</b>';
}else{
echo $p;
}
}
mss kan het beter kweet et nie maar zo zou het moeten lukken denkek

omfg

Legacy Member
daar kan ik wel wat mee doen :D

ik had al eerder zo'n systeempje bedacht maar bij mij lukte het niet zo goed :p


thx
~omfg

edit:
kheb het een beetje aangepast en 't werkt perfect

Lashknife

Legacy Member
wel controleren dat als je op page 2 drukt, dat er niet -3 -2 -1 0 1 2 3 4 5 6 7 komt te staan natuurlijk :D

omfg

Legacy Member
idd ^^
nu worden er altijd 10 pagina's getoond (als er 10 zijn :unsure: )

orez

Legacy Member
ge mag die "aanpassing" hier altijd plaatsen... mensen die in het vervolg naar zelfde oplossing zoeken, weten het dan ook meteen.

Bertold

Legacy Member
kzou het zo laten ;) kunnen de mensen nog wa zoekn. ik vind et makkelijker als ze mij beetje uitleggen hoe er aan te beginnen dan dat ze mij een kant en klaar script geven

omfg

Legacy Member
ru`orez zei:
ge mag die "aanpassing" hier altijd plaatsen... mensen die in het vervolg naar zelfde oplossing zoeken, weten het dan ook meteen.
het kon waarschijnlijk ook anders, maar hier is de code:

PHP:
<?php
$minimum_pagina = $page - 5;
if ($minimum_pagina < 1) { $minimum_pagina = 1; }

$maximum_pagina = $minimum_pagina + 10;
if ($maximum_pagina > $aantal_paginas){
$maximum_pagina = $aantal_paginas;
$minimum_pagina = ($aantal_paginas - 10);
}
if ($minimum_pagina < 1) { $minimum_pagina = 1; }

for($p = $minimum_pagina; $p <= $maximum_pagina; $p++){
if($p == $page){
echo '<b>'.$p.'</b> ';
}else{
echo '<a href="pagina.php?page='.$p.'">'.$p.'</a> ';
}
}
?>

zo toont hij max. 10 pagina's per keer. :)

dJeez

Legacy Member
Kijk eens naar de Pager class in PEAR, en maak er een sliding pager van met die klasse.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan