8768 sujets

Développement web côté serveur, CMS

Pages :
(reprise du message précédent)

Là l'idée ça va être de stocker les données que tu récupères dans un tableau puis de faire le traitement du tableau et afficher les résultats.

while ($donnees1 = $reponse1->fetch(PDO::FETCH_ASSOC))
                                        {
                   $MonTableauAtraiter[]=$donnees1;
}
                                        $reponse1->closeCursor();


Je regardes le traitement, car celui-ci m’intéresse pour me propre dev.
Bonjour,
Un peu rébarbatif à faire, mais voici une solution qui consiste à ranger les dates dans un tableau indexé par les dates seules (et directement formatées pour se simplifier la vie), et qui contient un tableau des heures (là aussi, directement formatées).
        <div class="spoiler" id="spoiler<?php echo $donnees['id_event']; ?>">
          <p>
          <?php 
          $dates=array();
          while ($donnees1 = $reponse1->fetch(PDO::FETCH_ASSOC)){
            $timeStringDate=strtotime($donnees1['seances']);
            $dt=date ('D d F',$timeStringDate);
            if(!array_key_exists($dt, $dates)){
              $dates[$dt]=array();
            }
            $dates[$dt][]=date ('H\hi',$timeStringDate);
          }
          $reponse1->closeCursor();
          foreach ($dates as $day => $hours) {
            echo $day . " à ";
            $last="";
            if(count($hours)>1){
              $last=" et ".array_pop($hours);
            }
            echo join(", ",$hours).$last."<br>";
          }
          ?>
          </p>
        </div>

Pas pu tester mais l'esprit y est.
Modifié par Seven tears (26 Apr 2017 - 17:56)
Modérateur
p.s. :


date ('D',$timeStringDate)." ".date ('d',$timeStringDate)." ".date ('F',$timeStringDate)

peut s'écrire:


date('D d F',$timeStringDate);
Seven tears a écrit :
Bonjour,
Un peu rébarbatif à faire, mais voici une solution qui consiste à ranger les dates dans un tableau indexé par les dates seules (et directement formatées pour se simplifier la vie), et qui contient un tableau des heures (là aussi, directement formatées).
        &lt;div class="spoiler" id="spoiler&lt;?php echo $donnees['id_event']; ?&gt;"&gt;
          &lt;p&gt;
          &lt;?php 
          $dates=array();
          while ($donnees1 = $reponse1-&gt;fetch(PDO::FETCH_ASSOC)){
            $timeStringDate=strtotime($donnees1['seances']);
            $dt=date ('D',$timeStringDate)." ".date ('d',$timeStringDate)." ".date ('F',$timeStringDate);
            if(!array_key_exists($dt, $dates)){
              $dates[$dt]=array();
            }
            $dates[$dt][]=date ('H',$timeStringDate)."h".date ('i',$timeStringDate);
          }
          $reponse1-&gt;closeCursor();
          foreach ($dates as $day =&gt; $hours) {
            echo $day . " à ";
            $last="";
            if(count($hours)&gt;1){
              $last=" et ".array_pop($hours);
            }
            echo join(", ",$hours).$last."&lt;br&gt;";
          }
          ?&gt;
          &lt;/p&gt;
        &lt;/div&gt;

Pas pu tester mais l'esprit y est.


J'aime bien ta solution, plus simple que ce que j'avais en tête. Smiley sweatdrop
kustolovic a écrit :
p.s. :


date ('D',$timeStringDate)." ".date ('d',$timeStringDate)." ".date ('F',$timeStringDate)

peut s'écrire:


date('D d F',$timeStringDate);

Je m'étais fait la réflexion en lisant le sujet mais j'ai oublié ensuite, c'est corrigé, merci (et idem pour l'heure au prix d'un antislash).
Bonsoir.

Seulement à titre informatif : le formatage de la date peut se faire aussi au moment de la requête. Sur mon petit site, c'est :
SELECT .... DATE_FORMAT(A.date_creation, '%d %M %Y') AS date_creation ....


Mais on peut tout aussi bien faire :
SELECT .... DATE_FORMAT(A.date_creation, 'Posté le %d %M %Y') AS date_creation ....


Smiley smile
Modifié par Zelena (26 Apr 2017 - 20:17)
Bonjour à tous,

Merci de votre aide, la solution de Seven tears marche à la perfection !
Merci aussi a gandalfblanc qui m'a bien accompagné.

Super forum.
Pages :