Veel records uit database op meerdere pagina´s weergeven
Hoe kan ik een groot aantal record uit een database op meerdere pagina´s laten weergeven. Zoals bijvoorbeeld in een gastenboek. De berichten worden dan normaal verdeeld in pagina´s van bijvoorbeeld 10 berichten. Ik wil het gaan gebruiken voor een nieuwsarchief. Nu is het nog te overzien, maar het wordt steeds groter.
http://www.phphulp.nl/php/scripts/6/446/
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
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
/* kijken of een positie is meegegeven, anders wordt de 1e pagina getoont */
if(isset($_GET['positie'])==0){
$positie=0;
}else{
$positie=(int)$_GET['positie'];
}
$aantalperpagina=10;
$SQL_code="SELECT * FROM gastenboek ORDER BY datum DESC LIMIT $positie,$aantalperpagina";
$resultaat=mysql_query($SQL_code);
//Aantal records berekenen
$aantal_rijen=mysql_num_rows(mysql_query("SELECT id FROM gastenboek"));
//Met de volgende opdrachten worden de links gemaakt.
$volgendepagina=$positie+$aantalperpagina;
if($volgendepagina>=$aantal_rijen){
$link_volgende="Volgende >>";
}else {
$link_next="<a href=naamvanpagina.php?positie=" . $volgendepagina . ">Volgende >></a>";
}
$vorigepagina=$positie-$aantalperpagina;
if($vorigepagina<0){
$link_vorige="<< Vorige";
} else {
$link_vorige="<a href=naamvanpagina.php?positie=" . $vorigepagina . "><< Vorige</a>";
}
// om de links te maken en weer te geven
[code]<?php echo $link_vorige . " " . $link_volgende ?>
?>
/* kijken of een positie is meegegeven, anders wordt de 1e pagina getoont */
if(isset($_GET['positie'])==0){
$positie=0;
}else{
$positie=(int)$_GET['positie'];
}
$aantalperpagina=10;
$SQL_code="SELECT * FROM gastenboek ORDER BY datum DESC LIMIT $positie,$aantalperpagina";
$resultaat=mysql_query($SQL_code);
//Aantal records berekenen
$aantal_rijen=mysql_num_rows(mysql_query("SELECT id FROM gastenboek"));
//Met de volgende opdrachten worden de links gemaakt.
$volgendepagina=$positie+$aantalperpagina;
if($volgendepagina>=$aantal_rijen){
$link_volgende="Volgende >>";
}else {
$link_next="<a href=naamvanpagina.php?positie=" . $volgendepagina . ">Volgende >></a>";
}
$vorigepagina=$positie-$aantalperpagina;
if($vorigepagina<0){
$link_vorige="<< Vorige";
} else {
$link_vorige="<a href=naamvanpagina.php?positie=" . $vorigepagina . "><< Vorige</a>";
}
// om de links te maken en weer te geven
[code]<?php echo $link_vorige . " " . $link_volgende ?>
?>
Als je goed naar de uitleg kijkt die ik erbij heb gezet, dan moet je eruit kunnen komen:
Het hele stuk voor de commentaarregel "// om de links te maken en weer te geven"
Moet je zo gebruiken als waar het staat. Verander wel de SQL_code in de query die je zelf wilt gebruiken. (LAAT "LIMIT $positie,$aantalperpagina" wel staan, hierin selecteerd die alleen de records die op een pagina worden weergegeven.
Vervolgens geef je de resultaten weer op je pagina (ff een kort voorbeeld):
<html>
<body>
<table>
<tr>
<td></td>
</tr>
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
}
// EN DAN DUS NA DE WHILE LOOP
echo ("$link_vorige . " " . $link_volgende");
?>
}
// EN DAN DUS NA DE WHILE LOOP
echo ("$link_vorige . " " . $link_volgende");
?>
Hoop dat het duidelijk genoeg is zo, anders hoor ik het nog wel van je
Gewijzigd op 07/11/2005 13:22:00 door Robert Deiman