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

  1. #21
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Bon !

    Donc un autre exemple (simple) imbriqué dans une requête :
    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
    <?php
    
    // Sachant que tu connais le nbre total d'appel
    // Soit dans cet exemple : $totalappels 
    
    $results = mysql_query("SELECT * FROM tatable ORDER BY tranche ASC");
    while ($produit = mysql_fetch_array($results))
    	{
    	 $tranche = $produit['tranche'];
    	 $nb_appels = $produit['nb_appels'];
    
    // En supposant que tu disposes de 4 tranches d'age :
    $tableau_valeurs = array("tranche_1"=>$nb_appels,"tranche_2"=>$nb_appels,"tranche_3"=>$nb_appels,"tranche_4"=>$nb_appels);
    $tranche_age = each($tableau_valeurs);
    
    // formatage
    $taux = number_format(($tranche_age[1]*100)/$totalappels, 2, ",", " ");	
    print("$tranche &nbsp;&nbsp;&nbsp;&nbsp;$nb_appels&nbsp;&nbsp;&nbsp;&nbsp;($taux%)<br>");
        
            }
    ?>
    Tu peux faire des test avec cette simple table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CREATE TABLE tatable (
       tranche varchar(50) NOT NULL,
       nb_appels varchar(50) NOT NULL
    );
     
    INSERT INTO tatable VALUES ( '20', '22');
    INSERT INTO tatable VALUES ( '30', '38');
    INSERT INTO tatable VALUES ( '40', '12');
    INSERT INTO tatable VALUES ( '50', '9');
    De cette façon, tu pourras mieux appréhender le "processus".
    Je peux pas mieux faire.

  2. #22
    Membre confirmé
    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
    Points : 585
    Points
    585
    Par défaut
    Salut,

    décidément je répond n'importe quoi!

    Bon je vais encore essayer; il te suffit d'enlever le group by et de garder la condition et ca devrait marcher:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COUNT(*) AS NbTotal FROM TaTable WHERE...
    D'une autre manière tu pourrais additionner les nb appel avec une boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $nbtotalappel = 0;
    for ($i=0;$i<$totenreg;$i++){
        $nbtotalappel += mysql_result($result,$i,'nbappel');
    }
    Et là ca devrait être bon .

    a+

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 193
    Points : 58
    Points
    58
    Par défaut
    pour alain 31tl!
    merci de ta réponse !
    je veux juste te dire que nbappel n'existe pas dans la table, c'est un camps calculé count(*) as nbappel, donc ce que tu me demande de faire n'est pas possible dans mon cas.

    merci!

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

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

    décidément je répond n'importe quoi!

    Bon je vais encore essayer; il te suffit d'enlever le group by et de garder la condition et ca devrait marcher:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COUNT(*) AS NbTotal FROM TaTable WHERE...
    D'une autre manière tu pourrais additionner les nb appel avec une boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $nbtotalappel = 0;
    for ($i=0;$i<$totenreg;$i++){
        $nbtotalappel += mysql_result($result,$i,'nbappel');
    }


    Et là ca devrait être bon .

    a+
    merci de ta réponse billoum !
    je vais essayé de faire une autre requête sans groupe by juste pour avoir le le nbre total des appels, puis je te tiens au courant!

    par contre j'ai autre petit soucis c'est :
    j'ai une table visite et une table personne ou j'enregistre les personnes qui font visite, donc quand je saisie une visite, j'ai à saisir le nom de la personne qui fait la visite, jusque là j'ai pas de problème puisque j'ai l'ID personne dans visite comme clé etrangère qui me permet de faire une liste déroulante qui affiche tous les noms des personnes. je te demande si tu as une idée qui me permet d'afficher dans la liste deroulante que les noms qui contient des lettre que je saisie au départ.

    je fait ça parce dans le cas ou j'ai 10000 enregistrement dans la table personne, c'est pas propre d'afficher une liste deroulante de 10000 nom de personnes.

    si tu as une idée fait le moi savoir !!

    mille fois merci à vous tous de vos interventions!!!!

  5. #25
    Membre confirmé
    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
    Points : 585
    Points
    585
    Par défaut
    N'oublie pas d'aller faire un ptit tour dans les tutoriels avant de poser une question , ils sont très complets sur developpez.

    Tu trouveras tous ce que tu veux dans ce tutoriel SQL (l'opérateur LIKE correespond à ce que tu cherches)

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 193
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par billoum
    N'oublie pas d'aller faire un ptit tour dans les tutoriels avant de poser une question , ils sont très complets sur developpez.

    Tu trouveras tous ce que tu veux dans ce tutoriel SQL (l'opérateur LIKE correespond à ce que tu cherches)
    encore merci pour toutes tes réponses!
    j'ai utilisé like $_post["nom"] et ça marche, mais en utilsant un champs text nom puis je change de page pour aficher la liste des noms qui contiennent les lettre stockées dans le champ nom. par contre moi je vaux avoir une seule page.
    j'éspère que tu as compris

    merci bien pour tout
    A+

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

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

    décidément je répond n'importe quoi!

    Bon je vais encore essayer; il te suffit d'enlever le group by et de garder la condition et ca devrait marcher:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COUNT(*) AS NbTotal FROM TaTable WHERE...
    D'une autre manière tu pourrais additionner les nb appel avec une boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $nbtotalappel = 0;
    for ($i=0;$i<$totenreg;$i++){
        $nbtotalappel += mysql_result($result,$i,'nbappel');
    }
    Et là ca devrait être bon .

    a+
    bonjour à tous et a toi billoum!
    effectivement $nbtotalappel , il me le donne avec cette boucle mais quand je lutilise dans la boucle while pour calculer le taux de chaque nbappel de chaque trancheage il ne l'affiche pas.

    pourriez vous me dire pourquoi?

    ci joint le code 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
    <?
    $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)or die(mysql_error().':<br>'.$query);
    $totenreg=mysql_num_rows($result);
     
     
    if ($totenreg==0)
    echo "<td colspan=9><h5>LE NOMBRE D'APPELS EST ZERO</td>";
    else
    {
    $nbtotalappel = 0;
    for ($i=0;$i<$totenreg;$i++){
        $nbtotalappel += mysql_result($result,$i,'nbappel');
    }
     
    $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"])/$nbtotalappel;
    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 $nbtotalappel; ?></font></TD>
    <TD class=titre7 bgcolor="#396BAD"><font color="white"><? ; 
    	  echo "$tauxtotal % ";?></font></TD>
    </TR>		   
     
    </table>		
    </td>
     
    </TABLE>

  8. #28
    Membre confirmé
    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
    Points : 585
    Points
    585
    Par défaut
    Salut,

    j'ai été jeté un ptit coup d'oeil dans la doc php et apparement il faut éviter de mélanger les appels à mysql_result avec d'autres fonctions qui travaillent sur le résultats (genre mysql_fetch_array()).

    Le problème peut venir de ça, donc essaie en utilisant le première solution que je t'ai donné (faire une autre requête sans le groupe by)

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

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

    j'ai fait aussi la requete sans group by il me donne pas le totaldes appels

    je ne sais pas vraiment koi faire

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 193
    Points : 58
    Points
    58
    Par défaut
    bonjour à tous !

    j'ai pas encore résolu ce problème , pourriez vous m'aider , je suis un peu perdue!

    merci pour toute intervention

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 193
    Points : 58
    Points
    58
    Par défaut
    bonsoir à tous !

    je n'arrive toujours pas à afficher ce taux?

    quelqu'un peut comment le calculer ?

    merci

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 193
    Points : 58
    Points
    58
    Par défaut
    bonjour à tous !

    je ne sais pas pourquoi personne ne me répond, est ce que parce que mon problème est futile ou je ne suis pas claire !

    merci!

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 193
    Points : 58
    Points
    58
    Par défaut
    résolu!!

    merci à tous

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

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