Tabel splitsen en meerdere pagina's
Adoptive Solution op 12/10/2022 12:11:05:
Omdat dit topic nog wel een paar maanden zal aanhouden zonder dat een oplossing in zicht is, hier mijn bijdrage:
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
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
<style>
tr:nth-child(odd) {
background: #dcdcdc;
}
tr:nth-child(even) {
background: #dcdcaa;
}
</style>
<table style="width:50%; border: 1px solid red;">
<tbody>
<?php
$aantalrecords = 22; // opgehaald in database
$advertentie = 5; // toon advertentie na zoveel regels
for ( $i = 0; $i < $aantalrecords; $i++ ):
if ( $i % $advertentie == 0 && $i >= $advertentie ):
echo '<tr><td>HIER ADVERTENTIE</td></tr>' . PHP_EOL;
endif;
echo '<tr><td><p>' . $i + 1 . ' data</p></td></tr>' . PHP_EOL;
endfor;
?>
</tbody>
</table>
tr:nth-child(odd) {
background: #dcdcdc;
}
tr:nth-child(even) {
background: #dcdcaa;
}
</style>
<table style="width:50%; border: 1px solid red;">
<tbody>
<?php
$aantalrecords = 22; // opgehaald in database
$advertentie = 5; // toon advertentie na zoveel regels
for ( $i = 0; $i < $aantalrecords; $i++ ):
if ( $i % $advertentie == 0 && $i >= $advertentie ):
echo '<tr><td>HIER ADVERTENTIE</td></tr>' . PHP_EOL;
endif;
echo '<tr><td><p>' . $i + 1 . ' data</p></td></tr>' . PHP_EOL;
endfor;
?>
</tbody>
</table>
YESSSS!!! Dit is al bijna helemaal top!!!
Ik krijg nu inderdaad 10 rows, advertentie, weer 10, advertentie enzovoort, enkel is wel dat de pagina nu ellenlang is, alle results ook 10 - 30 keer weergeven en dat pagina 2 niet begint op dit moment bij 30 maar dat zal tweaken zijn..
Bedankt al voor je bijdrage! Ben nu al stukken verder! :D
Deze zorgt voor een variabele query die aan de hand LIMIT (of OFFSET) in MySQL welke rijen er getoond worden.
1) Bepaal eerst het paginanummer vanuit $_GET. Is er geen $_GET['pagina'], start dan altijd bij 1.
Code (php)
2) Schrijf de formule voor het aantal items per pagina:
3) Tel het totaal aantal pagina's
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$sql= "SELECT * FROM items";
$result = mysqli_query($conn, $sql);
$totaal = mysqli_num_rows($result);
$aantalpaginas = ceil($totaal / $aantal); // afronden naar boven van 16 / 3 = 4 pagina's en 15 / 3 is drie pagina's
?>
$sql= "SELECT * FROM items";
$result = mysqli_query($conn, $sql);
$totaal = mysqli_num_rows($result);
$aantalpaginas = ceil($totaal / $aantal); // afronden naar boven van 16 / 3 = 4 pagina's en 15 / 3 is drie pagina's
?>
4) Pas je query aan op je formule en toon de rijen:
Code (php)
5) Toon de pagina's voor de navigatie in een for-loop:
Code (php)
Je kan de laatste stap nog verder verfijnen door bijvoorbeeld de huidige pagina nummer niet klikbaar te maken, of een eigen stijl te geven, of enkel de voorgaande drie en de opvolgende x aantal pagina's in de rij te tonen. Een kwestie van experimenteren.
Gewijzigd op 12/10/2022 13:44:53 door - Ariën -
Ik krijg elke site als het ware 30 keer te zien, dit tot aan 30 stuks toe, op pagina 2 begint het opnieuw..
Moet even zien hoe dit uit te vogelen zodat het wel 'normaal' loopt..
Ik zou zeggen: ga eens debuggen, en kijk stap voor stap wat er gebeurt en met name bij je LIMIT-query.
Ik neem aan dat je niet rücksichtslos kopieert en plakt.
Gewijzigd op 12/10/2022 13:37:37 door - Ariën -