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

Langage PHP Discussion :

Compter le nombre de fois 1 occurrence


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 203
    Points : 82
    Points
    82
    Par défaut Compter le nombre de fois 1 occurrence
    Bonjour,

    Je souhaite faire des stats de vote sur mes musiques en comptant le nombre d'étoiles sur un champ par exemple dans ma table, j'ai les champs: musique, paroles, voix

    Quand on vote, on clique sur: 1 étoile = 1, 2 étoiles = 2 et cela jusqu'à 5 et les données sont enregistrées dans la table.

    Maintenant je souhaite parmi tous les votes (entrées) compter combien de fois musique = 1, 2 etc. pareil pour les autres champs.

    Le problème est que je n'y arrive pas alors j'essaie de cette façon mais je n'obtiens pas le résultat souhaité:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $sql1 = 'SELECT musique, COUNT(musique) as nbVote
    FROM je_fais_des_reves
    GROUP BY musique';
    $result1 = $conn->query($sql1);
     
    $sql2 = 'SELECT musique, COUNT(musique) as nbVote
    FROM je_fais_des_reves
    GROUP BY musique';
    $result2 = $conn->query($sql2);

    jusqu'à 5 puisque 5 étoiles

    Je vous remercie de votre aide

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 269
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 269
    Points : 8 568
    Points
    8 568
    Billets dans le blog
    17
    Par défaut
    Tu veux un décompte des votes.

    Mais je n'ai pas bien compris, où sont enregistrés les votes exactement ?

    Tu ne montres qu'une colonne musique/nbVote, ce n'est pas suffisant pour ce que tu veux faire.

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 203
    Points : 82
    Points
    82
    Par défaut
    Je pense que c'est suffisant comme ma copie d'écran, chaque ligne (donc chaque vote) a son nombre d'étoiles par exemple pour le premier enregistrement, le votant a mis 1 étoile pour la musique, 2 pour les paroles et 4 pour la voix.
    Parmi les 3 enregistrements que l'on voit, je souhaite extraire le nombre de fois que les votants on saisis pour 1, 2, ... 5 d'étoiles comme dans la deuxième copie d'écran sauf que dans la deuxième copie, cela me renvoi plusieurs lignes au lieu d'une et en plus avec le mauvais compte:

    Nom : bd.png
Affichages : 113
Taille : 27,8 Ko
    Nom : result.png
Affichages : 112
Taille : 10,1 Ko
    Nom : frm.png
Affichages : 118
Taille : 33,4 Ko
    Images attachées Images attachées  

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 269
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 269
    Points : 8 568
    Points
    8 568
    Billets dans le blog
    17
    Par défaut
    OK, pour chaque ligne de la table "je_fais_des_reves" tu as un vote /5 de musique, voix, paroles.

    Pour connaître la répartition des votes "musique" :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT ALL musique, COUNT(*)
    FROM je_fais_des_reves
    GROUP BY musique
    ORDER BY musique ASC

    (ce qui revient à peu près à ce que tu avais fait)

    Attention, avec cette requête les votes n'ayant jamais été faits ne seront pas visibles, ex. tu n'auras pas "1 étoile" = 0
    Cela peut se gérer plus ou moins élégamment selon ton serveur de BdD et sa version, quel est-il ?

    Concernant ta 2nde capture d'écran, on a plutôt un problème côté affichage. Je pense que tu ne prends pas en charge les trous (pas de vote musique à 2 ou 3 étoiles) et que tu boucles sur des lignes alors qu'il faut plutôt boucler sur les colonnes.

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 203
    Points : 82
    Points
    82
    Par défaut
    Je n'avais pas pensé à ça alors je fais:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
      if ($result1->num_rows > 0) {
       while ($row1 = $result1->fetch_assoc()) {
       ?>
      <div class="col text-center border border-1"><?php echo $row1['musique']; ?></div>

    mais je ne sais pas boucler sur une colonne alors le résultat est le même.

  6. #6
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 269
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 269
    Points : 8 568
    Points
    8 568
    Billets dans le blog
    17
    Par défaut
    mais je ne sais pas boucler sur une colonne alors le résultat est le même.
    Comment gères-tu les "trous" dans ton tableau ? Ex. avec ta data il y a 0 vote sur 2 et 3 étoiles.
    Sans davantage de code ce sera dur de t'aider.

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 203
    Points : 82
    Points
    82
    Par défaut
    de cette façon:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
                <?php
                if ($result1->num_rows > 0) {
                    while ($row1 = $result1->fetch_assoc()) {
                        ?>
                <div class="col text-center border border-1"><?php echo $row1['nbMusique']; ?></div>
                <?php
                    }
                } else {  ?><div class="col text-center border border-1">0</div>
            </div>

  8. #8
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 203
    Points : 82
    Points
    82
    Par défaut
    Finalement je crois que je vais revoir la conception de ma base de données et faire une table musique une table parole une table voix avec une colonne une étoile 2 étoiles 3 étoiles 4 étoiles 5 étoiles par table

Discussions similaires

  1. Réponses: 16
    Dernier message: 14/09/2006, 07h43
  2. Réponses: 2
    Dernier message: 22/06/2006, 14h59
  3. Réponses: 2
    Dernier message: 23/05/2006, 19h45
  4. compter le nombre de fois qu'un fichier a été chargé
    Par phpaide dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 23/05/2006, 18h51
  5. Réponses: 2
    Dernier message: 07/01/2006, 00h18

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