[RESOLU] Carousel en PHP

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Carousel en PHP

Re: [RESOLU] Carousel en PHP

par JAG11 » 05 mai 2021, 16:31

=D> Super merci

Re: [RESOLU] Carousel en PHP

par Shadowwera » 05 mai 2021, 16:07

Ah je viens de voir, il manque une " à la fin de la div
<div class="carousel-item<?php if ($i <= 1) echo ' active' ?> data-interval='1000'">

Re: [RESOLU] Carousel en PHP

par JAG11 » 05 mai 2021, 15:54

J'ai essayé ça ne marche pas :non:

Re: [RESOLU] Carousel en PHP

par Shadowwera » 05 mai 2021, 15:20

Salut ! Ravi de t'avoir aidé !

Plutôt que d'écrire
<div <?php if ($i <= 1) echo 'class="carousel-item active data-interval="1000"';
else echo 'class="carousel-item data-interval="1000"' ?>>
Ecrit plutôt :
<div class="carousel-item<?php if ($i <= 1) echo ' active' ?> data-interval="1000">
Etant donné que tes classes carousel-item et data-interval="1000" sont constamment présente inutile le les inclure dans ton if :D

Re: [RESOLU] Carousel en PHP

par JAG11 » 05 mai 2021, 12:36

Et encore un énorme merci

Re: [RESOLU] Carousel en PHP

par JAG11 » 05 mai 2021, 12:36

Le code corrigé type BOOTSTRAP

Code : Tout sélectionner

<!--carousel--> <div id="carousel" class="carousel slide carousel-fade" data-bs-ride="carousel"> <div class="carousel-inner"> <?php $stmt = $db->query('SELECT * FROM t_carroussel ORDER BY Id_carroussel ASC'); $i = 1; foreach ($stmt as $row) : ?> <div <?php if ($i <= 1) echo 'class="carousel-item active data-interval="1000"'; else echo 'class="carousel-item data-interval="1000"' ?>> <img alt="<?= $row['Legende_image'] ?>" src="/Carroussel/<?= $row['Lien_image'] ?>" class="d-block w-100"> </a> <div class="carousel-caption d-none d-md-block"> <h3><?= $row['Legende_image'] ?></h3> </div> </div> <?php $i++; endforeach; ?> </div> <button class="carousel-control-prev" type="button" data-bs-target="#carousel" data-bs-slide="prev"> <span class="carousel-control-prev-icon" aria-hidden="true"></span> <span class="visually-hidden">Previous</span> </button> <button class="carousel-control-next" type="button" data-bs-target="#carousel" data-bs-slide="next"> <span class="carousel-control-next-icon" aria-hidden="true"></span> <span class="visually-hidden">Next</span> </button> </div>

Re: Carousel en PHP

par JAG11 » 05 mai 2021, 12:20

Merci beaucoup pour l'aide

Re: Carousel en PHP

par JAG11 » 05 mai 2021, 12:17

Je viens de faire le test d'ajouter une image en BDD, ça fonctionne.

Re: Carousel en PHP

par JAG11 » 05 mai 2021, 12:14

En fait, je viens de le retravailler un peu pour le modifier comme ceci et là j'ai un défilement:

Code : Tout sélectionner

<div id="carousel" class="carousel slide" data-bs-ride="carousel"> <div class="carousel-inner"> <?php $stmt = $db->query('SELECT * FROM t_carroussel ORDER BY Id_carroussel ASC'); $i = 1; foreach ($stmt as $row) : ?> <div <?php if ($i <= 1) echo 'class="carousel-item active"'; else echo 'class="carousel-item"' ?>> <img alt="<?= $row['Legende_image'] ?>" src="/Carroussel/<?= $row['Lien_image'] ?>" class="d-block w-100"> </a> <div class="finlay-carousel-caption"> <h3><?= $row['Legende_image'] ?></h3> <p><?= $row['Legende_image'] ?></p> </div> </div> <?php $i++; endforeach; ?> </div>
Il manquait
carousel-item
avec un else pour les ligne supérieurs à 1.

Ce qui en HTML donne ceci, plus proche du code BOOTSTRAP:

Code : Tout sélectionner

<div class="carousel-inner"> <div class="carousel-item active"> <a href="Normal/ffmo1619691050.png" target="_blank"> <img alt="Bienvenue sur le site de la FFMö" src="/Carroussel/Normal/ffmo1619691050.png" class="d-block w-100"> </a> <div class="finlay-carousel-caption"> <h3>Bienvenue sur le site de la FFMö</h3> <p>Bienvenue sur le site de la FFMö</p> </div> </div> <div class="carousel-item"> <a href="Normal/ffmo1619691091.png" target="_blank"> <img alt="Les 24 h du Mölkky" src="/Carroussel/Normal/ffmo1619691091.png" class="d-block w-100"> </a> <div class="finlay-carousel-caption"> <h3>Les 24 h du Mölkky</h3> <p>Les 24 h du Mölkky</p> </div> </div> <div class="carousel-item"> <a href="Normal/ffmo1619716741.png" target="_blank"> <img alt="Les Mölkkyades" src="/Carroussel/Normal/ffmo1619716741.png" class="d-block w-100"> </a> <div class="finlay-carousel-caption"> <h3>Les Mölkkyades</h3> <p>Les Mölkkyades</p> </div> </div> </div> </div>

