Tri articles par jour sur une durée d'une semaine

  • Auteur de la discussion Auteur de la discussion mikaweb
  • Date de début Date de début
WRInaute discret
Bonjour,

Je suis actuellement en train d'essayer d'avoir une page actualité où je sélectionne tous les articles parus entre la date d'aujourd'hui et 7 jours.

Donc ma requete :
Code:
SELECT id, titre, image_une, accroche, date_validation, valide, vus FROM articles WHERE TO_DAYS(NOW()) - TO_DAYS(date_validation) < 7 AND valide = 1 ORDER BY date_validation DESC

Puis à partir de là, je dois dire que je suis incapable d'aller plus loin vu que je bloque complètement sur le raisonnement à adopter.

J'aimerais un truc hiérarchiser de la sorte.

Lundi 19 mai 2008

- News 1
- News 2
- News 3

Dimanche 18 mai 2008

- News 4

Samedi 17 mai 2008

- News 5
- News 6


etc...

J'ai cherché sur le net pour tenter de trouver un système similaire afin de m'aider mais sans réussite c'est pourquoi je viens sur WRI demander un chti coup de pouce :lol:

Merci
 
WRInaute passionné
du créé une variable last_date.
si last_date est différente de la date de la news tu affiches la date puis la news et tu modifie last_date avec la date de la news sinon tu affiches juste la news.
 
WRInaute discret
Voila j'ai bien avancé, il ne me reste plus qu'un petit souci et je buche dessus depuis plusieurs heures... :(

Code:
<?php
while($breves = mysql_fetch_assoc($result)){

	$dateBdd = $breves['date_breve'];

	list($date, $time) = explode(" ", $dateBdd);
	list($year, $month, $day) = explode("-", $date);
	list($hour, $min, $sec) = explode(":", $time);

	if(date('Y-m-d') == $date) {
		$date2 = '<ul><li><h3 class="breves">Aujourd\'hui</h3><p>'.$hour.':'.$min.' - <a href="">'.htmlspecialchars($breves['titre_breve']).'</a></p></li></ul>';
	}
	elseif(datehier() == $date) {
		$date2 = '<ul><li><h3 class="breves">Hier</h3><p>'.$hour.':'.$min.' - <a href="">'.htmlspecialchars($breves['titre_breve']).'</a></p></li></ul>';
	}
	else {
		$date2 = '<ul><li><h3 class="breves">'.trans_date($date,2).'</h3><p>'.$hour.':'.$min.' - <a href="">'.htmlspecialchars($breves['titre_breve']).'</a></p></li></ul>';
	}
	echo $date2;
}
?>
Là il m'affiche à chaque fois au dessus du titre de l'article la date et ne regroupe pas les articles par jours.

Ou est ce que je dois y mettre une condition, ou bien une nouvelle boucle pour qu'il ne m'affiche qu'une seule fois la date.

Merci :wink:
 
WRInaute accro
le requete vient de myphpannu... le principe est simple : la requete va regrouper les articles par jour et depuis tant de jour. La j'ai mis 1 an...

WHERE date_validation BETWEEN DATE_SUB(CURRENT_DATE,INTERVAL 365 DAY) AND DATE_SUB(CURRENT_DATE,INTERVAL 0 DAY) ORDER BY date_validation DESC

ensuite dans ton php tu listes et a chaque fois que tu change de jour, tu peut l'afficher de cette maniere:

Code:
$date_test = ""; //pour la comparaison dans le while
 while ($row = mysql_fetch_array($resultat))
{
   // date
   //on convertit la date en version francaise
        $date = $row["date_validation"];
        if ($date_test != $date)
        //changement de date => on affiche le jour
        {
            //separateur
            if (!empty($date_test))
                echo "\n";
            //conservation de la date pour la prochaine comparaison
            $date_test = $date;
            $date =  MySQLDateToExplicitDate($date);

            //on affiche la date
            ?>
            <h3><?php echo "la date $date"; ?></h3>
            <?php
        }


   les champs

  }
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut