IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Gestion de news par journées [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Points : 9
    Points
    9
    Par défaut Gestion de news par journées
    Bonjour,

    je cherche actuellement à mettre en place un système de news triant ces dernières par journées, dans le style de PCInpact ou MacGeneration par exemple.

    Schématiquement, je cherche à les mettre sous la forme :

    dernière date
    dernière news du dernier jour
    avant-dernière news du dernier jour
    ...

    avant-dernière date

    dernière news de l'avant-dernier jour
    avant-dernière news de l'avant-dernier jour
    ...


    Après quelques heures de recherche, je n'ai pas trouvé d'idées pour m'aider à résoudre ce groupement de news par journées de publication.

    Je les récupère sans problèmes avec un "ORDER BY date DESC", mais ceci ne me permet pas de les regrouper par journées.

    Mes news sont rangées dans une table MySQL structurée de cette façon:


    Quelqu'un aurait-il une idée pour me mettre sur la voie ?

    Merci d'avance.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 21
    Points : 17
    Points
    17
    Par défaut solution parmis d'autres
    la première chose à laquelle je pense pour ta table,

    une fois la récupération ordonnée des informations faite,
    je suppose que tu affiche le tout par l'intermédiaire d'une boucle.

    Et à ce moment là, tu stock dans une variable temporaire la valeur de la date la plus récente, et compare cette variable avec la valeur de la date de l'entrée suivante.
    Ainsi, tant que la date est identique, c'est le même groupe
    et en cas de différence, tu met à jour la variable temporaire et affiche un second groupe.

    Cordialement
    Greg.

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    Si je comprends bien, une comparaison de ce style fonctionnerait ?

    (je ne pourrais tester que ce soir)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    $sql="SELECT * FROM table ORDER BY date DESC";
    $req=mysql_query($sql) or die ('ERROR SQL !<br />'.$sql.'<br />'.mysql_error());	
     
    while($data=mysql_fetch_assoc($req)){
     
    	$dateArt=date("dmY",strtotime($data["date"]));
     
    	if(empty($showDate)){
    		echo (date("l\, F dS Y",strtotime($data["date"])));
    		$showDate = $dateArt;
    	} else if((isset($showDate)) && ($showDate == $dateArt)){
    		echo ("");
    		$showDate = $dateArt;
    	} else {
    		echo (date("l\, F dS Y",strtotime($data["date"])));
    		$showDate = $dateArt;
    	}
     
    	echo ("{$data["title"]}");
    }

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    oui je pense

  5. #5
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    Merci de ton aide, ça marche impec !

    Pour ceux que ça intéresse, j'ai juste eu à mettre le tout dans des paragraphes dans une div pour mieux gérer l'affichage, sinon ça créeait des trous quand la date n'est pas affichée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    echo ("<div class=\"newsDay\">");
    		$dateArt=date("dmY",strtotime($data["date"]));
    		if(empty($showDate)){
    			echo ("<p>".date("l\, F dS Y",strtotime($data["date"]))."</p>");
    			$showDate = $dateArt;
    		} else if((isset($showDate)) && ($showDate == $dateArt)){
    			echo ("");
    			$showDate = $dateArt;
    		} else {
    			echo ("<p>".date("l\, F dS Y",strtotime($data["date"]))."</p>");
    			$showDate = $dateArt;
    		}
    echo ("</div>");
    avec le CSS :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    .newsDay p{
    	margin-top: 10px;
    	margin-bottom: 6px;
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Installation] Gestion des droits par dossier ?
    Par Glob dans le forum CVS
    Réponses: 3
    Dernier message: 13/03/2006, 15h04
  2. [VB6] gestion des feuilles par des onglets
    Par kitsune dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 04/02/2006, 16h17
  3. Gestion d'arbres par représentation intervallaire
    Par brice01 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 23/01/2006, 21h20
  4. gestion d'alarme par SMS
    Par kitsune dans le forum Développement
    Réponses: 2
    Dernier message: 19/07/2005, 12h31
  5. Réponses: 9
    Dernier message: 17/04/2004, 16h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo