Extra pagina's "aanmaken" als er "te veel" blogs zijn
Ik ben bezig met een soort blog en ik zou graag willen dat in het blog overzicht na 3 blogs een volgende pagina word gemaakt en daar weer de volgende blogs op worden gezet.
Voorbeeldje: Op phphulp na ... reacties wordt er met een soort GET methode een volgende pagina "gemaakt" en daar de volgende reacties op geplaats.
Ik wil wel dat de blogs op tijdsvolgorde lopen dus niet ASC maar DESC (weet even neit hoe ik het anders moet zeggen).
Het volgende heb ik al geprobeerd:
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
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
<?php
$aantal = mysqli_num_rows($select);
$totaal = ceil($aantal/3);
while($arr = mysqli_fetch_array($select, MYSQLI_BOTH))
{
?>
<article class="format-standard">
<div class="entry-date"><div class="number"><?php echo $arr['dag']; ?></div> <div class="year"><?php echo $arr['jaar']; ?></div></div>
<div class="feature-image">
<a href="img/slides/<?php echo $arr['foto']; ?>" data-rel="prettyPhoto"><img src="img/slides/<?php echo $arr['foto']; ?>" alt="Alt text" /></a>
</div>
<h2 class="post-heading"><a href="single.php?blog=<?php echo $arr['id']; ?>"><?php echo $arr['naam']; ?></a></h2>
<div class="excerpt"><?php echo substr(" ".$arr['tekst']." ",0,300); ?>...</div>
<a href="single.php?blog=<?php echo $arr['id']; ?>" class="read-more">Meer lezen →</a>
<div class="meta">
<div class="categories">In <a href="#"><?php echo $arr['label1']; ?></a>, <a href="#"><?php echo $arr['label2']; ?></a></div>
<div class="comments"><a href="#">5 reacties </a></div>
<div class="user"><a href="#">Door <?php echo $arr['door']; ?></a></div>
</div>
</article>
<?php } ?>
<!-- page-navigation -->
<div class="page-navigation clearfix">
<div class="nav-next">
<a href="#">← Nieuwere berichten </a>
</div>
<div class="nav-previous">
<a href="#">Oudere berichten →</a>
</div>
<!--ENDS page-navigation -->
</div>
<?php for($i = 0; $i < $totaal; $i++){ echo "<a href=blog.php?p=".$i.">".$i."</a>, "; }?>
$aantal = mysqli_num_rows($select);
$totaal = ceil($aantal/3);
while($arr = mysqli_fetch_array($select, MYSQLI_BOTH))
{
?>
<article class="format-standard">
<div class="entry-date"><div class="number"><?php echo $arr['dag']; ?></div> <div class="year"><?php echo $arr['jaar']; ?></div></div>
<div class="feature-image">
<a href="img/slides/<?php echo $arr['foto']; ?>" data-rel="prettyPhoto"><img src="img/slides/<?php echo $arr['foto']; ?>" alt="Alt text" /></a>
</div>
<h2 class="post-heading"><a href="single.php?blog=<?php echo $arr['id']; ?>"><?php echo $arr['naam']; ?></a></h2>
<div class="excerpt"><?php echo substr(" ".$arr['tekst']." ",0,300); ?>...</div>
<a href="single.php?blog=<?php echo $arr['id']; ?>" class="read-more">Meer lezen →</a>
<div class="meta">
<div class="categories">In <a href="#"><?php echo $arr['label1']; ?></a>, <a href="#"><?php echo $arr['label2']; ?></a></div>
<div class="comments"><a href="#">5 reacties </a></div>
<div class="user"><a href="#">Door <?php echo $arr['door']; ?></a></div>
</div>
</article>
<?php } ?>
<!-- page-navigation -->
<div class="page-navigation clearfix">
<div class="nav-next">
<a href="#">← Nieuwere berichten </a>
</div>
<div class="nav-previous">
<a href="#">Oudere berichten →</a>
</div>
<!--ENDS page-navigation -->
</div>
<?php for($i = 0; $i < $totaal; $i++){ echo "<a href=blog.php?p=".$i.">".$i."</a>, "; }?>
Nu heb ik geprobeerd dit systeempje te omzeilen door gewoon heel veel pagina's alvast aan te maken maar dat is toch niet echt handig en dan leer ik er niet veel van.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$p = htmlspecialchars(trim($_GET['p']));
if($p == 0 || !$_GET['p']){
$select = mysqli_query($con, "SELECT * FROM blog WHERE id BETWEEN 1 AND 3 ORDER BY id DESC") or die("FOUT: ".mysqli_error($con));
}
elseif($p == 1){
$select = mysqli_query($con, "SELECT * FROM blog WHERE id BETWEEN 4 AND 6 ORDER BY id DESC");
}
elseif($p == 2){
$select = mysqli_query($con, "SELECT * FROM blog WHERE id BETWEEN 7 AND 9 ORDER BY id DESC");
}
elseif($p == 3){
$select = mysqli_query($con, "SELECT * FROM blog WHERE id BETWEEN 10 AND 12 ORDER BY id DESC");
}
enzo enzo
?>
$p = htmlspecialchars(trim($_GET['p']));
if($p == 0 || !$_GET['p']){
$select = mysqli_query($con, "SELECT * FROM blog WHERE id BETWEEN 1 AND 3 ORDER BY id DESC") or die("FOUT: ".mysqli_error($con));
}
elseif($p == 1){
$select = mysqli_query($con, "SELECT * FROM blog WHERE id BETWEEN 4 AND 6 ORDER BY id DESC");
}
elseif($p == 2){
$select = mysqli_query($con, "SELECT * FROM blog WHERE id BETWEEN 7 AND 9 ORDER BY id DESC");
}
elseif($p == 3){
$select = mysqli_query($con, "SELECT * FROM blog WHERE id BETWEEN 10 AND 12 ORDER BY id DESC");
}
enzo enzo
?>
Zoals je ziet is dit niet handig :D.
Alvast bedankt!
Mvg,
Nick
Even al wat voorbereidend:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$itemsPerPage = 5; //iets wat je zelf vaststeld
//het bepalen van het totale aantal:
$rsTot = mysqli_query($con, 'SELECT COUNT(*) FROM blogs');
$rowTot = mysqli_fetch_row($rsTot);
$totalItems = $rowTot[0];
$currentPage = (isset($_GET['p'])) ? (int) $_GET['p'] : 1;
$start = $itemsPerPage * ($currentPage -1);
$sql = "SELECT columns_names FROM blog ORDER BY post_date LIMIT $start, $itemsPerPage";
?>
$itemsPerPage = 5; //iets wat je zelf vaststeld
//het bepalen van het totale aantal:
$rsTot = mysqli_query($con, 'SELECT COUNT(*) FROM blogs');
$rowTot = mysqli_fetch_row($rsTot);
$totalItems = $rowTot[0];
$currentPage = (isset($_GET['p'])) ? (int) $_GET['p'] : 1;
$start = $itemsPerPage * ($currentPage -1);
$sql = "SELECT columns_names FROM blog ORDER BY post_date LIMIT $start, $itemsPerPage";
?>
wat wat doet enzo.
Die $currentpage is een verkortte if-else versie: Er wordt gekeken of $_GET['p'] bestaat, zo ja dan gebruikt hij die waarde, en zo niet dat gebruikt hij de waard 1. En dat wordt opgeslagen in $currentpage.
Is dit het totale script dat je nodig hebt?
Als je zoekt op php pagination kom je heel veel voorbeelden tegen.
Maar de meeste hebben de neiging om eerst alle records op te halen alleen maar om te bepalen hoeveel records er te zijn, vandaar het veel betere alternatief.
Je zult natuurlijk ook de navigatie-paginanummers aan moeten maken voor onder of boven de lijst ;-)
Ik heb het allemaal kunnen vinden hartstike bedankt!