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 :

Tri par année [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Mars 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2005
    Messages : 80
    Par défaut Tri par année
    Bonjour,

    je dispose d'une table MySQL contenant une colonne Date sous la forme AAAAMMJJ
    Dans cette table, je répertorie en fait des événements et j'aimerai les classer par année.

    Dans mon menu, j'aimerai afficher le type d'événement ainsi qu'une liste des années disponibles pour ceux-ci (sachant qu'il n'y a pas qu'un événement par an), exemple :

    Triathlons
    - Année 2009
    - Année 2008
    - Année 2007

    Rallyes
    - Année 2008
    - Année 2006
    - Année 2005

    etc...
    une fois qu'on clique sur une année, la liste de ces événements s'affichera sur ma page.

    Merci pour votre aide s'il existe une solution...

  2. #2
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    as-tu essayé la chose suivante ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GROUP BY SUBSTRING(champ_date,0,4)

    un autre truc donc je suis pas sur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GROUP BY YEAR(champ_date)

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Mars 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2005
    Messages : 80
    Par défaut
    j'ai bien un regroupement, mais il ne m'affiche qu'une seule ligne

    j'ai :

    Triathlon
    - Année 2009

    au lieu de

    Triathlon
    -Année 2009
    -Année 2008
    etc...

    A moins que je ne récupère pas bien mes groupes... mais là pareil, je ne sais pas vraiment comment m'y prendre...

  4. #4
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    ben tu fais un double GROUP BY

    GROUP BY annee, categorie

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Mars 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2005
    Messages : 80
    Par défaut
    non, ce que je voulais dire c'est qu'il m'affiche bien toutes mes catégories, mais que dans ces catégories je n'ai que la dernière année qui s'affiche

    ex :

    Triathlon
    -Année 2009

    Rallye
    -Année 2009

    Natation
    -Année 2009

    alors que je devrais avoir

    Triathlon
    -Année 2009
    -Année 2008
    -Année 2007

    Rallye
    -Année 2009
    -Année 2008
    -Année 2007

    Natation
    -Année 2009
    -Année 2008
    -Année 2007

  6. #6
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    meme avec le double GROUP BY ?

  7. #7
    Membre confirmé
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Mars 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2005
    Messages : 80
    Par défaut
    ma ligne ressemble à ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM evenement WHERE discipline='.$id_type.' GROUP BY SUBSTRING(date,0,4)
    pour ajouter le double group by je dois faire ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM evenement WHERE discipline='.$id_type.' GROUP BY SUBSTRING(date,0,4),discipline

  8. #8
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    voui

  9. #9
    Membre confirmé
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Mars 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2005
    Messages : 80
    Par défaut
    Toujours pareil,
    peut être que ça vient de mon code. Voici mon menu entier (c'est un menu de type accordéon où lorsqu'on clique sur la discipline, toutes les années des événements répertoriés dans la table evenement s'affiche, sous chaque discipline :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    //LECTURE DE LA TABLE "DISCIPLINE" -> Liste des disciplines
    $sql_type = 'SELECT * FROM discipline';
    $requete_type = mysql_query($sql_type , $db);
    while ($ligne_type=mysql_fetch_array($requete_type))
    {
    	$id_type=$ligne_type['id'];
    	$nom_type=$ligne_type['nom'];
     
    	if (!isset($_GET['sport'])) { $menuopen = ''; }
    	else {
    		if ($_GET['sport'] == $id_type) { $menuopen = ' open_at_load'; } else { $menuopen = ''; }
    		 }
     
    	echo '<ul class="navigation">';
    	echo '<li class="toggleSubMenu" style="border-bottom: 1px dashed #000000;"><span>&raquo;&nbsp;'.$nom_type.'</span><ul class="subMenu'.$menuopen.'">';
     
    	//LECTURE DE LA TABLE "EVENEMENT" -> Liste des meetings => Récupération et regroupement des années présentes dans cette discipline
    	$sql_galerie = 'SELECT date FROM evenement WHERE discipline="'.$id_type.'" GROUP BY SUBSTRING(date,0,4),discipline ';
    	$requete_galerie = mysql_query($sql_galerie , $db);
    	while ($ligne_galerie=mysql_fetch_array($requete_galerie))
    		{
    			$date_galerie=$ligne_galerie['date'];
     
    			$galerie_year = substr($date_galerie, 0, 4);
     
    			echo '<li class="subMenu"><a href="main.php?sport='.$id_type.'&annee='.$galerie_year.'">&middot;&nbsp;Ann&eacute;e '.$galerie_year.'</a></li>';
    		}
    	echo '</ul></li><br>';
     
    }
    echo '</ul>';

  10. #10
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Il me semble que si tu souhaites respecter le code HTML et donc que le javascript fonctionne, tu dois tout simplement faire ça en 2 requetes

    -> 1ere requete tu récup toutes tes disciplines => GROUP BY discipline
    -> 2ieme requete les années -> GROUP BY annee

    (c'est marrant, il me semble que j'ai déjà utilisé le même script que toi )

    héhé trouvay !

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
        <div id="menu">
    		<ul class="idTabs">
            <?php
    			$sql = "SELECT * FROM ".$_PRE."categories WHERE refer = '0' AND active = '1' ORDER BY position ASC";
    			$q = $db->query($sql) or die($db->print_last_query());
    			while( $r = mysql_fetch_assoc($q) ) {
    				$selected = "";
    				$sql = "SELECT * FROM ".$_PRE."categories WHERE refer = '".$r['id_categorie']."' ORDER BY position ASC";
    				$q2 = $db->query($sql) or die($db->print_last_query());
    				if( mysql_num_rows($q2) > 0 ) {
    					echo '<li class="toggleSubMenu"><span>'.$r['name'].'</span>';
    					echo '<ul class="subMenu" style="display:none;">';
    					while( $r2 = mysql_fetch_assoc($q2) ) {
    						$selected = "";
    						if( isset($_GET['cat']) && $_GET['cat'] == $r2['id_categorie'] ) {
    							$selected = ' class="selected" ';
    						}
    						//echo '<p>'.$_GET['cat'].' == '.$r2['id_categorie'].'</p>';
    						$link2 = array("module" => $r['name'], "cat" => $r2['id_categorie']);
    						if( $URL_R ) {
    							$link2['name'] = $r['name'];
    						}
    						echo '<li '.$selected.'><a href="'.make_link($link2).'">'.$r2['name'].'</a></li>';
    					}
    					echo '</ul>';
    				} else {
    					if( $_GET['module'] == $r['name'] ) {
    						$selected = ' class="selected" ';
    					}
    					//echo '<p>'.$_GET['module'].' == '.$r['name'].'</p>';
    					$link = array("module" => $r['name']);
    					if( $URL_R ) {
    						$link['name'] = $r['name'];
    					}
    					echo '<li '.$selected.'><a href="'.make_link($link).'">'.$r['name'].'</a>';
    				}
    				echo '</li>';
    			}
    		?>
           	</ul>
        </div>

  11. #11
    Membre confirmé
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Mars 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2005
    Messages : 80
    Par défaut
    pfff je commence vraiment à désespérer...
    marche toujours pas, ou alors je ne récupère pas ce qu'il faut

    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
     
    //LECTURE DE LA TABLE "EVENEMENT" -> Liste des meetings
    	$sql_discipline = 'SELECT discipline,date FROM evenement WHERE discipline="'.$id_type.'" GROUP BY discipline';
    	$requete_discipline = mysql_query($sql_discipline , $db);
    	while ($ligne_discipline=mysql_fetch_array($requete_discipline))
    	{
    		$year = substr($ligne_discipline['date'], 0, 4);
    		$discipline = $ligne_discipline['discipline'];
     
    		$sql_galerie = 'SELECT date FROM evenement WHERE discipline="'.$discipline.'" GROUP BY SUBSTRING(date,0,4)';
    		$requete_galerie = mysql_query($sql_galerie , $db);
    		while ($ligne_galerie=mysql_fetch_array($requete_galerie))
    		{
    			//Il faudrait qu'ici je puisse récupérer mes groupes d'années 
    			$date_galerie=$ligne_galerie['date'];
    			echo '<li class="subMenu"><a href="main.php?sport='.$id_type.'&annee='.$galerie_year.'">&middot;&nbsp;Ann&eacute;e '.$galerie_year.'</a></li>';
    		}
    	}

  12. #12
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    et ça t'affiche quoi là ?

  13. #13
    Membre confirmé
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Mars 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2005
    Messages : 80
    Par défaut
    là ça ne m'affiche que la dernière année aussi...

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

Discussions similaires

  1. [MySQL] tri par date (année)
    Par dedel53 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/02/2011, 15h05
  2. trié par année
    Par David1259 dans le forum IHM
    Réponses: 1
    Dernier message: 23/12/2008, 18h11
  3. Ordre de tri par mois et années dans une requête analyse croisée
    Par garsflo dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 21/11/2007, 21h11
  4. Réponses: 3
    Dernier message: 07/09/2007, 15h29
  5. Problème de tri sur les dates par année puis mois
    Par rob2-9 dans le forum Access
    Réponses: 26
    Dernier message: 11/08/2006, 11h04

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