Re: Carousel en PHP

par JAG11 » 05 mai 2021, 12:04

Bonjour, j'ai appliqué ta remarque mais ça ne marche toujours pas. Voici le code:

Code : Tout sélectionner

<div id="carousel" class="carousel slide" data-bs-ride="carousel"> <div class="carousel-inner"> <?php $stmt = $db->query('SELECT * FROM t_carroussel ORDER BY Id_carroussel ASC'); $i=1; foreach ($stmt as $row) : ?> <div <?php if ($i <= 1) echo 'class="active"'; ?>> <a href="<?= $row['Lien_image'] ?>" target="_blank"> <img alt="<?= $row['Legende_image'] ?>" src="/Carroussel/<?= $row['Lien_image'] ?>" /> </a> <div class="finlay-carousel-caption"> <h3><?= $row['Legende_image'] ?></h3> <p><?= $row['Legende_image'] ?></p> </div> </div> <?php $i++; endforeach; ?> </div>

Re: Carousel en PHP

par Shadowwera » 04 mai 2021, 09:01

Salut !

D'accord je vois, dans ton cas le rowCount() ne servira donc pas
Remplace le par une incrémentation, initialise un $i = 1 avant le foreach, puis à la fin de ton foreach each tu l'incrémente $i++

Re: Carousel en PHP

par JAG11 » 30 avr. 2021, 20:24

Bonsoir

le test sur la variable $counter renvoi 3 qui correspond à mon nombre d'image. Que faire ?

Re: Carousel en PHP

par Shadowwera » 30 avr. 2021, 08:43

Salut JAG11,

Si tu affiche la variable $counter, que te retourne t'elle ?
Elle est supposé te donner le nombre d'entrée que tu as dans ta base `t_carroussel`, et lors de la première entrée ( if ($counter <= 1) ) alors la classe active lui est attribué (echo 'class="active")

S'il ne le fait pas, il doit y avoir soit un soucis avec la variable $counter, soit avec la condition

PS: Voici la doc concernant le rowCount()

Re: Carousel en PHP

par JAG11 » 29 avr. 2021, 11:16

Bonjour Shadowwera , j'ai mis en pratique ton code ci-dessus....

Code : Tout sélectionner

<div id="carousel" class="carousel slide" data-bs-ride="carousel"> <div class="carousel-inner"> <?php $stmt = $db->query('SELECT * FROM t_carroussel ORDER BY Id_carroussel ASC'); $counter = $stmt->rowCount(); foreach ($stmt as $row) : ?> <div <?php if ($counter <= 1) echo 'class="active"'; ?>> <a href="<?= $row['Lien_image'] ?>" target="_blank"> <img alt="<?= $row['Legende_image'] ?>" src="/Carroussel/<?= $row['Lien_image'] ?>" /> </a> <div class="finlay-carousel-caption"> <h3><?= $row['Legende_image'] ?></h3> <p><?= $row['Legende_image'] ?></p> </div> </div> <?php endforeach; ?> </div> </div>
...mais cela ne marche pas. Avec 3 images, j'ai 3 images et 3 Légendes affichées les uns au dessus des autres. Je n'ai pas de défilement.
Le code en HTML donne ceci

Code : Tout sélectionner

<div id="carousel" class="carousel slide" data-bs-ride="carousel"> <div class="carousel-inner"> <div > <a href="Image/ffmo1619687406.png" target="_blank"> <img alt="Test image N°1" src="/Carroussel/Image/ffmo1619687406.png" /> </a> <div class="finlay-carousel-caption"> <h3>Test image N°1</h3> <p>Test image N°1</p> </div> </div> <div > <a href="Image/ffmo1619687436.png" target="_blank"> <img alt="Test image n°2" src="/Carroussel/Image/ffmo1619687436.png" /> </a> <div class="finlay-carousel-caption"> <h3>Test image n°2</h3> <p>Test image n°2</p> </div> </div> <div > <a href="Image/ffmo1619687473.png" target="_blank"> <img alt="Test image N°3" src="/Carroussel/Image/ffmo1619687473.png" /> </a> <div class="finlay-carousel-caption"> <h3>Test image N°3</h3> <p>Test image N°3</p> </div> </div> </div> </div>
Je remarque qu'il n' y a pas de div avec la classe "active". C'est peut être l'origine du problème?

Re: Carousel en PHP

par Shadowwera » 28 avr. 2021, 15:25

Salut, dans ce genre de cas je serais plus tenter d'utiliser un foreach. Dans votre cas, cla ressemblerais à quelque chose du genre :
<?php
  $BDD = new BDD();
  $dbh = $BDD->getConnection();
  $stmt = $dbh->query('SELECT * FROM t_carroussel ORDER BY Id ASC');
  $counter = $stmt->rowCount();
  foreach($stmt as $row): ?>
<div <?php if($counter <= 1) echo 'class="active"'; ?> >
    <a href="<?= $row['Lien_image'] ?>" target="_blank">
        <img alt="<?= $row['Legende_image'] ?>" src="/Carroussel/Normal/<?= $row['Lien_image'] ?>" />
    </a>
    <div class="finlay-carousel-caption">
        <h3><?= $row['Legende_image'] ?></h3>
        <p><?= $row['Legende_image'] ?></p>
    </div>
</div>
<?php
  endforeach;
?>