Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

Comme vous pouvez le constater, j'ai affiché l'ensemble des randonnées par ordre de date du style >= à la date du jour. Sauf que lorsque j'indique le mois pour un meilleur visuel, il se répète autant de fois que j'ai de randonnées sur le mois données. Il me semble que c'est lié à la boucle while.

<body>
  <header>
      <nav class="navbar navbar-expand-lg fixed-top navbar-light">
        <a class="navbar-brand" href="index.html"><img src="asset/img/logo.svg" class="logo" alt="Logo" title="logo bikeride.fr"></a>
        <button class="navbar-toggler custom-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
          <span class="navbar-toggler-icon"></span>
        </button>

        <div class="collapse navbar-collapse" id="navbarSupportedContent">
          <ul class="navbar-nav mr-auto">
            <li class="nav-item active">
              <a class="nav-link text-light" href="index.php">Accueil <span class="sr-only">(current)</span></a>
            </li>
            <li class="nav-item">
              <a class="nav-link text-light" href="rando_vtt.php">Randonnées vtt</a>
            </li>
            <li class="nav-item">
              <a class="nav-link text-light" href="rando_cyclo.php">Randonnées cyclo</a>
            </li>
            <li class="nav-item">
              <a class="nav-link text-light" href="blog.php">Blog</a>
            </li>        
            <li class="nav-item">
              <a class="nav-link text-light" href="contact.php">Contact</a>
            </li>
          </ul>      
        </div>
      </nav>

       <div class="jumbotron jumbotron-fluid jumbotron-bis">
        <div class="container">
          <br>
          <h1 class="text-light">Randonnées VTT 2019</h1>
          <p class="text-warning">Sélectionner un département</p>
            <div class="col-md-4">
              <form action="calendrier_randonnees_vtt.php" method="GET">
                <div class="input-group">
                  <select class="custom-select m-1 rounded" name="dep" id="dep">
                    <option selected>- Sélectionner -</option>
                    <?php $reponse = $bdd->query("SELECT departement_id, departement_code, departement_nom FROM departement");
                      while ($dept = $reponse->fetch()) {
                    ?>                  
                    <option value="<?php echo $dept['departement_id']; ?>"> <?php echo $dept['departement_code']; ?> - <?php echo $dept['departement_nom']; ?></option>
                    <?php
                      }
                    ?>
                  </select>
                  <div class="input-group-append">
                    <button class="btn btn-outline-warning m-1" type="submit">Filtrer</button>
                  </div>
                </div>
              </form>
            </div>
        </div>
      </div>
    </header>

   <div class="container">
    <div id="accordion" role="tablist" class="col-md-12">
     <h4 class="index-h4 text-light">Les prochaines sorties vtt !</h4>
    </div>
    <hr class="bg-warning">  
     <?php $resultat = $bdd->query('SELECT * FROM base_rando WHERE date_creation >= CURRENT_DATE ORDER BY date_creation');
            while ($rando = $resultat->fetch())
            {
          ?>
       <div class="card m-1">
          <div class="card-header" role="tab">
           <div class="icon_box float-left"> 
              <div class="top text-secondary"> <?php echo date('d',strtotime($rando['date_creation'])) ;?></div>
              <div class="bott text-secondary"> <?php echo date('M',strtotime($rando['date_creation'])) ;?></div>
              <hr class="bg-warning">
           </div>
            <h5 class="mb-0">
              <a data-toggle="collapse" href="calendrier_randonnees_vtt.php" class="text-decoration-none text-light">&emsp;&emsp;<?php echo $rando['ville'].' - ' .$rando['dept_num'] ;?></a>
            </h5>
            <div class="py-1">
              <span class="text-warning">&emsp;&emsp;&nbsp;  <?php echo $rando['rando'];?></span>
            </div>
            <div class="py-1">
              <span class="text-secondary small">&emsp;&emsp;&emsp; <em>Randonnée vtt</em></span>
            </div>   
            <div>
            </div>
          </div>
       </div>
       <?php
         }
           $resultat->closeCursor();
        ?>
    </div>
  </div>

Ce que je veux

J'aimerais obtenir le résultat suivant : EX insérer le mois d'OCTOBRE qu'une seule fois avec ensuite l'affichage des randonnées du mois d'octobre.

Ce que j'obtiens

