PHP modulus

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jop B

Jop B

14/11/2019 12:21:54
Quote Anchor link
Hallo,


Ik heb een vraag over modulus.
Per 4 posts laat ik deze insluiten door een li element.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
if ($countpackage%4 == 0) {
    if ($countpackage != 0){
        echo '</li>';
    }

    echo '<li class="blog_package">';
}

?>



Voor de opmaak wil ik graag aan het laatste gemaakte li element een class toevoegen.
Hoe kan ik binnen modulus het laatste element krijgen?

Gr. Jop
 
PHP hulp

PHP hulp

09/11/2024 02:15:31
 
- Ariën  -
Beheerder

- Ariën -

14/11/2019 12:40:48
Quote Anchor link
Layout zijn niet echt dingen die je door PHP moet laten doen.
Met CSS kan het prima met li:last-child.

https://www.w3schools.com/cssref/sel_last-child.asp
 
Jop B

Jop B

14/11/2019 12:54:21
Quote Anchor link
Hi Ariën,


Heb het inderdaad zo gedaan :-) bedankt voor de tip.

Gr. Jop
 
Thomas van den Heuvel

Thomas van den Heuvel

14/11/2019 13:24:24
Quote Anchor link
- Ariën - op 14/11/2019 12:40:48:
Layout zijn niet echt dingen die je door PHP moet laten doen.

PHP is juist bij uitstek geschikt voor dynamische content, maar als er een simpelere oplossing is waarbij PHP niet nodig is (volledig in CSS) dan verdient dat natuurlijk de voorkeur.

Als je dan toch aangewezen bent op PHP voor het genereren van HTML en zoiets gebruikt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
if ($countpackage%4 == 0) {
    if ($countpackage != 0){
        echo '</li>';
    }

    echo '<li class="blog_package">';
}

?>

Dan is het ook zaak dat je goed rekening houdt met randgevallen. Wat als het totaal aantal items een veelvoud is van 4? Dan heb je een li-openings tag zonder een sluitingstag. En daarmee een syntactisch ongeldig HTML-document.

Het kan handig zijn om bij te houden of een tag geopend is door het bijhouden van een Boolse waarde (true of false) maar ik heb geen idee hoe de rest van je code er uit ziet dus ik weet ook niet of en waar dat ingepast zou moeten worden. Deze waarde inspecteer je dan nadat je je lijst met items bent afgelopen en kijk je of je alsnog een tag moet sluiten.
Gewijzigd op 14/11/2019 13:53:52 door Thomas van den Heuvel
 
Jop B

Jop B

14/11/2019 14:49:40
Quote Anchor link
Hi Thomas,

Dit is de loop
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
<?php
$weblogloop
= new WP_Query( $args );
    $countid        = 1;
    $countpackage    = 0;
    while ( $weblogloop->have_posts() ) : $weblogloop->the_post();
        if ($countpackage%4 == 0) {
            if ($countpackage != 0){
                echo '</li>';
            }

                echo '<li class="blog_package">';
        }

?>

                        <div class="blogs_page blogid-<?php echo $countid;?>">
                            <a href="<?php the_permalink(); ?>">
                                <h1><?php echo the_title(); ?></h1>
                                <?php the_excerpt(); ?>    
                            </a>
                        </div>
<?php
    $countid
++;
    $countpackage ++;
    endwhile;
    
    wp_reset_query();
?>
Gewijzigd op 14/11/2019 14:50:13 door Jop B
 
Thomas van den Heuvel

Thomas van den Heuvel

14/11/2019 17:11:33
Quote Anchor link
$count en $countpackage verschillen 1, dus je zou dit kunnen vereenvoudigen tot:
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
<?php
$weblogloop
= new WP_Query($args);
$count = 1;
$tagOpen = false;
while ($weblogloop->have_posts()):
    $weblogloop->the_post();
    if ($count % 4 == 0) {
        if ($count > 0) { // impliceert $tagOpen === true
            ?>
</li><?php
            $tagOpen
= false;
        }

        ?>
<li class="blog_package"><?php
        $tagOpen
= true;
    }

    ?>
<div class="blogs_page blogid-<?php echo ($count + 1); ?>">
        <a href="<?php the_permalink(); ?>"><h1><?php echo the_title(); ?></h1><?php the_excerpt(); ?></a>
    </div><?php
    $count
++;
endwhile;

if ($tagOpen) {
    ?>
</li><?php
}
wp_reset_query();
?>

Als je e.e.a. wat anders inspringt dan leest dit ook wat prettiger ;).
 



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.