Extra pagina's "aanmaken" als er "te veel" blogs zijn

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Nick kuijpers

nick kuijpers

02/02/2014 20:12:37
Quote Anchor link
Hallo,

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)
PHP script in nieuw venster Selecteer het PHP script
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
           <?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 &#8594;</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="#">&#8592; Nieuwere berichten </a>
                    </div>
                    <div class="nav-previous">
                        <a href="#">Oudere berichten &#8594;</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)
PHP script in nieuw venster Selecteer het PHP script
1
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
?>

Zoals je ziet is dit niet handig :D.

Alvast bedankt!
Mvg,
Nick
 
PHP hulp

PHP hulp

07/05/2024 04:42:23
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

02/02/2014 20:54:07
Quote Anchor link
Dat heet pagination, zoek even daarop met google.
Even al wat voorbereidend:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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";
?>
 
Nick kuijpers

nick kuijpers

02/02/2014 20:56:41
Quote Anchor link
Heb je mischien een kleine uitleg er bij?
wat wat doet enzo.
 
- Ariën  -
Beheerder

- Ariën -

02/02/2014 21:02:47
Quote Anchor link
Die functies kan je al eenvoudig vinden op php.net/functienaam, dus bijv. www.php.net/mysqli_fetch_row.

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.
 
Nick kuijpers

nick kuijpers

02/02/2014 21:11:50
Quote Anchor link
Is dit het totale script dat je nodig hebt?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

02/02/2014 21:17:44
Quote Anchor link
Nee, het is een aanzet hoe je pagination kunt opbouwen.
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.
 
- Ariën  -
Beheerder

- Ariën -

02/02/2014 21:18:46
Quote Anchor link
Je zult natuurlijk ook de navigatie-paginanummers aan moeten maken voor onder of boven de lijst ;-)
 
Nick kuijpers

nick kuijpers

02/02/2014 21:28:33
Quote Anchor link
Ik heb het allemaal kunnen vinden hartstike bedankt!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.