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 :

Calcul d'un taux à partir d'une boucle while [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
    Juillet 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 193
    Par défaut Calcul d'un taux à partir d'une boucle while
    bonsoir à tous !
    ceci est une requete qui calcule le nombre d'appels selon la tranche d'age:

    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
    <?$query = "SELECT trancheage,COUNT(*) as nbappel
    FROM personne_appelante p, age
    where p.idtrancheage=age.idtrancheage
    and dat_appel between '$ddeb' AND '$dfin' 
    GROUP BY trancheage;";
    $result=mysql_query($query);
    $totenreg=mysql_num_rows($result);
     
     
    if ($totenreg==0)
    echo "<td colspan=9><h5>LE NOMBRE D'APPELS EST ZERO</td>";
    else
    {
     
    echo "</tr>";
    }
    echo "</form>";
     
    $i=0;$totappel=0;$tauxtotal=0;
    while ($row = mysql_fetch_array($result))
    {
     
    echo "<td><h5>".$row["trancheage"]."</td>";
    echo "<td><h5>".$row["nbappel"]."</td>";
    $totappel= $totappel+ $row["nbappel"];
    $taux=(100*$row["nbappel"])/$totappel ;
    echo "<td><h5>$taux%</td>";
    $tauxtotal=$tauxtotal+$taux;
    echo "<tr>";
    }
    //echo "</table>";
    ?>
    ce code marche impec, parcontre le taux il le calcule par rapport au nombre totals des appels à chaque itteration de la boucle or le nombre total des appels à la première itteration prends la valeur 0+nbappel si nbappel =1 à la premiere ittration le taux=100% si nbappel =1 à la deuxième itteration le taux=50% parceque le nombretotal des appels =2.

    ce qui fait le taux total =100%+50%= 150% et ce n'est pas ça que je veux avoir.

    j'ai essayé de calculer le taux dans une autre boucle while en utilisant le resultat nombre total des appels calculé de la première boucle et ça n'a pas marché.

    quellequ'un a compris mon problème et il a une solution a me donner?

    merci!!!!

  2. #2
    Membre émérite
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 910
    Par défaut quel résultat?
    c'est quoi le résultat que tu es censé avoir si le nb total appels =2?
    puis = 3? Je serais à mieux de t'aider ensuite car là je ne comprends pas trop ce que tu explique.

    Merci de me préciser les résultats désirés et je pourrais t'aider.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 193
    Par défaut
    merci de ta réponse!

    le résultat que je veux avoir c 'est le taux de chaque nbappel (itteration) par rapport au nombre total des appel.
    le nombre total des appels on l'a qu'à la sortie de la boucle ca qui fait imposible d'avoir ces taux en utilisant la meme boucle.

    si vous n'avez pas encore compris n'esitez pas me demander plus d'explication.

    merci !

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 193
    Par défaut
    une autre petite precision zyongh, la somme des taux ($tauxtotal) il faut qu'elle soit egale à 100%.

    merci de m'aider!!

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2004
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 496
    Par défaut
    Salut,

    tu dois faire une requête avec COUNT pour calculer le nbre total d'appel:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $res = mysql_query("SELECT COUNT(nbappel) as nbtotalappel FROM TaTable WHERE ...");
    Apres tu recupères avec mysql_resul() pour le calcul du taux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $taux=(100*$row["nbappel"])/mysql_result($res,0,'nbtotalappel');
    a+

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 193
    Par défaut
    Citation Envoyé par billoum
    Salut,

    tu dois faire une requête avec COUNT pour calculer le nbre total d'appel:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $res = mysql_query("SELECT COUNT(nbappel) as nbtotalappel FROM TaTable WHERE ...");
    Apres tu recupères avec mysql_resul() pour le calcul du taux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $taux=(100*$row["nbappel"])/mysql_result($res,0,'nbtotalappel');
    a+
    le nombre total des appels je l'ai à la sortie de la boucle while, pourquoi refaire la requete?

  7. #7
    Membre émérite
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 910
    Par défaut alors c'est simple
    donc si j'ai bien compris si $nbappel = 15 et $totalappel = 100 alors $taux = 15%. Si c'est ce que tu veux la solution est que tu calcules le taux en dehors de la boucle while maintenant si tu as plus $nbappel il faut que tu ramène le $nbappel à O avant l'itération suivante

    exemple:
    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
     
    $nbappel = 0;
     
    while{
            // code de recherche des valeurs
     
     
            // calcul du taux
            $taux = $nbappel / $totalappel
            // sauvegarde dans un fichier texte
            fwrite($fp, $taux."\n");
     
            // et on ramène le nbappel à 0
            $nbappel = 0;
    }
    Si j'ai pas compris ta demande alors réponds à ma première question avec les résultats à obtenir sur une suite de 3.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 193
    Par défaut
    j'ai trop compris ce que tu veux dire remettre à 0 le nombre d'appel, par contre voila le code en complet

    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
    44
    45
    46
    47
    48
    49
    50
    51
    <TD><TABLE border=1 cellpadding=2 cellspacing=0 bordercolor="#396BAD">
    <TR bgcolor="white">
    <TD class=titre5>AGES DES DEMANDEURS</TD>
     
    <TD class=titre6 width=100>NBRE D'APPEL</TD>
     
    <TD class=titre6 width=100>TAUX</TD>
     
    </TR>
    <?$query = "SELECT trancheage,COUNT(*) as nbappel
    FROM personne_appelante p, age
    where p.idtrancheage=age.idtrancheage
    and dat_appel between '$ddeb' AND '$dfin' 
    GROUP BY trancheage;";
    $result=mysql_query($query);
    $totenreg=mysql_num_rows($result);
     
     
    if ($totenreg==0)
    echo "<td colspan=9><h5>LE NOMBRE D'APPELS EST ZERO</td>";
    else
    {
     
    echo "</tr>";
    }
     
    $i=0;$totappel=0;$tauxtotal=0;
    while ($row = mysql_fetch_array($result))
    {
     
    echo "<td><h5>".$row["trancheage"]."</td>";
    echo "<td><h5>".$row["nbappel"]."</td>";
    $totappel= $totappel+ $row["nbappel"];
    $taux=(100*$row["nbappel"])/$totappel ;
    echo "<td><h5>$taux%</td>";
    $tauxtotal=$tauxtotal+$taux;
    echo "<tr>";
    }
    //echo "</table>";
    ?>
    <TR>
    <TD class=titre5 bgcolor="#396BAD"><font color="white">Total </font></TD>
     
    <TD class=titre7 bgcolor="#396BAD"><font color="white"><? ; 
    	  echo $totappel; ?></font></TD>
    <TD class=titre7 bgcolor="#396BAD"><font color="white"><? ; 
    	  echo "$tauxtotal % ";?></font></TD>
    </TR>		   
     
    </table>		
    </td>

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 193
    Par défaut
    c est un tableau de 3 colonnes dans la 1 colonne il m'affiche les trange d'age
    la 2 colonne il affiche pour chaque tranche d'age son le nb appel.

    à la dernière ligne du tableau on a le nombre totals des appels à partir de là qu'on peux calculer la taux d'appel de chaque tranche d'age par rapport au nombre totals des appels on utilisant la formule
    taux=(100*nbappel)/totalnbappel
    cette fois ci je crois que je suis claire

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/06/2010, 07h39
  2. Réponses: 4
    Dernier message: 05/04/2007, 13h20
  3. [débutant] [Tableaux] un array à partir d'une boucle
    Par denis.ws dans le forum Langage
    Réponses: 3
    Dernier message: 22/11/2006, 22h37
  4. [MySQL] Traitement de Formulaire : générer des ensemble à partir d'une boucle foreach
    Par yodaazen dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/10/2006, 15h28

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