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 :

Erreur de condition (pas logique)


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 519
    Points : 311
    Points
    311
    Par défaut Erreur de condition (pas logique)
    Bonjour,

    Soit mon code PHP suivant :

    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
    echo $mois;	  
    if ($mois==01)
    {
    $nom_mois="Janvier";
    }
    elseif ($mois==02)
    {
    $nom_mois="Février";
    }
    elseif ($mois==03)
    {
    $nom_mois="Mars";
    }
    elseif ($mois==04)
    {
    $nom_mois="Avril";
    }
    elseif ($mois==05)
    {
    $nom_mois="Mai";
    }
    elseif ($mois==06)
    {
    $nom_mois="Juin";
    }
    elseif ($mois==07)
    {
    $nom_mois="Juillet";
    }
    elseif ($mois==08)
    {
    $nom_mois="Aout";
    }
    elseif ($mois==09)
    {
    $nom_mois="Septembre";
    }
    elseif ($mois==10)
    {
    $nom_mois="Octobre";
    }
    elseif ($mois==11)
    {
    $nom_mois="Novembre";
    }
    elseif ($mois==12)
    {
    $nom_mois="Décembre";
    }
    echo "$nom_mois";
    Il me retourne ça :

    08 Avril
    J'ai beau chercher mais ...

  2. #2
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 519
    Points : 311
    Points
    311
    Par défaut
    Bon j'ai rajouté "08" et ça fonctionne, alors que pour les 7 précédents mois ça marchait nickel

  3. #3
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 557
    Points
    557
    Par défaut
    C'est parce que tes comparaisons ne sont pas correctes: si tu précèdes un nombre de 0, tu utilises le système octal. Et le système octal ne prend les chiffres que de 0 à 7. D'où le fait que ca "marchait" jusque 7 et pas au dela.

    http://fr2.php.net/manual/fr/language.types.integer.php

    En mettant des guillemets autour comme tu l'as fait, tu compares des strings, ce qui est plus correct au vu de ce que contient apparement $mois.
    Merci à Microsoft pour avoir transformé un métier relativement terne et basé sur une approche bêtement technique et rigoureuse des faits, en challenge quotidien, nécessitant une remise en question permanente à l'échelle du quart d'heure

  4. #4
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Bonjour,

    Au lieu d'utiliser des if/elseif en cascade, tu devrais utiliser le switch().
    Le code est beaucoup plus facile à lire/maintenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    switch($mois){
     
    case "01" : $nom_mois = "Janvier"; break;
    case "02" : $nom_mois = "Février"; break;
    case "03" : $nom_mois = "Mars"; break;
    case "04" : $nom_mois = "Avril"; break;
    // etc.....
    }
    Tu peux également utiliser array_search() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
     
    $tab_mois = array(
                      "janvier" =>"01",
                      "fevrier" => "02",
                      "mars" => "03",
                      "avril" => "04",
                      "mai" => "05"
                      );    //etc...
     
    $nom_mois =  array_search($mois, $tab_mois);
    echo $nom_mois;
    ?>

  5. #5
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Citation Envoyé par N1bus Voir le message
    Tu peux également utiliser array_search()
    En inversant les clefs/valeurs ont peut s'affranchir d'une fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $tMois = array(
                    '01' => 'janvier',
                    '02' => 'février',
                    '03' => 'mars',
                    '04' => 'avril',
                    '05' => 'mai',
                    ...
                  );
     
    echo $nom_mois = $tMois[$mois];

  6. #6
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 557
    Points
    557
    Par défaut
    Citation Envoyé par Bisûnûrs Voir le message
    En inversant les clefs/valeurs ont peut s'affranchir d'une fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $tMois = array(
                    '01' => 'janvier',
                    '02' => 'février',
                    '03' => 'mars',
                    '04' => 'avril',
                    '05' => 'mai',
                    ...
                  );
     
    echo $nom_mois = $tMois[$mois];
    Pas forcément L'avantage de la fonction array_search étant qu'elle retourne "false" si pas trouvé. La technique de l'index renverra par contre une notice: index not found...
    Mais bon, cette discussion sort un peu du cadre du problème de base qui était l'octal
    Merci à Microsoft pour avoir transformé un métier relativement terne et basé sur une approche bêtement technique et rigoureuse des faits, en challenge quotidien, nécessitant une remise en question permanente à l'échelle du quart d'heure

  7. #7
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 519
    Points : 311
    Points
    311
    Par défaut
    Merci pour vos réponses

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

Discussions similaires

  1. Erreur formulaire contact pas logique
    Par pozek dans le forum Langage
    Réponses: 3
    Dernier message: 19/03/2012, 09h16
  2. erreur n'est pas logique
    Par info_sara dans le forum Flash
    Réponses: 14
    Dernier message: 05/06/2008, 21h36
  3. erreur n'est pas logique
    Par info_sara dans le forum C++Builder
    Réponses: 9
    Dernier message: 01/06/2008, 17h51
  4. Réponses: 4
    Dernier message: 30/04/2004, 13h14
  5. [procédure PG] Une erreur mystérieuse...ou pas
    Par doohan dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 09/07/2003, 17h16

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