Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster -> FAQ BDD, Cours BDD et Sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 21/10/2009, 15h43   #1
Nouveau membre du Club
 
Date d'inscription: novembre 2008
Messages: 58
Par défaut Calcul pourcentage

Bonjour à tous,

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

Voici mon script :

Code :
 
$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 :
$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,
cycy_88 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/10/2009, 16h08   #2
Membre éclairé
 
Date d'inscription: mai 2009
Localisation: Lyon
Messages: 397
Par défaut

Personnellement, je calculerais $resultat_valide ainsi
Code :
$resultat_valide = ($row['pourcentage_valide']+$row['pourcentage_invalide']!=0) ?
								$row['pourcentage_valide']/$row['pourcentage_valide']+$row['pourcentage_invalide'] :
								1;
Fred
micetf est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 22/10/2009, 10h02   #3
Nouveau membre du Club
 
Date d'inscription: novembre 2008
Messages: 58
Par défaut

Citation:
Envoyé par micetf Voir le message
Personnellement, je calculerais $resultat_valide ainsi
Code :
$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 :
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

Citation:
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,
cycy_88 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 22/10/2009, 23h27   #4
Membre éclairé
 
Date d'inscription: mai 2009
Localisation: Lyon
Messages: 397
Par défaut

Attention ici :
Code :
if ($resultat_valide_final[] = 1)
= : opérateur d'affectation et non de comparaison.
Mais
Code :
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 :
$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 :
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
micetf est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 23/10/2009, 10h14   #5
Nouveau membre du Club
 
Date d'inscription: novembre 2008
Messages: 58
Par défaut

Citation:
Envoyé par micetf Voir le message
Attention ici :
Code :
if ($resultat_valide_final[] = 1)
= : opérateur d'affectation et non de comparaison.
Mais
Code :
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 :
$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 :
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 :
$resultat_valide_final[] = $resultat_valide_final;
Il me met ce message d'erreur : Warning: Cannot use a scalar value as an array
cycy_88 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 23/10/2009, 19h20   #6
Membre éclairé
 
Date d'inscription: mai 2009
Localisation: Lyon
Messages: 397
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 :
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
micetf est déconnecté   Envoyer un message privé Réponse avec citation
NEWS PHPFAQ PHPCours PHPSources PHPLivres PHPScripts PHPOutils PHPComparatifsZend Framework

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 19h53.


Vos questions techniques : forum d'entraide PHP - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.