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 :

regrouper les données d'une base par date [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club Avatar de lisa.a
    Inscrit en
    Mai 2004
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 95
    Points : 49
    Points
    49
    Par défaut regrouper les données d'une base par date
    Bonjour
    j'ai une base de données avec des évenements et des timestamps pour chaque. Pour l'instant je récupère ces données en les classant par date et j'affiche par exemple


    23/01 19h30 evenement1
    23/01 22h30 evenement2
    25/01 19h30 evenement3
    29/01 22h30 evenement4
    29/01 23h30 evenement5

    Ce que je voudrais c'est regrouper les informations que je récupère par date pour pouvoir afficher

    Le 23/01
    19h30 evenement1
    22h30 evenement2

    Le 25/01
    19h30 evenement3

    Le 29/01
    22h30 evenement4
    23h30 evenement5

    Je n'ai absolument aucune idée de comment faire.
    Je pense qu'il me faudrait une fonction qui compare 2 dates genre is_same_day (time1,time2)
    qui compare 2 dates sans tenir compte de l'heure
    je n'ai pas trouvé cette fonction.
    Mais même en dehors de ça rien qu'au niveau de l'algo je ne sais pas trop comment m'y prendre.
    Je demande donc un peu d'aide
    merci d'avance
    ++
    Lisa

  2. #2
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    Bonsoir ! Je te propose ca en théorie:

    - Tu explode sur un espace ainsi tu a la date d'un côté et l'heure de l'autre. Quand tu parcours, si La date = à la date d'avant alors on affiche les heures...

    Sinon pour le trie : Ben tu as un timestamp donc un ORDER BY dessus et le tour est joué
    ►Ne pas oublier le

  3. #3
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Bonjour,

    J'utilise souvent de genre de manip pour trier des listes :

    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
    22
    23
     
    $old = ""; // ici on stocke la date du titre de la liste
    $i = 0;
     
    while($row = mysql_fetch_assoc($result)){
     
    if($row['ton_champ_date'] != $old){
     
       if($i != 0){echo "</ul>";} // fermeture de la liste
     
       echo "<p><strong>Le : " . $row['ton_champ_date'] . " : </strong></p>" // titre de la liste
          . "<ul>"
          . "<li>" . $row['ton_champ_heure']  . " : " . $row['ton_champ_evenement']  . "</li>"; // liste des évenements
     
       $old = $row['ton_champ_date'] ;
    }
    else{
     
       echo "<li>" . $row['ton_champ_heure']  . " : " . $row['ton_champ_evenement']  . "</li>";
    }
    $i++;
    }
    echo "</ul>" // pour fermer ta dernière liste
    C'est un exemple : je ne l'ai pas testé et il faudra surement que tu le modifies (champs).

    ça devrait te générer :




    Le 01/2008 :
    • 10h30 : evenement 1
    • 11h30 : evenement 2
    Le 02/2009 :
    • 05h15 : evenement x
    • 10h25 : evenement y
    • 12h00 : evenement z
    • etc
    Évidemment, comme l'a dit Obito, tu tries ta requête avec ORDER BY ton_champ_date ASC ou DESC .

  4. #4
    Membre du Club Avatar de lisa.a
    Inscrit en
    Mai 2004
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 95
    Points : 49
    Points
    49
    Par défaut
    Excellent !
    j'adore décidément ce forum !
    une réponse pour l'idée qui me manquait (faire l'explode) pour comparer 2 dates, et une réponse pour l'algo (avec l'astuce d'initialiser une date bidon avant l'appel du while).
    Ca marche impec !!
    merci beaucoup
    à très bientôt sûrement pour d'autres questions
    +++
    Lisa

  5. #5
    Membre régulier Avatar de stomerfull
    Inscrit en
    Septembre 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 307
    Points : 122
    Points
    122
    Par défaut
    Bonjour à tous

    je me permet de répondre sur cette forum car ça m'a beaucoup aidé sur le regoupement des archives d'un chat

    j'ai fait comme ça

    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
    $temp=0
    while( $result = mysql_fetch_array($query, MYSQL_ASSOC) )
    {					
          //retourner juste l'année
         $tabAnnee = explode('-',$result['date']);
         if($tabAnnee[0]!=$temp)
        {
     
     
       	<div id="style">
       	    <h3>Archives du <?php echo$tabAnnee[0];?></h3>                       
       		$temp = $tabAnnee[0] ;						
       	 </div> 
          }
        //Affichage de toutes les discussions associées à l'année
       echo '<div>   					       
        <img src="../images/deco/puce.gif"/>&nbsp;&nbsp;Discusion du : 
                           					'.$result['date'].'
     
                            	  </div>';				
    }
    pas besoin de $i et de else
    Vive la communauté en encore merci
    :-)

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

Discussions similaires

  1. [MySQL] Afficher les données de plusieurs tables par date en une seule liste.
    Par Romanodi13 dans le forum PHP & Base de données
    Réponses: 22
    Dernier message: 08/09/2011, 21h45
  2. Grouper les données d'une listview par date
    Par mounaje dans le forum VB.NET
    Réponses: 3
    Dernier message: 08/12/2010, 14h23
  3. [MySQL] afficher les données d'une base semaine par semaine
    Par lisa.a dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 30/04/2009, 21h49
  4. [MySQL] Modification des données d'une base par les membres
    Par pod1978 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 22/03/2006, 17h25
  5. Réponses: 2
    Dernier message: 11/10/2005, 09h15

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