J'ai tout tenté mais en vain. le mois d'ocotbre s'affiche autant que j'ai de sorties dans le mois.

6 réponses


A mon avis , il te faut rajouter une condition ...
Tu boucles sur ton resultat , tu testes si le mois est égal au mois en cours => si oui , tu affiche la rando , si non tu affiches le nouveau mois et la/les rando correspondantes etc ...
je ferais un truc du style :
while resultat requete
if ($mois === mois requete ) {
affichage rando
assignation valeur mois de la requete dans une variable ( $mois = $mois_requete par exemple) }
} else {
affichage mois
affichage rando
assignation valeur mois de la requete dans une variable
Fin while

Salut,
Merci pour ton retour mais c'est bien ce qu'il me semblait. Une autre condition est inéluctable.
Je te tiens au courant. Merci et bonne soirée.

Re bonjour, après plusieurs tentatives je ne m'en sors pas. voici de nouveau ce que j'aimerais avoir : votre aide me serait précieuse

<?php
if($req->rowCount() > 0)
{
while ($data = $req->fetch(PDO::FETCH_OBJ)) {

        ?>
       <h1>ici j'aimerais indiquer le mois correspondant ex: novembre</h1>
       puis afficher les randonnées du mois comme ci dessous et repeter cette même opération pour les mois suivants.

   <div class="card m-1">
      <div class="card-header" role="tab">
       <div class="icon_box float-left"> 
          <div class="top text-secondary"> <?php echo date('d',strtotime($data->date_creation)) ;?></div>
          <div class="bott text-secondary"> <?php echo date('M',strtotime($data->date_creation)) ;?></div>
          <hr class="bg-warning">
        </div>
       <style>
        .randoh5 {font-size: 17px;}
        .randoem {font-size: 13px;}
        </style>
        <h5 class="mb-0 randoh5">
         <?php $rando_url = str_replace(' ', '-', $data->rando);?>
         <?php $ville_url = str_replace(' ', '-', $data->ville);?>

         <?php echo '<a href="evenement.php?id='.$data->id.'/'.$rando_url.'-à-'.$ville_url.'-'.$data->dept_nom.'-'.$data->dept_num.'" title="Description de la randonnée sélectionnée" class="text-dark" target="_blank">'; ?>&emsp;&emsp;&nbsp;<?php echo $data->ville.' - ' .$data->dept_num. '</a>';?>
         <?php echo '<a href="evenement.php?id='.$data->id.'/'.$rando_url.'-à-'.$ville_url.'-'.$data->dept_nom.'-'.$data->dept_num.'" title="Description de la randonnée sélectionnée" class="float-right text-warning" target="_blank"><i class="fas fa-arrow-circle-right text-warning"></i></a>'; ?>  
        </h5>
        <div class="py-2">
          <p class="text-warning">&emsp;&emsp;&nbsp;  <?php echo $data->rando;?><br>&emsp;&emsp;&nbsp; <em class="text-secondary randoem">Randonnée vtt</em></p>      
        </div>
      </div>            
   </div>  
   <?php
      } 
    }
    else {
    ?>
    <div class="alert bg-light" role="alert">
    <?php

     echo '<h4 class="alert-heading"><i class="fas fa-exclamation-triangle text-warning"></i> Désolé!</h4>
           <p>Aucune randonnée disponible pour ce département à fin 2019.</p>
           <a href="rando_vtt.php" class="text-warning"><button type="button" class="btn btn-outline-dark"><i class="fas fa-arrow-left text-warning"></i> Retour</a>';
     }
    ?>
    </div>
    <?php
        $req->closeCursor();
    ?>  

I am amazed by the way you have explained things in this article. And i like to share about RSWC Jobs to get complete details.

Bonjour et merci pour votre retour.
Je vais mieux vous expliquer.
Je souhaite afficher sur ma page rando, les mois avec les randos correspondantes.
Mon problème est que lorsque que j'insère le mois, il se répète autant de fois qu'il y a de rando. voici un exemple
Novembre :
La rando
Novembre:
seconde rando
etc......
Moi je souhaiterai ceci :
Novembre
toutes les randos
Décembre
toutes les randos etc...

Suis je plus clair?
Vous avez le code ci dessus

J'aurais bien aimer t'aider mais je comprend rien du tout au code.