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 :

Compter nombre d'enregistrements par mois en fonction d'une date de type [2022-12-15] [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    fais ce que je peux en n'informatique
    Inscrit en
    Janvier 2012
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : fais ce que je peux en n'informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2012
    Messages : 96
    Par défaut Compter nombre d'enregistrements par mois en fonction d'une date de type [2022-12-15]
    Bonjour,
    Je construits des statistiques d'affluence sur mon site.
    Lorsque qu'un utilisateur se connecte, j'inserts une ligne dans ma table connexion_membre, avec un champs connexion_date sous forme aaaa-mm-jj

    ce code
    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
     
    $query=$db->prepare('SELECT connexion_date, COUNT(connexion_date) AS nombre_date
    FROM connexion_membre
    GROUP BY connexion_date');
    $query->execute();
    echo'<table>';
    while ($donnees=$query->fetch())
    {	
    	$date = date_parse($donnees['connexion_date']);
    	$mois = $date['month'];
    	$annee = $date['year'];
    	$annee_mois = $mois.'/'.$annee;
    	if( $variable != $annee_mois )
    	{	
    		$variable = $annee_mois;
    		echo '<tr><td class="vide" style="width:50px; text-align:right">'.$annee_mois.'</td>'; echo'<td class="vide" style="width:30px; text-align:right">'.$i.'</td>';
    	}
    	if (($donnees['nombre_date']) > 0 )
    	{		
    		echo'<td style="width:20px; text-align:right">'.$donnees['nombre_date'].'</td>';
    	}
    }
    echo'</tr></table><br />';
    permet de compter le nombre de connexion, jour par jour, mois par mois (vous pouvez constater l'absence de connexions certain jours)
    Nom : Capture.PNG
Affichages : 98
Taille : 13,7 Ko


    Je souhaiterai obtenir ce type de résultat, c'est à dire le nombre de connexions mois par mois
    Nom : Capture - Copie.PNG
Affichages : 93
Taille : 14,5 Ko


    voici comment est construit ma table
    Nom : Capture 2.PNG
Affichages : 94
Taille : 6,8 Ko


    Bien entendu, j'ai essayé de trouver des solutions, mais je ne suis pas expert en php et non plus en développement

    Merci d'avance de votre aide

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 518
    Par défaut
    Bonjour,

    Pouvez-vous nous montrer la table de données et l'exporter dans un fichier joint pour tester ?

  3. #3
    Membre confirmé
    Homme Profil pro
    fais ce que je peux en n'informatique
    Inscrit en
    Janvier 2012
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : fais ce que je peux en n'informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2012
    Messages : 96
    Par défaut
    Bonjour,

    Merci de votre intervention

    C'est à dire ?
    le contenu de la table dans un fichier txt ou sa structure ?

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 518
    Par défaut
    Allez dans phpmyadmin, sélectionnez votre base de donnée puis la table, puis cliquez sur Exporter, une page apparait, descendez un peu en bas et appuyez sur Exécuter.

    Un fichier .sql sera normalement téléchargé, mettez le dans la discussion comme fichier joint.

  5. #5
    Membre confirmé
    Homme Profil pro
    fais ce que je peux en n'informatique
    Inscrit en
    Janvier 2012
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : fais ce que je peux en n'informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2012
    Messages : 96
    Par défaut
    je n'ai pas phpmyadmin mais voici en pièce jointe l'export de la structure de la table et le contenu
    Fichiers attachés Fichiers attachés

  6. #6
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 518
    Par défaut
    Ok, la table est crée mais une erreur PHP est levée concernant les valeurs de $variable et $i vu qu'elles ne sont pas définies dans le script que vous avez posté.

    A quel moment vous les initialisez ?

  7. #7
    Membre confirmé
    Homme Profil pro
    fais ce que je peux en n'informatique
    Inscrit en
    Janvier 2012
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : fais ce que je peux en n'informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2012
    Messages : 96
    Par défaut
    c'est un test que je n'ai pas entièrement supprimé je l'ai supprimé


    n'existe pas lors de la première lecture du code,
    elle est initié dans le premier if, ce qui permet de donner le résultat mois par mois.

    Je viens d'initier la $variable juste au dessus du premier if

    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
     
    $query=$db->prepare('SELECT connexion_date, COUNT(connexion_date) AS nombre_date
    FROM connexion_membre
    GROUP BY connexion_date');
    $query->execute();
    echo'<table>';
    while ($donnees=$query->fetch())
    {	
    	$date = date_parse($donnees['connexion_date']);
    	$mois = $date['month'];
    	$annee = $date['year'];
    	$annee_mois = $mois.'/'.$annee;
    	$variable == "";
    	if( $variable != $annee_mois )
    	{	
    		$variable = $annee_mois;
    		echo '<tr><td class="vide" style="width:50px; text-align:right">'.$annee_mois.'</td>';
    	}
    	if (($donnees['nombre_date']) > 0 )
    	{
    		echo'<td style="width:20px; text-align:right">'.$donnees['nombre_date'].'</td>';
    	}
    }
    echo'</tr></table><br />';
    ça ne change rien à ma problématique. Car je souhaite compter le nombre de connexion par mois

  8. #8
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 602
    Billets dans le blog
    10
    Par défaut
    pour le nombre de connexions par mois, tout simplement

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select month(connexion_date) as mm
         , count(*)  
    from connexion_membre
    group by month(connexion_date)

    [EDIT] quelques remarques supplémentaires
    • le moteur MYISAM est obsolète et il ne gère pas l'intégrité référentielle !
    • la contrainte UNIQUE sur la colonne `connexion_id` est inutile, puisqu'il s'agit de la PK qui par définition est unique

  9. #9
    Membre confirmé
    Homme Profil pro
    fais ce que je peux en n'informatique
    Inscrit en
    Janvier 2012
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : fais ce que je peux en n'informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2012
    Messages : 96
    Par défaut
    Pour la colonne connexion_id, effectivement, c'est une erreur de conception
    Pour le moteur MYISAM, je ne le savais pas. Je vais remettre à jour un peu plus tard.

    Concernant la requête, l'extraction du mois se fait bien mais :
    - je ne vois pas comment afficher le nombre de connexions par jour
    - comment je vais pouvoir distinguer les mois de l'année 2022 par les mois de 2023 ?

  10. #10
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 518
    Par défaut
    Bonjour,

    J'ai fait un script vite fait, et je pense qu'il retourne le résultat prévu :
    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
    $query=$db->query('SELECT distinct(date_format(connexion_date,"%m-%Y")) as dateConnexion FROM connexion_membre order BY connexion_date');
    echo'<table><thead><tr><td>Jours</td>';
    for($i=1;$i<=31;$i++){
    	echo '<td>'.($i<10?'0':'').$i.'</td>';
    	if($i===31) echo "<td>Totaux</td></tr></thead><tbody>";
    }
    while ($donnees=$query->fetch()){	
    	//$month=date('m',strtotime("01-".$donnees['dateConnexion']));
    	//$year=date('Y',strtotime("01-".$donnees['dateConnexion']));
    	//$nbrDaysOfMonth=cal_days_in_month(CAL_GREGORIAN,$month,$year); si vous voulez récupérer le nombre de jour du mois
    	echo "<tr><td>".$donnees['dateConnexion']."</td>";
    	$somme=0;
    	for($day=1;$day<=31;$day++){
    		$req='select count(membre_id) as count_ from connexion_membre 
    		where date_format(connexion_date,"%d-%m-%Y")="'.($day<10?"0":"").$day.'-'.$donnees['dateConnexion'].'"';
    		$stmt=$db->query($req);
    		while($d=$stmt->fetch()){
    			echo "<td>".($d['count_']==0?"":$d['count_'])."</td>";
    			$somme+=$d['count_'];
    		}
    		if($day==31) echo "<td>".$somme."</td></tr>";
    	}
    }
    echo'</tbody></table><br />';

  11. #11
    Membre confirmé
    Homme Profil pro
    fais ce que je peux en n'informatique
    Inscrit en
    Janvier 2012
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : fais ce que je peux en n'informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2012
    Messages : 96
    Par défaut
    C'est plus que ce qu'il m'en faut

    je n'avais pas imaginé afficher un calendrier pour mes statistiques, mais maintenant c'est encore mieux que prévu

    J'avoue qu'il va falloir que je comprenne ce code afin de ne pas faire du copier/coller tout bêtement.

    Je ne sais pas quoi dire, à part Merci (avec un M majuscule)

  12. #12
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 518
    Par défaut
    Bonjour,

    N'hésitez pas si vous avez des questions concernant le code.

    Vous pouvez aussi supprimer les variables dont vous n'(avez/aurez) pas besoin comme $month et $year qui ont été crées seulement pour les passer comme paramètres à cal_days_in_month().

  13. #13
    Membre confirmé
    Homme Profil pro
    fais ce que je peux en n'informatique
    Inscrit en
    Janvier 2012
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : fais ce que je peux en n'informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2012
    Messages : 96
    Par défaut
    je reviendrais vers vous au cas ou, merci. Mais je vais prendre le temps de comprendre par moi même car cela me servira dans le futur, je l'espère.

    Merci encore

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 17/04/2019, 06h58
  2. Réponses: 11
    Dernier message: 08/10/2010, 11h00
  3. compter nombre de dossiers par mois?
    Par Ouggada dans le forum Windows Forms
    Réponses: 17
    Dernier message: 27/02/2009, 10h40
  4. Compter le nombre d'enregistrements par minute
    Par Kosti dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/06/2008, 15h58
  5. Réponses: 6
    Dernier message: 12/01/2008, 18h21

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