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 :

Comment classer mes données par mois


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 165
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 165
    Par défaut Comment classer mes données par mois
    Bonjour,
    J'ai un petit souci.
    J'ai plusieurs manifestations enregistrées et pour chaque enregistrement j'ai un champs 'date'
    2009-06-21
    J'aimerais afficher tous les mois pour lesqueles un enregistrement a été fait et les classer par ordre croissant.

    Pourcela j'ai fait ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $sql_by_month = "SELECT DISNTINCT fd_date_start FROM manifestations ORDER BY fd_date_start ASC";
    	$query_by_month = mysql_query($sql_by_month)or die(mysql_error());
     
    	while($data_by_month = mysql_fetch_assoc($query_by_month)){
    		$month = explode("-",$data_by_month['fd_date_start']);
    		$month = $month[1];
    		echo $tb_month[$month].', ';
    	}
    Mon problème c'est que mon DISTINC ne fonctionne pas car dans dans mon champs fd_date_start je peux avoir 3 enregistrements pour le mois de juin, mais a des jours différents. Donc il m'affichera 3x Juin alors que je souhaite qu'il m'affiche une fois Juin meme s'il y a 100 enregistrements a des jours ou des années différents

    Mon deuxieme problèmes, si j'ai un renegistrement en 21 Juin 2009 et en 2 janvier 2010, il va me classer Juin avant Janvier, alors que je souhaite que Janvier soit avant Juin quelque soit l'année.

    Comment puis-je ordrer mes enregistrements de maniere a ce qu'il prenne en compte uniquement le mois dans un champs 'date'?

    Merci

  2. #2
    Membre Expert
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Par défaut
    et avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $sql_by_month = "SELECT DISNTINCT(DATE_FORMAT(fd_date_start, '%m')) as mois FROM manifestations ORDER BY mois ASC";
    $query_by_month = mysql_query($sql_by_month)or die(mysql_error());
     
    while($data_by_month = mysql_fetch_assoc($query_by_month)){
    	$month = $data_by_month['mois'];
    	echo $tb_month[$month].', ';
    }

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 165
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 165
    Par défaut
    Super ca marche tres bien comme ceci
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    	$sql_by_month = 'SELECT DISTINCT(DATE_FORMAT(fd_date_end, "%m")) as mois FROM manifestations WHERE fd_date_end > "'.date("Y-m-d").'" ORDER BY mois ASC';
    	$query_by_month = mysql_query($sql_by_month)or die(mysql_error());
     
     
    	while($data_by_month = mysql_fetch_assoc($query_by_month)){
    		$month = $data_by_month['mois'];
    		//$month = $month[1];
    		echo '<a href="index.php?que-faire-ce-mois='.$month.'" title="Que faire au mois de '.$tb_month[$month].'">';
    		echo $tb_month[$month];
    		echo '</a>  ';
    	}

    Merci.

    Mais j'aimerai compliqué un peut la chose. J'aimerais ajouter le nombre d'entrée qu'il trouve , par mois en mettant le nombre en parantese avant le mois comme ceci:

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    		echo '(6)<a href="index.php?que-faire-ce-mois='.$month.'" title="Que faire au mois de '.$tb_month[$month].'">';
    		echo $tb_month[$month];
    		echo '</a>  ';


    J'ai deja fait ceci en utilisant COUNT et GROUP BY.
    Voici un exemple qui marche
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $sql = 'SELECT COUNT(fd_city_manif) as nbre,fd_city_manif,fd_date_end,fd_nom_manif,id,fd_canton_manif FROM manifestations WHERE fd_date_end > "'.date("Y-m-d").'" AND fd_canton_manif LIKE "'.$key.'" AND fd_actived LIKE "1" GROUP BY fd_city_manif ORDER BY fd_city_manif ASC';
    	$query = mysql_query($sql)or die(mysql_error());
    	#$nb = mysql_num_rows($query);
     
    	while($data = mysql_fetch_assoc($query)){		
    			echo '('.$data['nbre'].') <a title="'.stripslashes($data['fd_nom_manif']).'" href="index.php?manifestations-et-loisirs-a='.utf8_encode($data['fd_city_manif']).'&sur='.$data['fd_canton_manif'].'">'.utf8_encode($data['fd_city_manif']).'</a><br>';		
    	}

    Je me suis donc basé la dessus et j'ai modifié mon code pour essayer d'avoir un resultat identique mais ca ne marche pas.
    Voic ce que j'ai essayé de faire, ou est mon erreur?
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $sql_by_month = 'SELECT DISTINCT(DATE_FORMAT(fd_date_end, "%m")) as mois, COUNT(fd_date_end) as nbre FROM manifestations WHERE fd_date_end > "'.date("Y-m-d").'" GROUP BY fd_date_end ORDER BY mois ASC';
     
    	$query_by_month = mysql_query($sql_by_month)or die(mysql_error());
     
     
    	while($data_by_month = mysql_fetch_assoc($query_by_month)){
    		$month = $data_by_month['mois'];
     
    		echo '('.$data_by_month['nbre'].')<a href="index.php?que-faire-ce-mois='.$month.'" title="Que faire au mois de '.$tb_month[$month].'">';
    		echo $tb_month[$month];
    		echo '</a>  ';
    	}

    Il me compte bien mais completement faux.
    Par exemple, il m'affiche depuis deux fois le mois d'aout alors que j'ai 14 resultats trouvé.
    Au mois de juillet, j'ai 5 entrées, je devrais donc avoir un truc du genre:
    (5) juillet, (14) août
    mais j'ai ceci
    (1)Mars (1)Avril (1)Juillet (2)Juillet (1)Août (2)Août (1)Septembre (1)Octobre (1)Novembre
    Une idée?
    Milles merci

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 165
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 165
    Par défaut
    Avez vous uen idée pour ma'ider a résoudre mon problème?
    Pour résumé.
    Ceci fonctionne super bien (il me permet de classer mes données par mois selon un champ de type date)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql_by_month = 'SELECT DISTINCT(DATE_FORMAT(fd_date_end, "%m")) as mois FROM manifestations WHERE fd_date_end >= "'.date("Y-m-d").'" ORDER BY mois ASC';
    Cependant jai besoin que devant chauqe mois il y le nombre de resultat trouvé, par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (8) aout (5) septembre (2)décembre
    J'ai un code qui me permet de le faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql_by_month = 'SELECT COUNT(fd_date_end)) as mois, fd_date_end FROM manifestations WHERE fd_date_end >= "'.date("Y-m-d").'" GROUP BY fd_date_end ORDER BY mois ASC';
    Mon probleme c'est que je n'arrive pas "fusionner" le deuxieme avec le premier en sachant que le premier doit cotinuer a agir comme il le fait deja, mais avec les nombre en plus

    Merci

Discussions similaires

  1. comment afficher les données par mois à partir d'un champs date ?
    Par M.a.n.u. dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 18/05/2008, 09h36
  2. [SOLARIS] Comment partager mes données Windows?
    Par katou dans le forum Solaris
    Réponses: 1
    Dernier message: 13/04/2007, 13h31
  3. Comment stocker mes données coté serveur ?
    Par formentor dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 19/12/2006, 12h23
  4. Comment grouper une requête par mois ?
    Par Le Pharaon dans le forum Langage SQL
    Réponses: 6
    Dernier message: 29/06/2005, 12h01
  5. Comment classer les données d'une TStringList ?
    Par cmickyplus dans le forum Langage
    Réponses: 2
    Dernier message: 25/06/2005, 16h44

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