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 :

Faire des pourcentages avec mysql et php [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    288
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 288
    Points : 91
    Points
    91
    Par défaut Faire des pourcentages avec mysql et php
    Voila je voudrai faire des statistique et afficher le pourcentage mais y'a probleme car iil m'affiche le nombre total de message pour chaque salon et ne calcule pas le pourcentage il affiche que des 0% voici le scripte:
    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
    43
     
    $select = "select COUNT(*) as nombre_message,d.nom_canal from chat_recep_msg a,chat_users b,short_numbers c,chat_forums d where a.date BETWEEN '$datedebut1' and '$datefin1'and a.num_expediteur=b.num_tel and a.num_dest=c.numero and b.id_canal=d.idcanal GROUP BY nom_canal";
    $result = mysql_query($select)or die('Erreur SQL !<br>'.$select.'<br>'.mysql_error());
    $total = mysql_num_rows($result);
    $nbtotal = $row["nombre_message"];
          if ($total) { 
     echo ' <center><b><font color="#3300CC"> Les stats Du </font>';
     echo $datedebut1;
     echo ' <font color="#3300CC">Au</font> ';
     echo $datefin1;
     echo ' <font color="#3300CC">concernant les messages par salon </font> ';
     echo '</b></center><br>';
    //tableau
           echo '<TABLE align="center">
           <TR style="background-color:#6666CC;">
           <TH><b><u>Nombre message</u></b></TH>
           <TH><b><u>Salons</u></b></TH>
           <TH><b><u>Pourcentage</u></b><
    /TH>';
     
     
           echo '</TR>';
           }
           $i = 1;
           while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
           $pourcentage =substr((($row["nombre_message"]/$nbtotal)*100),
    0,4);
     
           echo '<TR style="background-color:#DADEFF;">';
     
     
           echo '
     
     
           <TD>'.$row["nombre_message"].'</TD>
           <TD>'.$row["nom_canal"].'</TD>
           <TD>'.round($pourcentage).'%<TD>';
     
           $i++;
           echo '</TR>';
           } 
           echo '</TABLE>';
    }
    Si vous pouvez m'aider

  2. #2
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    $nbtotal ne vaut rien.
    Pour avoir le total, il faut soit faire une requête expres, soit additionner tes resultats avec PHP.

  3. #3
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    288
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 288
    Points : 91
    Points
    91
    Par défaut
    Merci de votre réponse ,Svp pouvez vous etre plus claire ?

  4. #4
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    288
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 288
    Points : 91
    Points
    91
    Par défaut
    Quand je fais ceci:

    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
    $nombre = mysql_query("select COUNT(*) as nombre_message,d.nom_canal from chat_recep_msg a,chat_users b,short_numbers c,chat_forums d where a.date BETWEEN '2008-03-01' and '2010-05-14'and a.num_expediteur=b.num_tel and a.num_dest=c.numero and b.id_canal=d.idcanal  GROUP BY nom_canal");
    $total = mysql_query ("SELECT COUNT(*) FROM `chat_recep_msg`");
    $row = mysql_num_rows($nombre);
    $nombre = $row["nombre_message"];
    if ($nombre) {		
     //echo $test;
    //tableau
                echo '<TABLE align="center">
                <TR style="background-color:#6666CC;">
                <TH><b><u>Nombre message</u></b></TH>
                <TH><b><u>Salons</u></b></TH>
    			<TH><b><u>Pourcentage</u></b></TH>';
     
     
              echo '</TR>';
           }
    while ($row = mysql_fetch_array($nombre, MYSQL_ASSOC)) {
                   // $pourcentage =substr((($row["nombre_message"]/$totals)*100),0,4);
     
                        echo '<TR  style="background-color:#DADEFF;">';
     
     
                    echo '
     
     
                    <TD>'.$row["nombre_message"].'</TD>
                    <TD>'.$row["nom_canal"].'</TD>
                    <TD>'.calcul_pourcentage(mysql_result($nombre,0),mysql_result($total,0)).'%<TD>';
     
                    //$i++;?>
                 </TR>
    			 <?php
               }
    il me renvoie juste une seule ligne alors qu'il y'a 3 salons

  5. #5
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $row = mysql_fetch_assoc($nombre);
    $nombre = $row["nombre_message"];
    retire ces deux lignes qui ne riment a rien.

  6. #6
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    288
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 288
    Points : 91
    Points
    91
    Par défaut
    J'ai commenter les 2 lignes comme recommandé et le résultat est un tableau avec plusieurs lignes avec le méme pourcentage (56%) pour toutes les lignes

  7. #7
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Ton total est le meme pour chaque ligne de calcul : il doit être recuperé une seule fois avant la boucle et non a chaque tour de boucle comme tu le fais actuellement (ce qui ne marche d'ailleurs pas puisque le resultat de la requete ne peut etre lu qu'une fois).

    De plus ton pourcentage c'est $row["nombre_message"] / $total_de_messages.
    Le mysql_result($nombre,0) n'a pas de sens non plus puisque tu es dans une boucle qui fetch déjà tes résultats.

  8. #8
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    288
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 288
    Points : 91
    Points
    91
    Par défaut
    Merci de bien vouloir m'aider !
    En fait vous confondez mon premier post et le 3 em post ,en fait j'ai le code du premier par le 3em post qui est là
    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
    $nombre = mysql_query("select COUNT(*) as nombre_message,d.nom_canal from chat_recep_msg a,chat_users b,short_numbers c,chat_forums d where a.date BETWEEN '2008-03-01' and '2010-05-14'and a.num_expediteur=b.num_tel and a.num_dest=c.numero and b.id_canal=d.idcanal  GROUP BY nom_canal");
    $total = mysql_query ("SELECT COUNT(*) FROM `chat_recep_msg`");
    //$row = mysql_num_rows($nombre);
    //$nombre = $row["nombre_message"];
    if ($nombre) {		
     //echo $test;
    //tableau
                echo '<TABLE align="center">
                <TR style="background-color:#6666CC;">
                <TH><b><u>Nombre message</u></b></TH>
                <TH><b><u>Salons</u></b></TH>
    			<TH><b><u>Pourcentage</u></b></TH>';
     
     
              echo '</TR>';
           }
    while ($row = mysql_fetch_array($nombre, MYSQL_ASSOC)) {
                   // $pourcentage =substr((($row["nombre_message"]/$totals)*100),0,4);
     
                        echo '<TR  style="background-color:#DADEFF;">';
     
     
                    echo '
     
     
                    <TD>'.$row["nombre_message"].'</TD>
                    <TD>'.$row["nom_canal"].'</TD>
                    <TD>'.calcul_pourcentage(mysql_result($nombre,0),mysql_result($total,0)).'%<TD>';
     
                    //$i++;?>
                 </TR>
    			 <?php
               }
    Encore merci !!!!

  9. #9
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    heu non je n'ai pas confondu, comme tu peux le voir, tout ce dont je parle est dans le code que tu viens de mettre.

  10. #10
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    288
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 288
    Points : 91
    Points
    91
    Par défaut
    En tout cas merci , je vois que tu n'arrives pas à bien lire car si tu regardes bien le code cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $row["nombre_message"] / $total_de_messages.
    est commenté dans le code que je te parle .Mais de toute façon j'ai pu résoudre le probleme en ajoutant ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $nbtotal = mysql_query(" select count(*) from chat_recep_msg");
    $btotal = mysql_result($nbtotal,0);
    Encore merci sabotage

  11. #11
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    je vois que tu n'arrives pas à bien lire car si tu regardes bien le code cela
    Regarde toi même ce que j'ai écris et ton code, peut être que tu comprendras mieux.

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

Discussions similaires

  1. Créer des documents XML avec MySQL et PHP
    Par kati1985 dans le forum Langage
    Réponses: 2
    Dernier message: 24/09/2009, 16h43
  2. Entrer automatiquement des données Avec MySQL, JS et php
    Par HWICE dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 11/04/2008, 16h40
  3. [MySQL] affichage des données dans un tableau avec mysql et php
    Par fofina dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/10/2007, 14h00
  4. faire des liens avec le resultat de ma requete mysql
    Par rane dans le forum Requêtes
    Réponses: 12
    Dernier message: 10/03/2006, 17h29
  5. faire des graphiques avec Perl
    Par And_the_problem_is dans le forum Modules
    Réponses: 2
    Dernier message: 16/07/2003, 16h08

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