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 pourcentage


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 68
    Par défaut Calcul pourcentage
    Bonjour à tous,

    J'ai crée un script en php qui calculant le pourcentage.

    Voici mon script :

    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
     
    $result = pg_query($db, "SELECT KBarticleID, pourcentage_valide, pourcentage_invalide FROM $graphe WHERE date_ajout='$date' AND unite='$division'");
    if (!$result)
    {
      echo "Une erreur s'est produite.\n";
      exit;
    }
     
    $KBarticleID = array();
    $pourcentage_valide = array();
    $pourcentage_invalide = array();
    $resultat_valide = array();
    $resultat_valide_final = array();
     
    while($row = pg_fetch_assoc($result))
    {
            $KBarticleID[] = $row['KBarticleID'];
            $pourcentage_valide[] = $row['pourcentage_valide'];
            $pourcentage_invalide[] = $row['pourcentage_invalide'];
            $resultat_valide = $row['pourcentage_valide']/$row['pourcentage_valide']+$row['pourcentage_invalide'];
            $resultat_valide_final=$resultat_valide*100;
            echo $resultat_valide_final;
    }
    Voici ma table :

    kbarticleid | pourcentage_valide | pourcentage_invalide
    -------------+--------------------+-------------------
    973540 | 0 | 0 |
    973540 | 7 | 0 |
    973507 | 0 | 0 |
    973507 | 7 | 0 |
    973354 | 0 | 0 |
    973354 | 7 | 0 |
    973346 | 14 | 0 |
    973346 | 696 | 0 |

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $row['pourcentage_valide']/$row['pourcentage_valide']+$row['pourcentage_invalide'];
    $resultat_valide_final=$resultat_valide*100;
    Donc voici le calcul :

    Si je fais (0 + 0)/0 c'est impossible.
    Par contre ce que je voudrais obtenir dans ce cas c'est 100% pour pourcentage valide et pourcentage_invalide 0

    Est-ce-que pouvez-vous m'aider ?

    Cordialement,

  2. #2
    Membre émérite Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Par défaut
    Personnellement, je calculerais $resultat_valide ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $resultat_valide = ($row['pourcentage_valide']+$row['pourcentage_invalide']!=0) ?
    								$row['pourcentage_valide']/$row['pourcentage_valide']+$row['pourcentage_invalide'] :
    								1;
    Fred

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 68
    Par défaut
    Citation Envoyé par micetf Voir le message
    Personnellement, je calculerais $resultat_valide ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $resultat_valide = ($row['pourcentage_valide']+$row['pourcentage_invalide']!=0) ?
    								$row['pourcentage_valide']/$row['pourcentage_valide']+$row['pourcentage_invalide'] :
    								1;
    Fred


    j'ai utilisé ce que tu as fais et j'ai mis une condition.

    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
    while($row = pg_fetch_assoc($result))
    {
            $kbarticleid[] = $row['kbarticleid'];
            $pourcentage_valide[] = $row['pourcentage_valide'];
            $pourcentage_invalide[] = $row['pourcentage_invalide'];
     
            $resultat_valide_final[] = ($row['pourcentage_valide']+$row['pourcentage_invalide']!=0)
            ? $row['pourcentage_valide']/$row['pourcentage_valide']+$row['pourcentage_invalide'] : 1;
     
            if ($resultat_valide_final[] = 1)
            {
                    $resultat_valide_final[]=100;
            }
            else
            {
            }
            $resultat_invalide_final[] = 100 - $resultat_valide_final;
    }
    sauf que j'ai un problème il me met un message d'erreur

    Fatal error: Unsupported operand types in .....
    En faites, je voudrais que les valeurs de resultat_valide_final et resultat_invalide_final soient dans un tableau pour qu'après, je puisse les afficher.

    Peux-tu m'aider ?

    Cdt,

  4. #4
    Membre émérite Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Par défaut
    Attention ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($resultat_valide_final[] = 1)
    = : opérateur d'affectation et non de comparaison.
    Mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($resultat_valide_final[] == 1)
    ne marcherait pas non plus puisque il manque l'entrée du tableau $resultat_valide_final[?].

    Attention ici également :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat_invalide_final[] = 100 - $resultat_valide_final;
    où $resultat_valide_final n'existe pas, ce qui existe, c'est $resultat_valide_final[0], $resultat_valide_final[1],....

    J'opterais donc plutôt pour 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
    while($row = pg_fetch_assoc($result))
    {
    	$kbarticleid[] = $row['kbarticleid'];
    	$pourcentage_valide[] = $row['pourcentage_valide'];
    	$pourcentage_invalide[] = $row['pourcentage_invalide'];
     
    	if ($row['pourcentage_valide']+$row['pourcentage_invalide']==0)
    	{
    		$resultat_valide_final[]=100;
    		$resultat_invalide_final[] = 0;
    	}
    	else
    	{
    		$resultat_valide_final = $row['pourcentage_valide']/$row['pourcentage_valide']+$row['pourcentage_invalide'];
     
    		$resultat_valide_final[] = $resultat_valide_final;
    		$resultat_invalide_final[] = 100 - $resultat_valide_final;
    	}
    }
    Fred

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 68
    Par défaut
    Citation Envoyé par micetf Voir le message
    Attention ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($resultat_valide_final[] = 1)
    = : opérateur d'affectation et non de comparaison.
    Mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($resultat_valide_final[] == 1)
    ne marcherait pas non plus puisque il manque l'entrée du tableau $resultat_valide_final[?].

    Attention ici également :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat_invalide_final[] = 100 - $resultat_valide_final;
    où $resultat_valide_final n'existe pas, ce qui existe, c'est $resultat_valide_final[0], $resultat_valide_final[1],....

    J'opterais donc plutôt pour 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
    while($row = pg_fetch_assoc($result))
    {
    	$kbarticleid[] = $row['kbarticleid'];
    	$pourcentage_valide[] = $row['pourcentage_valide'];
    	$pourcentage_invalide[] = $row['pourcentage_invalide'];
     
    	if ($row['pourcentage_valide']+$row['pourcentage_invalide']==0)
    	{
    		$resultat_valide_final[]=100;
    		$resultat_invalide_final[] = 0;
    	}
    	else
    	{
    		$resultat_valide_final = $row['pourcentage_valide']/$row['pourcentage_valide']+$row['pourcentage_invalide'];
     
    		$resultat_valide_final[] = $resultat_valide_final;
    		$resultat_invalide_final[] = 100 - $resultat_valide_final;
    	}
    }
    Fred
    J'ai toujours un problème à cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat_valide_final[] = $resultat_valide_final;
    Il me met ce message d'erreur : Warning: Cannot use a scalar value as an array

  6. #6
    Membre émérite Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Par défaut
    Je n'aurais pas dû appeler ma variable ($resultat_valide_final) comme le tableau ($resultat_valide_final[]).
    Appelons-là $rvf.
    Voici la correction :
    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
    while($row = pg_fetch_assoc($result))
    {
    	$kbarticleid[] = $row['kbarticleid'];
    	$pourcentage_valide[] = $row['pourcentage_valide'];
    	$pourcentage_invalide[] = $row['pourcentage_invalide'];
     
    	if ($row['pourcentage_valide']+$row['pourcentage_invalide']==0)
    	{
    		$resultat_valide_final[]=100;
    		$resultat_invalide_final[] = 0;
    	}
    	else
    	{
    		$rvf = $row['pourcentage_valide']/$row['pourcentage_valide']+$row['pourcentage_invalide'];
     
    		$resultat_valide_final[] = $rvf;
    		$resultat_invalide_final[] = 100 - $rvf;
    	}
    }
    Fred

Discussions similaires

  1. calcul pourcentage dans une requete imbriquée
    Par timal78 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 10/07/2007, 14h28
  2. Calcul pourcentage / VB ou excel ?
    Par oliver75 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 15/05/2007, 11h42
  3. Calcul pourcentage dans un sous formulaire
    Par kriskiller dans le forum Access
    Réponses: 9
    Dernier message: 11/07/2006, 09h45
  4. [Débutant] calculer pourcentages
    Par Satan dans le forum Access
    Réponses: 4
    Dernier message: 25/04/2006, 16h07
  5. update pour calcul pourcentage (SQL SERVER 2000)
    Par meufeu dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/09/2005, 09h04

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