Signe supérieur php

Résolu/Fermé
Mika0931 - 3 juin 2010 à 15:29
 Mika0931 - 4 juin 2010 à 09:21
Bonjour,

Je fais un test en PHP et j'utilise le signe supérieur dans un if.
Je vérifie si la valeur de gauche est strictement supérieure à celle de droite.

if ($valeur1 > $valeur2)
{
   .....
}


Quand les 2 valeurs sont identiques, les instructions à l'intérieur du if s'exécute quand même. Même égale, $valeur1 est supérieure à $valeur2.
Par exemple 115 > 115 (dur à admettre).

Je ne vois d'ou vient mon soucis, si quelqu'un pouvait m'aider..

Mika


4 réponses

Profil bloqué
3 juin 2010 à 15:30
tu as déclaré tes variables ?
0
Oui elles sont toutes les 2 déclarés...
Je comprends pas du tout.
Du coup j'ai ajouté une décimale à ma variable $valeur2 vu que $valeur1 sera toujours un entier.
0
oui je comprend ton probleme ceci provient d'erreurs de php dans le traitement des nombres et des chaines je m'explique si tu as declaré tes variables sous forme de string (c'est à dire de chaine) cette erreur est courante regarde le code
$valeur1='155 ';  
$valeur2='155';  
//si tu mets   
if ($valeur1>$valeur2)  
{  
echo 'php de merd***';  
}  

tu veras bien que tu auras l'affichage du echo l'espace laissé dans la chaine $valeur1 la rend plus grande ('155 ' et non '155')
mais si tu reprends le code en supprimant cet espace tu n'auras pas de probleme:
$valeur1='155';  
$valeur2='155';  
//si tu mets   
if ($valeur1>$valeur2)  
{  
echo 'php de merd***';  
}  

le mieux c'est déclarer ces variables de nombre directement sans passer par des chaine
$valeur1=155;  
$valeur2=155;  

là pas de soucis. Mais par contre si elle proviennent d'un formulaire c'est plus difficile mais tu peux toujours utiliser les fonction php intval et floatval qui transforment ces chaines en nombre entier ou en nombre décimal
ou des fonctions de supression des vides d'une chaine tu en trouveras plusieurs et tu peux meme en creer regarde ce code qui corrige le premier
$valeur1='155 ';  
$valeur2='155';  
$valeur1=str_replace(' ','',$valeur1);  
//si tu mets   
if ($valeur1>$valeur2)  
{  
echo 'php de merd***';  
}  

tu veras il n'y aura pas d'affichage

avec intval
$valeur1='155 ';  
$valeur2='155';  
$valeur1=intval($valeur1);  
$valeur2=intval($valeur2);  
//si tu mets   
if ($valeur1>$valeur2)  
{  
echo 'php de merd***';  
}  

pas d'affichage non plus
bon je j'espère que maintenant tu comprends d'où provient le probleme
@++ et bon courage! ;)
0
Yes merci de ta réponse,

Pourtant les valeurs étaient bien initialisé à 0 mais après je leur affecter une nouvelle valeur en appelant une fonction, exemple :
$valeur1 = $cart->get_products_gift


Il y a du avoir un soucis à ce niveau là. En rajoutant intval après l'instruction précédente, tout remarche nikel...

Encore merci et bonne journée

Mika
0