Pagination Gastenboek
Ik ben al paar dagen aan het prutsen maar kom er maar niet uit.
Dus ik hoop dat de wat ervaren phpers het wel voor me weten :)
Ik wil pagina's in me gastenboek laten weergeven.
Hieronder me gastenboek code.
Dit moet volgens mij voldoende zijn.
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
$sql = "SELECT `name`, `enableEmoticons`, `message`, `time` FROM guestbook ORDER BY `id` DESC";
$dataQuery = mysql_query($sql);
echo "<h2>Bekijk berichten (" . mysql_num_rows($dataQuery) . ")</h2>\n";
if(mysql_num_rows($dataQuery) == 0) {
echo "<p>Er zijn op dit moment geen gastenboek berichten. <a href=\"?action=addComment\">Dus wees de eerste!</a></p>\n";
}
else {
while($data = mysql_fetch_assoc($dataQuery)) {
$dataQuery = mysql_query($sql);
echo "<h2>Bekijk berichten (" . mysql_num_rows($dataQuery) . ")</h2>\n";
if(mysql_num_rows($dataQuery) == 0) {
echo "<p>Er zijn op dit moment geen gastenboek berichten. <a href=\"?action=addComment\">Dus wees de eerste!</a></p>\n";
}
else {
while($data = mysql_fetch_assoc($dataQuery)) {
En hier de code die ik van iemand gekregen heb alleen is hij nu maand op vakantie en kan die me helaas niet helpen met inbouwen.
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
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
function pages()
{
global $page, $maxpages, $totaal;
if(isset($_REQUEST['startdate']) AND isset($_REQUEST['enddate']))
{
$datum = "&startdate=".$_REQUEST['startdate']."&enddate=".$_REQUEST['enddate'];
}
if(($page-1) >= 1)
echo "<a href='?id={$_REQUEST['id']}&page=".($page-1).$datum."'>vorige pagina</a>";
else
echo "vorige pagina";
echo " | <u>pagina ".$page."</u> | ";
if(($page+1) <= $maxpages)
echo "<a href='?id={$_REQUEST['id']}&page=".($page+1).$datum."'>volgende pagina</a>";
else
echo "volgende pagina";
echo " | <em>(stemmen ".$totaal[0]." / paginas: ".$maxpages.")</em>";
}
$totaal = mysql_fetch_row(mysql_query("SELECT count(zelftest_id) as totaal FROM zelftest WHERE resultaat = '".$zelftest_id."' ".$datum." ORDER BY zelftest_id DESC"));
$maxpages = ceil($totaal[0]/$offset);
if(!isset($_REQUEST['page']) OR $page < 1) $page = 1;
$end = $offset * $page;
$start = $end - $offset;
pages();
{
global $page, $maxpages, $totaal;
if(isset($_REQUEST['startdate']) AND isset($_REQUEST['enddate']))
{
$datum = "&startdate=".$_REQUEST['startdate']."&enddate=".$_REQUEST['enddate'];
}
if(($page-1) >= 1)
echo "<a href='?id={$_REQUEST['id']}&page=".($page-1).$datum."'>vorige pagina</a>";
else
echo "vorige pagina";
echo " | <u>pagina ".$page."</u> | ";
if(($page+1) <= $maxpages)
echo "<a href='?id={$_REQUEST['id']}&page=".($page+1).$datum."'>volgende pagina</a>";
else
echo "volgende pagina";
echo " | <em>(stemmen ".$totaal[0]." / paginas: ".$maxpages.")</em>";
}
$totaal = mysql_fetch_row(mysql_query("SELECT count(zelftest_id) as totaal FROM zelftest WHERE resultaat = '".$zelftest_id."' ".$datum." ORDER BY zelftest_id DESC"));
$maxpages = ceil($totaal[0]/$offset);
if(!isset($_REQUEST['page']) OR $page < 1) $page = 1;
$end = $offset * $page;
$start = $end - $offset;
pages();
Gewijzigd op 01/01/1970 01:00:00 door Roy L
hier maar eens naar. Zal je best kunnen helpen ;-). Als je daarmee problemen ondervindt, even met duidelijke uitleg hier in een reactie plaatsen.
Je hebt net zoiets als ik al heb gemaakt. Kijk Ik hoop zo de uitslag al te hebben.
Ben je erg dankbaar.
Enige wat nog niet werkt is de knop eerste.
En dat is nog even lastig.
Hoe ziet je code er nu uit?
Alleen vind ik het jammer dat 1 na pag=1 gaat.
Zou eigenlijks willen dat die na pag=0 gaat.
Ben wel super blij trouwens
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
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
function pageNumbers($pages, $page)
{
$ret = '';
if($pages > 0) {
if($page > $pages) {
return false;
} else {
if($page < 0)
$ret .= "« | ";
else
$ret .= "<a href='?action=viewComments&pag=".($page-1)."'>«</a> | ";
if($page < 0)
$ret .= "Eerste | ";
else
$ret .= "<a href='?action=viewComments&pag=0'>Eerste</a> | ";
if($page > 999) {
$puntjesv = '... ';
$min = $page-999;
$max = $page+999;
if($page+999 >= $pages) {
$max = $pages;
$puntjesn = '';
} else {
$max = $page+999;
$puntjesn = '...';
}
} elseif($page <= 999) {
$puntjesv = '';
$min = 1;
if($page+999 >= $pages) {
$max = $pages;
$puntjesn = '';
} else {
$max = $page+999;
$puntjesn = '...';
}
}
$ret .= $puntjesv;
for($i=$min;$i<=$max;$i++) {
if($page == $i)
$ret .= "[".$i."] ";
else
$ret .= "<a href='?action=viewComments&pag=".$i."'>".$i."</a> ";
}
$ret .= $puntjesn;
if($page == $pages)
$ret .= " | Laatste";
else
$ret .= " | <a href='?action=viewComments&pag=".$pages."'>Laatste</a>";
if($page == $pages)
$ret .= " | »";
else
$ret .= " | <a href='?action=viewComments&pag=".($page+1)."'>»</a>";
}
}
return $ret;
}
{
$ret = '';
if($pages > 0) {
if($page > $pages) {
return false;
} else {
if($page < 0)
$ret .= "« | ";
else
$ret .= "<a href='?action=viewComments&pag=".($page-1)."'>«</a> | ";
if($page < 0)
$ret .= "Eerste | ";
else
$ret .= "<a href='?action=viewComments&pag=0'>Eerste</a> | ";
if($page > 999) {
$puntjesv = '... ';
$min = $page-999;
$max = $page+999;
if($page+999 >= $pages) {
$max = $pages;
$puntjesn = '';
} else {
$max = $page+999;
$puntjesn = '...';
}
} elseif($page <= 999) {
$puntjesv = '';
$min = 1;
if($page+999 >= $pages) {
$max = $pages;
$puntjesn = '';
} else {
$max = $page+999;
$puntjesn = '...';
}
}
$ret .= $puntjesv;
for($i=$min;$i<=$max;$i++) {
if($page == $i)
$ret .= "[".$i."] ";
else
$ret .= "<a href='?action=viewComments&pag=".$i."'>".$i."</a> ";
}
$ret .= $puntjesn;
if($page == $pages)
$ret .= " | Laatste";
else
$ret .= " | <a href='?action=viewComments&pag=".$pages."'>Laatste</a>";
if($page == $pages)
$ret .= " | »";
else
$ret .= " | <a href='?action=viewComments&pag=".($page+1)."'>»</a>";
}
}
return $ret;
}
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
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
$showRecords = 20; // aantal records per pagina
// als je 'pag' hieronder aanpast, moet je dat in de functie ook doen!
if(isset($_GET['pag'])) {
$pag = $_GET['pag'];
$start = $_GET['pag'] * $showRecords;
} else {
$pag = 1;
$start = 1;
}
// totale query
$tQuery = "SELECT * FROM guestbook";
$tResult = mysql_query($tQuery);
if($tResult && mysql_num_rows($tResult) > 0) {
$pages = ceil(mysql_num_rows($tResult)/$showRecords)-1;
} else {
$pages = 0;
}
//$sql = "SELECT `name`, `enableEmoticons`, `message`, `time` FROM guestbook ORDER BY `id` DESC";
//$dataQuery = mysql_query($sql);
// query van de data voor deze pagina
$sql = "SELECT * FROM guestbook ORDER BY `id` DESC LIMIT ".$start.",".$showRecords;
$dataQuery = mysql_query($sql);
if($oResult && mysql_num_rows($oResult) > 0) {
// weergave van data, gebruik $oResult
} else {
// foutafhandeling
}
// als je 'pag' hieronder aanpast, moet je dat in de functie ook doen!
if(isset($_GET['pag'])) {
$pag = $_GET['pag'];
$start = $_GET['pag'] * $showRecords;
} else {
$pag = 1;
$start = 1;
}
// totale query
$tQuery = "SELECT * FROM guestbook";
$tResult = mysql_query($tQuery);
if($tResult && mysql_num_rows($tResult) > 0) {
$pages = ceil(mysql_num_rows($tResult)/$showRecords)-1;
} else {
$pages = 0;
}
//$sql = "SELECT `name`, `enableEmoticons`, `message`, `time` FROM guestbook ORDER BY `id` DESC";
//$dataQuery = mysql_query($sql);
// query van de data voor deze pagina
$sql = "SELECT * FROM guestbook ORDER BY `id` DESC LIMIT ".$start.",".$showRecords;
$dataQuery = mysql_query($sql);
if($oResult && mysql_num_rows($oResult) > 0) {
// weergave van data, gebruik $oResult
} else {
// foutafhandeling
}
Hm.. ik snap even niet waarom je een aantal keer met 999 zit te klooien? Dat staat volgens mij niet in het originele script? Bovendien zijn er nog een aantal dingen in het tweede deel die je nog zelf in moet vullen.
heb ik er 999 van gemaakt leek me wel genoeg.
En wat ik in 2e deel nog moet veranderen.
Gaat mij de pet te boven.
Ben nog maar beginner.
Excuses voor de verwarring met de 999.
Waarom zou dat jou de pet te boven gaan als je het in het beginnende topic hier bovenaan al wel goed doet? Weergave van data is niets meer dan een while()-loop met een mysql_fetch_*() erin. Foutafhandeling zal ik je een tutorial over geven.