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 :

Problème d'opérateur


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2004
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 97
    Par défaut Problème d'opérateur
    Bonjour à tous,
    voici un mon problème
    j'ai une variable total qui contient le résultat d'un soustraction
    ensuite je voudrai que si $total == 0.85 que cela m'écrive ok
    mais lorsque le résultat est 0.85 cela ne marche pas.
    voici ci-dessus ce que j'ai fait mais cela ne marche pas

    echo $total = ($nb1 - $nb2);

    if ($total == 0.85){
    echo 'ok';
    else {
    echo 'pas ok';
    }

    merci de votre aide

  2. #2
    Membre éclairé Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Par défaut
    Salut,
    En PHP je ne sais pas si une variable est par défaut un entier ou bien un float ou autre chose...
    Ce que je te conseil de faire, c'est de caster tes variables en float.
    Par exemple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    (float)$nb1;
    (float)$nb2;
    (float)$total = ($nb1 - $nb2); 
     
    if ($total == 0.85){ 
    echo 'ok'; 
    else { 
    echo 'pas ok'; 
    }
    Malheureusement je ne peux pas encore tester (tout à l'heure), mais c'est la premiere chose à laquel je pense.

    Dit moi si ca marche

    ++
    ShinJava

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2004
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 97
    Par défaut Problème d'opérateur
    Merci de ton aide mais cela ne marche pas je comprend pas

  4. #4
    Rédactrice
    Avatar de xave
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2002
    Messages : 871
    Par défaut
    Essaie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    echo $total = ($nb1 - $nb2); 
     
    if ($total == "0.85"){ 
    echo 'ok'; 
    else { 
    echo 'pas ok'; 
    }
    Et vérifie aussi que ton séparateur décimal est bien le '.'

  5. #5
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Il n'y a pas de raison que ça marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $nb1 = 1;
    $nb2 = 0.15;
     
    $total = $nb1 - $nb2;
     
    var_dump($total, $total == 0.85);
    ?>

  6. #6
    Membre éclairé Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Par défaut
    Salut,
    Il manque un crochet dans ton IF

    Voila ce que je viens de faire chez moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    (float)$nb1 = 1.25; 
    (float)$nb2 = 0.40; 
    (float)$total = ($nb1 - $nb2); 
     
    if ($total == 0.85)
    { 
    echo 'ok'; 
    }
    else 
    { 
    echo 'pas ok'; 
    }
    Ca m'affiche OK

    EDIT : tu n'a pas besoin de caster en float finalement

    Essaye ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $nb1 = 1.25; 
    $nb2 = 0.40; 
    $total = ($nb1 - $nb2); 
     
    if ($total == 0.85)
    { 
    echo 'ok'; 
    }
    else 
    { 
    echo 'pas ok'; 
    }
    Chez moi ca m'affiche "ok" (PHP5)

    ++
    ShinJava


    EDIT 2 : en fait j'aurais du te demander direct ce que tu voulais dire par "ca marche pas" ^^ mais le fait d'avoir mis le crochet dans le if ne pose plus aucun pb

  7. #7
    Membre confirmé
    Inscrit en
    Mars 2004
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 97
    Par défaut Problème d'opérateur
    Hello merci encore de ton aide je crois que j'ai un problème de transtypage car à la base ce sont des chaines de caractères
    voici le code exacte je veux calculer 2 heures ensuite j'enlève les 2 points
    pour pouvoir calculer

    exemple $nb1 = "12:85"
    exemple $nb2 = "12:00"
    (float)$total = 0;
    $nb1= str_replace(":",".",$nb1);
    $nb2= str_replace(":",".",$nb2);

    $total = ($nb1 - $nb2);

    if ($total == 0.85){
    echo 'ok'; }
    else {
    echo 'pas ok';
    }
    cela m'affiche toujour pas ok

    total me donne bien 0.85 d'ou ma question 0.85 est en numérique ?
    faut-il le convertir 0.85 si oui comment ?
    merci encore de votre aide

  8. #8
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    12:85 ???? C'est une heure ça ?

  9. #9
    Membre confirmé
    Inscrit en
    Mars 2004
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 97
    Par défaut Problème d'opérateur
    Oui c'est vrai mais c'était un exemple
    as-tu une idée ?
    merci encore de votre patience je suis débutant

  10. #10
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Tu veux avoir la différence entre deux heures ?

  11. #11
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    hop :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    $nb1 = "12:30";
    $nb2 = "11:05";
     
    list($nb1_h, $nb1_m) = explode(':', $nb1);
    list($nb2_h, $nb2_m) = explode(':', $nb2);
    $nb1_m += $nb1_h*60;
    $nb2_m += $nb2_h*60;
     
    $total = $nb1_m - $nb2_m;
     
    var_dump($total, $total == 85);
    ?>

  12. #12
    Membre éclairé Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Par défaut
    Citation Envoyé par Mr N.
    hop :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    $nb1 = "12:30";
    $nb2 = "11:05";
     
    list($nb1_h, $nb1_m) = explode(':', $nb1);
    list($nb2_h, $nb2_m) = explode(':', $nb2);
    $nb1_m += $nb1_h*60;
    $nb2_m += $nb2_h*60;
     
    $total = $nb1_m - $nb2_m;
     
    var_dump($total, $total == 85);
    ?>
    Je sais que je ne suis pas l'auteur de ce topic, mais je tenais à te remercier pour ton code Mr.N, ca m'a servi d'explemple pour comprendre la fonction explode et var_dump. Thank you

    ++
    ShinJava

  13. #13
    Membre confirmé
    Inscrit en
    Mars 2004
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 97
    Par défaut Problème d'opérateur
    Merci encore de votre patience


    Non je veux juste que si le calcul entre $nb1 et $nb2 égal 0.85
    qu'il écrive ok

    Tandis-dans ce code il multiplie par 60

  14. #14
    Rédactrice
    Avatar de xave
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2002
    Messages : 871
    Par défaut
    Ben oui mais si tu cherches dans ton code à comparer des heures, le code de Mr N. est beaucoup mieux adapté...

    Enfin, tout dépend de ce que tu cherches à faire au final

  15. #15
    Membre confirmé
    Inscrit en
    Mars 2004
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 97
    Par défaut Problème d'opérateur
    Hello je ne veux pas comparer je veux juste soustraire une heure et une autre heure

  16. #16
    Membre éclairé Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Par défaut
    Iomega, c'est ce que le code de Mr N. fait.
    En gros il prend 2 heures différentes 12:30 et 11:05 et il les converti en minutes

    12:30 nous donne 750 minutes
    11:05 nous donne 665 minutes

    Ensuite il soustrait les 2 chiffres, c'est a dire 750 - 665, ce qui nous donne bien 85.

    Et pour aller plus loin dans le code tu peux tres bien convertir ce résultat en heure : )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    if ( $total >= 60 )
    {
    $heures = ($total / 60); 
    $minutes = ($total % 60);
    }
    else {
    $heures = 0;
    $minutes = $total;
    }
     
     
    echo (int)$heures. ':' .$minutes;
    Et ca t'affichera 1:25 (c'est bien 85minutes)

    Par contre j'ai fais le code à la va vite, y'a surement moyen de l'optimiser.

    --------------------------
    J'ai une question vis a vis de ce code, pourquoi le cast (int) ne marche pas dans la condition if ? quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    (int)$heures = ((int)$total / 60); 
    echo $heures;
    Ca me retourne un double :/ Pourquoi ?
    --------------------------

    ++
    ShinJava

  17. #17
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Hello je ne veux pas comparer je veux juste soustraire une heure et une autre heure
    ben demande à ton petit frère, le calcul avec les heures, c'est quel niveau ? ce2 ?

    tu peux pas soustraire des heures:minutes de manières naturelles !
    tu dois tout convertir en minutes et soustraire le tout...

  18. #18
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Citation Envoyé par ShinJava
    --------------------------
    J'ai une question vis a vis de ce code, pourquoi le cast (int) ne marche pas dans la condition if ? quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    (int)$heures = ((int)$total / 60); 
    echo $heures;
    Ca me retourne un double :/ Pourquoi ?
    --------------------------
    Parceque tu as caster dans le vide. il faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo (int)$heures 
    ou 
    $heures = (int)$heures

  19. #19
    Membre éclairé Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Par défaut
    Citation Envoyé par Mr N.
    Citation Envoyé par ShinJava
    --------------------------
    J'ai une question vis a vis de ce code, pourquoi le cast (int) ne marche pas dans la condition if ? quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    (int)$heures = ((int)$total / 60); 
    echo $heures;
    Ca me retourne un double :/ Pourquoi ?
    --------------------------
    Parceque tu as caster dans le vide. il faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo (int)$heures 
    ou 
    $heures = (int)$heures
    Ah okiii ! Je comprends !
    En fait le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo (int)$heures. ':' .$minutes;
    Je l'avais mis en dernier recours car les cast (int) de la condition IF ne fonctionnait pas.

    Thank you again Mr N.

    Bon courage Iomega

    ++
    ShinJava

Discussions similaires

  1. [Vxi3] Problème SommeCumulative + opérateur PourTout
    Par Bender78 dans le forum Webi
    Réponses: 3
    Dernier message: 04/09/2009, 14h02
  2. Réponses: 10
    Dernier message: 22/09/2008, 10h23
  3. [MySQL] probléme select opérateur AND
    Par Anardil dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 11/07/2007, 14h48
  4. [Tableaux] Problème d'opérateurs de bits
    Par tonypeter dans le forum Langage
    Réponses: 2
    Dernier message: 04/03/2007, 16h09
  5. [MySQL] Problème avec opérateur de condition
    Par Dhumkazaar dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 02/03/2007, 18h41

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