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 :

Pb sur un script tout simple !


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 24
    Par défaut Pb sur un script tout simple !
    Bonjour tout le monde,

    j'ai un problème sur un script tout bête de calcul , c'est sûrement pas grand chose mais je suis dessus depuis longtemps et je n'arrive pas du tout à voir ce qui peut clocher...

    Le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if($to<=12){$frais=1.5;}
    if(($to>12)&&($to<14.85)){$frais=5.6;}
    if(($to>14.85)&&($to!=19.80)&&($to!=24.75)&&($to!=29.70)&&($to<70)){$frais=5.6;}
    if(($to==14.85)||($to==19.80)){$frais=2;}
    if(($to==24.75)||($to==29.70)){$frais=3;}
    if($to>=70){$frais=6.65;}
    $toto=$to+$frais;
    Pour vous expliquer un peu, ça calcul les frais selon le total ($to). Ca marche pour tout les cas de figure SAUF lorsque $to = 14.85, je comprend pas pourquoi

    En faisant un echo de $to, ça affiche bien 14.85 mais si je fais le test suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($to==14.85){echo '$to est égal à 14.85';}
    ça n'affiche rien !

    Help !

  2. #2
    Membre éclairé
    Homme Profil pro
    Coordinateur développement web
    Inscrit en
    Août 2004
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Coordinateur développement web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2004
    Messages : 475
    Par défaut
    Marche très bien chez moi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    $to=14.85;
    if($to<=12){$frais=1.5;}
    if(($to>12)&&($to<14.85)){$frais=5.6;}
    if(($to>14.85)&&($to!=19.80)&&($to!=24.75)&&($to!=29.70)&&($to<70)){$frais=5.6;}
    if(($to==14.85)||($to==19.80)){$frais=2;}
    if(($to==24.75)||($to==29.70)){$frais=3;}
    if($to>=70){$frais=6.65;}
    $toto=$to+$frais;
    echo $toto;
    $toto = 16.85

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 24
    Par défaut
    Merci pour ta réponse

    c'est vrai que si je prends cette portion de script à part dans une page test.php par ex. ben ça marche... C'est à n'y rien comprendre.
    C'est peut-être dû au reste du code. Mais je comprends pas vu que $to est bien calculé et fait bien 14.85 (puisqu'il s'affiche dans l'echo) pourquoi ça bloque ?
    et pourquoi ça bloque juste pour 14.85 et pas les autres (19.80, 24.75, etc...)

    je vais péter les plombs !

  4. #4
    Membre éclairé
    Homme Profil pro
    Responsable d'une MOE bancaire
    Inscrit en
    Juillet 2003
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Responsable d'une MOE bancaire

    Informations forums :
    Inscription : Juillet 2003
    Messages : 261
    Par défaut
    ca fonctionne meme avec ton script. Perso je ne vois pas le problème

    seule chose bizzare dans ton script, c'est ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($to==14.85){echo '$to est égal à 14.85';}
    essaye plutot avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($to==14.85){echo "$to est égal à 14.85";}

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 24
    Par défaut
    Du nouveau : si je force $to avec un ça fonctionne...
    Ce qui veut dire que ça vient peut-être du script de calcul de $to qui est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $i=0;
    $nb=1;
    $to=0;
     
    while ($i<=6) {
      if(${'prod'.$i}!=""){
      echo "Article ".$nb." : ".${'qte'.$i}." ".${'prod'.$i} ; //ex: Article 1 : 3 portes clés
      echo ." = ".${'prix'.$i}*${'qte'.$i}." €"; // prix unitaire x quantité
      $to+=${'prix'.$i}*${'qte'.$i}; // ajoute au total
      }
    $nb++;
    $i++;
    }
    mais c'est vraiment bizarre parce que quand je fais ça m'affiche bien
    $to=14.85
    donc la calcule a l'air bon et je vois toujours pas pourquoi ça bloque uniquement sur le total de 14.85 et pas les autres.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 24
    Par défaut
    SegmentationFault, merci de ta réponse, oui j'ai essayé, et ... c'est pareil

  7. #7
    Membre éclairé
    Homme Profil pro
    Responsable d'une MOE bancaire
    Inscrit en
    Juillet 2003
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Responsable d'une MOE bancaire

    Informations forums :
    Inscription : Juillet 2003
    Messages : 261
    Par défaut
    premierement il faut que t'errete de t'enerver car ca sert à rien!! le fait d'avoir des problèmes qu'on comprend pas fait partie integrante de la programmation....

    comment tu peux dire que ce script fonctionne ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    while ($i<=6) {
      if(${'prod'.$i}!=""){
      echo "Article ".$nb." : ".${'qte'.$i}." ".${'prod'.$i} ; //ex: Article 1 : 3 portes clés
      echo ." = ".${'prix'.$i}*${'qte'.$i}." €"; // prix unitaire x quantité
      $to+=${'prix'.$i}*${'qte'.$i}; // ajoute au total
      }
    $nb++;
    $i++;
    }
    essaye d'enlever le point rouge, afficher la valeur de $to à la sortie de ce scrip, s'assurer que c'est bien ce que t'attendais, et apres tu postules

    quand j'ai essayé ton scrip moi, j'ai eu
    PHP Parse error: parse error, unexpected '.'
    ca sert à rien de crier si on ne fait pas le choses dans les regles

  8. #8
    Membre émérite Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Par défaut
    Et avec un code plus propre comme 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    $to=14.85;
     
    if ($to<=12.0)
    {
    	$frais=1.5;
    }
    elseif ( ($to>12.0) && ($to<14.85) )
    {
    	$frais=5.6;
    }
    elseif ( ($to>=14.85) && ($to<70) )
    {
    	switch( $to )
    	{
    		case 14.85 :
    		case 19.80 :
    			$frais=2;
    			break;
    		case 24.75 :
    		case 29.70 :
    			$frais=3;
    			break;
    		default :
    			$frais=5.6;
    	}
    }
    else
    {
    	$frais=6.65;
    }
     
    $toto=($to+$frais);
     
    echo $toto;
    Cela ne fonctionne-t-il pas mieux ?

    Pour ma part, j'obtient bien 16.85

  9. #9
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 81
    Par défaut
    Bonjour

    Je sais pas si c'est ce que vous cherchez à obtenir.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($to==14.85){echo '$to est égal à 14.85';}
    ça n'affiche rien ! même pas $to ???[/CODE]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
     
    $to = 14.85;
     
    if($to==14.85){echo $to.' doit etre égal à 14.85'}
     
    echo $toto;
     
    ?>
    Je suis d'accord avec votre point de vue la programmation quand ca fonctionne pas du premier coup =>

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/11/2010, 14h25
  2. Commons validator sur un exemple tout simple?
    Par ®om dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 11/05/2009, 16h34
  3. java.lang.NoClassDefFoundError sur un exemple tout simple
    Par Invité dans le forum Services Web
    Réponses: 2
    Dernier message: 23/02/2009, 10h36
  4. Script tout simple avec GreaseMonkey
    Par jpascal dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/06/2007, 11h25
  5. Script tout simple qui ne marche pas sous IE
    Par Bleuarff dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/02/2007, 18h48

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