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

Langage PHP Discussion :

Test valeur négative


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Novembre 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2008
    Messages : 130
    Points : 48
    Points
    48
    Par défaut Test valeur négative
    Bonjour à tous,
    je vous confronte un problème très bizarre que je n'arrive point à solutionner. Pour faire court je teste si une valeur est négative et ainsi faire un traitement par la suite si cette condition est remplie. Tout marche correctement sauf pour les valeurs proche de 0. Exemple :
    si j'effectue le test, mon programme avance et ne traite pas cela comme une valeur négative ... ? Je ne comprends vraiment pas ! Par contre j'ai d'autres valeurs négatives dans mon traitement et cela marche, comme par exemple avec:
    . Merci de votre aide par avance !

    PS : comme c'est des nombres à deux virgules, j'ai essayé en mettant cela :
    mais sans résultats ...
    Et pour vraiment bien peter un plomb, j'ai le même résultat mais dans le sens inverse, avec >0 et 0.15 par exemple ...

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    je viens d'essayer ce code et ça affiche bien "négatif"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $maval = -0.38;
     
    if ($maval < 0) {
    	echo 'négatif';
    } else {
    	echo 'positif';
    }
    montre nous un exemple de code qui ne fonctionne pas chez toi

  3. #3
    Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Novembre 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2008
    Messages : 130
    Points : 48
    Points
    48
    Par défaut
    Voici le code :
    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
    52
    53
    54
    55
    56
    57
    58
    59
    // Traitement pour sélectionner tous les projets ou est responsable la personne concernée
    			$sql2="SELECT Projets.RéfProjet, Projets.NomProjet, Clients.NomSociété, Projets.Détails, Projets.MontantDevis, Projets.Responsable
    					FROM Clients RIGHT JOIN (Projets LEFT JOIN Employés ON Projets.Responsable = Employés.CodeEmployé) ON Clients.CodeClient = Projets.CodeClient
    					WHERE (((Projets.MontantDevis)>0) AND ((Projets.Cloture)=0))
    					GROUP BY Projets.RéfProjet, Projets.NomProjet, Clients.NomSociété, Projets.Détails, Projets.MontantDevis, Projets.Responsable, Projets.Cloture
    					HAVING (((Projets.RéfProjet) In (SELECT RéfProjet FROM Heures)))
    					ORDER BY Projets.NomProjet;										
    				";
    			$req2=odbc_exec($cnx,$sql2) or die('erreur sql dans : '.$sql2);				
    			while($data_emp=odbc_fetch_array($req2))
    			{
    				$res=0;
    				// Traitement pour avoir le nb heures restantes sur chaque dossier !
    					$montant_devis=$data_emp['MontantDevis'];					
    					// Montant Facture
    					$sql6="SELECT SUM([Montant Facture]) AS mt_facture FROM Paiements WHERE RéfProjet=".$data_emp['RéfProjet'];
    					$req6=odbc_exec($cnx,$sql6) or die ('Erreur SQL dans :'.$sql6);
    					$data6=odbc_fetch_array($req6);
    					$montant_facture=$data6['mt_facture'];
    					// TxFacturation
    					$sql3="SELECT (TauxFacturation) AS TxFacturation2 FROM Employés WHERE CodeEmployé=".$data_emp['Responsable'];
    					$req3=odbc_exec($cnx,$sql3) or die (' Erreur SQL dans : '.$sql3);
    					$data3=odbc_fetch_array($req3);
    					$TxFacturation=$data3['TxFacturation2'];					
    					// Tps Passés
    					$sql4="SELECT SUM(HeuresAFacturer) AS tps_passes FROM Heures WHERE RéfProjet=".$data_emp['RéfProjet'];
    					$req4=odbc_exec($cnx,$sql4) or die (' Erreur SQL dans  : '.$sql4);
    					$data4=odbc_fetch_array($req4);
    					$tps_passes=$data4['tps_passes'];
     
    					// Calcul
    					$res=(($montant_devis-$montant_facture)/$TxFacturation)-(($tps_passes-($montant_facture/$TxFacturation)));	
    					$heures_realises=(($tps_passes-($montant_facture/$TxFacturation)));
    					$res=floor($res);
    					$res=$res/8; // Nb Heures/8 = 1 jour !
    					$montant_restant=$montant_devis-$montant_facture;
    					$res=number_format($res, 2, ',', ' ');					
    					echo $data_emp['NomProjet'].'- mt_devis:'.$montant_devis.' - mt_facture'.$montant_facture.' heures réalisés:'.$heures_realises. '- res:'.$res.'<br/>';
    					if ($res<0)
    					{					
    						switch($data_emp['Responsable'])// Responsable 24=YD 29=AT 27=RP 28=DR dans GéoCd !
    						{
    							case 24:
    									$responsable='YD';
    									break;
    							case 29:
    									$responsable='AT';
    									break;
    							case 27:
    									$responsable='RP';
    									break;
    							case 28:
    									$responsable='DR';
    									break;
    						}
    						$res=number_format($res, 0, ',', ' ');
    						echo '<li/><b/><font color="red"/>'.$data_emp['NomProjet'].'</b></font> | '.$data_emp['NomSociété'].' | '.$data_emp['Détails'].' *** <b/> + '.abs($res).'h ('.$responsable.')</b></li>';						
    					}
    			}
    Et donc c'est au niveau du if($res<0), que mes valeurs proches de 0 (-0,23) ne sont pas prise dedans ! Pour tester cela j'affiche tout mon jeux d'enregistrement (c'est le "echo" juste avant mon test), et je regarde ceux qui sont passe dans mon "if" et voilà....

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    "number_format" fournit une chaine de caractères donc tu ne peux tester si la variable est négative
    tu dois faire ce test avec un nombre dans $res

  5. #5
    Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Novembre 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2008
    Messages : 130
    Points : 48
    Points
    48
    Par défaut
    Hoooo le boulet,
    merci ca marche nettement mieux maintenant !

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

Discussions similaires

  1. Test d'une valeur négative
    Par manticore dans le forum Linux
    Réponses: 4
    Dernier message: 01/01/2010, 19h13
  2. valeur négative
    Par pascale86 dans le forum Access
    Réponses: 4
    Dernier message: 09/01/2006, 16h17
  3. Réponses: 4
    Dernier message: 23/09/2005, 14h15
  4. [MSDE][INSERT Auto]Valeur négative de PK
    Par papouAlain dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/09/2005, 14h28
  5. test valeur null
    Par zwck dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 13/09/2004, 13h52

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