[PHP] Probleme calcul par tranches

Résolu
maxland -  
 maxland -
Bonjour a tous,
j'ai un probleme avec une fonction de calcul par tranches qui s'arrete a la premiere tranche.

j'ai limpression que ma variable est egale a 0 alors quelle est affichée plus haut dans ma page :s

voici mon code :

function calcul_frais()
{
//$poids = intval($poids);

if ($poids <= 1000)
{
return 5;
}
else 
{	
if ($poids > 1000 && $poids <= 2000 )
{
return 6;
}
else 
{
if ($poids > 2000 && $poids <= 3000 )
{
return 7;
}
else 
{	
if ($poids > 3000 && $poids <= 5000 )
{
return 8.5;
}
else 
{	
if ($poids > 5000 && $poids <= 7000 )
{
return 9.5;
}
else 
{
if ($poids > 7000 && $poids <= 10000 )
{
return 11;
}
else 
{
if ($poids > 10000 )
{
return "autre";
}
}
}
}
}
}
}
		
}


exemple : si le poids total est egal 1800 (qui est plus grand que 1000 mais plus petit que 2000) la fonction doit afficher 6, mais là elle n'affiche toujours que la premiere valeur, 5 donc.

j'ai remplacé la variable $poids par 1800 et la fonction marche parfaitement (elle affiche bien 6).
en commentaire j'ai mis la conversion en entier grace a intval() mais ca ne fonctionne pas.

voila je vous remercies d'avance et a tres bientot,
maxland
Configuration: Windows XP
Opera 9.64

3 réponses

  1. jeangilles Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   186
     
    ta variable $poids est en effet bien égale à 0 !

    en effet, à part si elles sont définies en globales, les variables sont locales aux fonctions

    remplace ta premiere ligne par

    function calcul_frais($poids)

    et quand tu appelles ta fonction, fais aussi calcul_frais($poids)
    1
  2. giheller Messages postés 1892 Date d'inscription   Statut Membre Dernière intervention   146
     
    bonjour,

    ceci fonctionne bien chez moi :
    <?php
    function frais($poids){
    if ($poids <= 1000)
    {
    return 5;
    }
    else
    {
    if ($poids > 1000 && $poids <= 2000 )
    {
    return 6;
    }
    else
    {
    if ($poids > 2000 && $poids <= 3000 )
    {
    return 7;
    }
    else
    {
    if ($poids > 3000 && $poids <= 5000 )
    {
    return 8.5;
    }
    else
    {
    if ($poids > 5000 && $poids <= 7000 )
    {
    return 9.5;
    }
    else
    {
    if ($poids > 7000 && $poids <= 10000 )
    {
    return 11;
    }
    else
    {
    if ($poids > 10000 )
    {
    return "autre";
    }
    }
    }
    }
    }
    }
    }
    }
    //------------------------------------
    $poids=2300;
    echo $poids."<br>";
    $poids = intval($poids);
    echo $poids."<br>";
    $r= frais($poids);
    echo $r;
    ?>
    1
  3. maxland
     
    pfff !

    je suis trop bidon !

    merci les gars, reponses rapides et efficaces, vous etes super !
    0