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 :

Calculer les pourcentages par rapport à des valeurs [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 110
    Par défaut Calculer les pourcentages par rapport à des valeurs
    Bonjour à tous,

    Travaillant sur un système de sondage, je suis actuellement en train de mettre en place des pourcentages à côté de mes valeurs de résultats.

    J'ai une fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function pourcentage($nombre, $total, $pourcent=100, $arrondi=2)
    {
    $nbr = ($nombre/$total) * $pourcent;
    return round($nbr, $arrondi);
    }
    J'ai une requête qui avec une boucle, appelle tous les résultats:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $sql->DatabaseConnexion();
    $aff_reponses = $sql->query("SELECT * FROM "._TREPONSES_." WHERE id_sondage='".$question['id_sondage']."' ORDER by resultat DESC") or die(mysql_error());
    $totalvotants = $sql->query("SELECT SUM(resultat) AS nb_votant FROM "._TREPONSES_." WHERE id_sondage='".$question['id_sondage']."' ORDER by resultat DESC") or die(mysql_error());
     
    $sql->DatabaseClose();
     
    while($results = mysql_fetch_array($aff_reponses,MYSQL_ASSOC)) {
    	$tpl->assign_block_vars('reponses', array(
    		'ID_SONDAGE' => $results['id_sondage'],
    		'REPONSE' => $results['reponse'],
    		'RESULTAT' => $results['resultat'],
    		'POURCENT' => pourcentage($results['resultat'], $totalvotants)
    		));
    }
    Le problème c'est que j'ai des pourcentages improbables:
    -> 381.82%
    -> 18.18%
    -> 9.09%

    Alors que si je remplace ma variable $totalvotants par le nombre total de votants, j'ai les bons pourcentages:
    -> 93.33%
    -> 4.44%
    -> 2.22%

    Est-ce que vous pouvez me dire d'où vient le souci?
    Merci d'avance!

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    Bonjour,

    Ce serait plutôt COUNT que SUM dans la 2è requête, non ?

    Mais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $totalvotants = mysql_num_rows($aff_reponses)
    éviterai une 2è requête.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 110
    Par défaut
    Avec COUNT, j'ai le résultats suivants (les mêmes qu'avec SUM):

    -> 381.82%
    -> 18.18%
    -> 9.09%

    Si j'utilise:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $totalvotants = mysql_num_rows($aff_reponses)
    -> 1400%
    -> 66.67%
    -> 33.33%


  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Bonjour,

    La premiere chose a faire quand on veut debugger des resultat, ca serait de controler les valeur qu'on utilise dans la formule.
    par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump($totalvotants);
    Dans ton cas, tu utilises $totalvotants comme etant plein de choses differentes :
    Ca ne peut pas être à la fois le retour d'une requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $totalvotants = $sql->query("SELECT SUM
    un fetch d'une autre requete
    $totalvotants = mysql_num_rows($aff_reponses)
    et la valeur d'un champ.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pourcentage($results['resultat'], $totalvotants)
    Sous toute reserve sur ce que retourne ta fonction query() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $result = $sql->query("SELECT SUM(resultat) AS nb_votant FROM "._TREPONSES_." WHERE id_sondage='".$question['id_sondage']."' ORDER by resultat DESC") or die(mysql_error());
    $row = mysql_fetch_assoc($result);
    $totalvotants = $row['nb_votant'];
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 110
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Sous toute reserve sur ce que retourne ta fonction query() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $result = $sql->query("SELECT SUM(resultat) AS nb_votant FROM "._TREPONSES_." WHERE id_sondage='".$question['id_sondage']."' ORDER by resultat DESC") or die(mysql_error());
    $row = mysql_fetch_assoc($result);
    $totalvotants = $row['nb_votant'];
    Ça fonctionne, j'ai bien les bons pourcentages!

    Merci!

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

Discussions similaires

  1. Calculer un pourcentage par rapport à la même cellule
    Par kbledos dans le forum QlikView
    Réponses: 2
    Dernier message: 14/03/2014, 09h02
  2. Position des QLabel les uns par rapport aux autres
    Par dharkan dans le forum Débuter
    Réponses: 4
    Dernier message: 23/04/2011, 18h21
  3. ordonner les parents par rapport aux dates des children
    Par fphenix dans le forum Requêtes
    Réponses: 4
    Dernier message: 11/03/2011, 13h29
  4. Placer des table les unes par rapport aux autres.
    Par IyF33 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 13
    Dernier message: 03/07/2008, 09h29
  5. Réponses: 5
    Dernier message: 10/12/2007, 15h24

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