Pagina navigatie werkt niet
ik ben nu al een paar uur bezig om me pagina navigatie werkt te krijgen. dit is overgigens een script wat een een tutorial komt. nou wil ik dat er maximaal 3 filmpjes per pagina worden weergeven, het probleem is als ik nu 6 records in me database heb staan hij ze gewoon alle zes laat zien, maar wel 2 pagina's aanmaakt, gooi ik er 9 records in maakt die ook 3 pagina's aan. alleen laat die wel op elke pagina alle records zien terwijl dit er maar 3 mogen zijn en de volgende pagina de volgende 3. iemand een idee wat ik fout doe?
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
<?
$res1 = mysql_query("SELECT COUNT(id) FROM filmpje") or die("res1: ".mysql_error()); // vraag het AANTAL items op
$items_totaal = mysql_result($res1, 0); // het totaal aantal items
mysql_free_result($res1); // geef het resultaat vrij
$items_per_pagina = 3; // vrij te kiezen
$aantal_paginas = ceil($items_totaal / $items_per_pagina); // het aantal items per pagina
// de huidige pagina opvragen
$huidige_pagina = 0; // default
if(isset($_GET['p']) && is_numeric($_GET['p']) && $_GET['p'] > 0 && $_GET['p'] < $aantal_paginas) {
$huidige_pagina = $_GET['p'];
}
// items van de huidige pagina ophalen
$offset = $huidige_pagina * $items_per_pagina;
$res2 = mysql_query("SELECT * FROM filmpje ORDER BY id DESC LIMIT ".$offset.","
.$items_per_pagina) or die("res2:". mysql_error());
mysql_free_result($res2);
echo '<table style="width: 700px; text-align: center; margin-left: auto; margin-right: auto;" cellpadding="25" cellspacing="15" >';
// Hieronder de while() even aanpassen naar jouw while()
// waar je de gegevens uit wilt halen. Je kunt er uiteraard
// ook een for() of een foreach() van maken.
while ($row = mysql_fetch_array($res))
{
echo ($teller % $naast_elkaar) == 0 ? '<tr>' : '';
echo '<td STYLE="border-style: solid; border-color: #FDC007; text-align: center; vertical-align: middle; " >';
// Hier zet je een echo met de gegevens die je
// wilt weergeven in het tabelvak.
echo '<img src="foto/2.jpg" alt="Forest Thistle" /></br>';?>
$res1 = mysql_query("SELECT COUNT(id) FROM filmpje") or die("res1: ".mysql_error()); // vraag het AANTAL items op
$items_totaal = mysql_result($res1, 0); // het totaal aantal items
mysql_free_result($res1); // geef het resultaat vrij
$items_per_pagina = 3; // vrij te kiezen
$aantal_paginas = ceil($items_totaal / $items_per_pagina); // het aantal items per pagina
// de huidige pagina opvragen
$huidige_pagina = 0; // default
if(isset($_GET['p']) && is_numeric($_GET['p']) && $_GET['p'] > 0 && $_GET['p'] < $aantal_paginas) {
$huidige_pagina = $_GET['p'];
}
// items van de huidige pagina ophalen
$offset = $huidige_pagina * $items_per_pagina;
$res2 = mysql_query("SELECT * FROM filmpje ORDER BY id DESC LIMIT ".$offset.","
.$items_per_pagina) or die("res2:". mysql_error());
mysql_free_result($res2);
echo '<table style="width: 700px; text-align: center; margin-left: auto; margin-right: auto;" cellpadding="25" cellspacing="15" >';
// Hieronder de while() even aanpassen naar jouw while()
// waar je de gegevens uit wilt halen. Je kunt er uiteraard
// ook een for() of een foreach() van maken.
while ($row = mysql_fetch_array($res))
{
echo ($teller % $naast_elkaar) == 0 ? '<tr>' : '';
echo '<td STYLE="border-style: solid; border-color: #FDC007; text-align: center; vertical-align: middle; " >';
// Hier zet je een echo met de gegevens die je
// wilt weergeven in het tabelvak.
echo '<img src="foto/2.jpg" alt="Forest Thistle" /></br>';?>
<a href="filmpje.php?cat=&titel="></a></br>
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
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
<? echo '
'.$row['bekeken'].' x Bekeken </br>
';
if ($row['aantal'] < 1) {
echo "Er is nog geen cijfer gegeven";
} else {
//is er wel al een cijfer geven
// het gemiddelde berekennen door het totaal te delen door het aantal
$total = $row['cijfer'] / $row['aantal'];
$total = round($total,1);
echo "Aantal sterren:";
//uitrekennen welk cijfer
if ($total <= 2.5) {
echo "1 ster";
} elseif ($total <= 3.5) {
echo "1,5 ster";
} elseif ($total <= 4.5) {
echo "2 sterren";
} elseif ($total <= 5.5) {
echo "2,5 sterren";
} elseif ($total <= 6.5) {
echo "3 sterren";
} elseif ($total <= 7.5) {
echo "3,5 sterren";
} elseif ($total <= 8.5) {
echo "4 sterren";
} elseif ($total <= 9.5) {
echo "4,5 sterren";
} elseif ($total <= 10.5) {
echo "5 sterren";
}
}
echo '</td>';
$teller++;
echo ($teller % $naast_elkaar) == 0 ? '</tr>' : '';
}
echo ($teller % $naast_elkaar) != 0 ? '</tr>' : '';
echo '</table>';
} else {
echo 'Geen data gevonden';
}
// navigatie
for($i = 0; $i < $aantal_paginas; $i++) {
if($huidige_pagina == $i) {
// huidige pagina is niet klikbaar
echo "<b>".($i+1)."</b>";
} else {
// een andere pagina dan de huidige is wel klikbaar
echo "<a href=\"".$_SERVER['PHP_SELF']."?cat=".$cat."&p=".$i."\">".($i+1)."</a>";
}
// deel-streepje tussen alle items
if($i < $aantal_paginas - 1) {
echo " - ";
}
}
}
?>
'.$row['bekeken'].' x Bekeken </br>
';
if ($row['aantal'] < 1) {
echo "Er is nog geen cijfer gegeven";
} else {
//is er wel al een cijfer geven
// het gemiddelde berekennen door het totaal te delen door het aantal
$total = $row['cijfer'] / $row['aantal'];
$total = round($total,1);
echo "Aantal sterren:";
//uitrekennen welk cijfer
if ($total <= 2.5) {
echo "1 ster";
} elseif ($total <= 3.5) {
echo "1,5 ster";
} elseif ($total <= 4.5) {
echo "2 sterren";
} elseif ($total <= 5.5) {
echo "2,5 sterren";
} elseif ($total <= 6.5) {
echo "3 sterren";
} elseif ($total <= 7.5) {
echo "3,5 sterren";
} elseif ($total <= 8.5) {
echo "4 sterren";
} elseif ($total <= 9.5) {
echo "4,5 sterren";
} elseif ($total <= 10.5) {
echo "5 sterren";
}
}
echo '</td>';
$teller++;
echo ($teller % $naast_elkaar) == 0 ? '</tr>' : '';
}
echo ($teller % $naast_elkaar) != 0 ? '</tr>' : '';
echo '</table>';
} else {
echo 'Geen data gevonden';
}
// navigatie
for($i = 0; $i < $aantal_paginas; $i++) {
if($huidige_pagina == $i) {
// huidige pagina is niet klikbaar
echo "<b>".($i+1)."</b>";
} else {
// een andere pagina dan de huidige is wel klikbaar
echo "<a href=\"".$_SERVER['PHP_SELF']."?cat=".$cat."&p=".$i."\">".($i+1)."</a>";
}
// deel-streepje tussen alle items
if($i < $aantal_paginas - 1) {
echo " - ";
}
}
}
?>
Gewijzigd op 31/03/2012 17:42:01 door Jaap evidor
Verdiep je dan ook eens in mysql's LIMIT, dan gaat er een gehele wereld voor je open.
maar tot die tijd iemand een oplossing?
Het is aan jouw om er wat mee te doen, we zijn er niet om jouw code te herschrijven, dan wel de juiste logica erin aan te brengen.