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 pour convertir un mois numérique au format lettre


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 54
    Points : 72
    Points
    72
    Par défaut Problème pour convertir un mois numérique au format lettre
    Bonjour,

    Je fais face à un problème que j'ai du mal à comprendre, c'est pourquoi je viens vers vous en espérant que vous puissiez m'éclairer un peu.

    Voici mon code (simplifié) qui vise à transformer au format lettre le numéro d'un mois :

    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    <?php
    $date_inscription = '15/09/2010';
     
    $date_inscription_exploded = explode('/', $date_inscription);
     
    echo $date_inscription_exploded[1];
     
    switch ($date_inscription_exploded[1])
    {
    	case 01:
    		$mois_inscription = ' janvier ';
    		break;
     
    	case 02:
    		$mois_inscription = ' février ';
    		break;
     
    	case 03:
    		$mois_inscription = ' mars ';
    		break;
     
    	case 04:
    		$mois_inscription = ' avril ';
    		break;
     
    	case 05:
    		$mois_inscription = ' mai ';
    		break;
     
    	case 06:
    		$mois_inscription = ' juin ';
    		break;
     
    	case 07:
    		$mois_inscription = ' juillet ';
    		break;
     
    	case 08:
    		$mois_inscription = ' août ';
    		break;
     
    	case 09:
    		$mois_inscription = ' septembre ';
    		break;
     
    	case 10:
    		$mois_inscription = ' octobre ';
    		break;
     
    	case 11:
    		$mois_inscription = ' novembre ';
    		break;
     
    	case 12:
    		$mois_inscription = ' décembre ';
    }
     
    echo $mois_inscription;
    ?>
    Le code fonctionne parfaitement lorsque le mois est compris entre 01 et 07 ainsi qu'entre 10 et 12 (ce script m'affiche donc par exemple "03 mars" si la date est "15/03/1988") <gras>MAIS</gras> il ne m'affiche que "08" ou "09" lorsque date est par exemple 15/08/1988 ou 15/09/1988... impossible donc de retranscrire ces deux mois au format lettre... o.O

    Cas concret :
    1) un membre qui s'est inscrit le 25 mars 2010, aucun problème d'affichage :
    http://www.e-storia.info/fiche_membre.php?id=1
    2) un membre qui s'est inscrit le 26 aout 2010, le mois ne s'affiche pas :
    http://www.e-storia.info/fiche_membre.php?id=75

    Quelqu'un pourrait-il m'indiquer d'où vient mon erreur ? Merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 54
    Points : 72
    Points
    72
    Par défaut
    Problème résolu en supprimant le 0 devant le numéro du mois car apparemment un entier précédé d'un 0 est considéré en octal (base 8). Comme 8 et 9 n'existent pas en octal ces chiffres deviennent 0 dans le code.

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Bonjour,

    Tu as d'autres solutions plus rapide qu'un "switch".

    Solution n° 1
    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
    <?php
      $lesMois = array(
                       '01' => 'janvier',
                       '02' => 'fevrier',
                       '03' => 'mars',
                       '04' => 'avril',
                       '05' => 'mai',
                       '06' => 'juin',
                       '07' => 'juillet',
                       '08' => 'août',
                       '09' => 'septembre',
                       '10' => 'octobre',
                       '11' => 'novembre',
                       '12' => 'décembre'
                      );
     
      $date_inscription = '15/09/2010';
      list($jour, $mois, $annee) = explode('/', $date_inscription);
     
      echo $jour . ' ' . $lesMois[$mois] . ' ' . $annee . '<br>';
    ?>
    Solution n° 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
      setlocale(LC_ALL, 'fra');
      list($jour, $mois, $annee) = explode('/', $date_inscription);
     
      echo strftime('%d %B %Y', mktime(0, 0, 0, $mois, $jour, $annee)) . '<br>';
    ?>
    Pour cette dernière, le 2è paramètre de "setlocale" est différent selon que l'on soit sous windows ou linux.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 54
    Points : 72
    Points
    72
    Par défaut
    En effet, ca m'a l'air bien plus optimisé, merci !!

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

Discussions similaires

  1. Réponses: 26
    Dernier message: 03/11/2008, 16h29
  2. [SQL2K] Problème pour convertir un timestamp en datetime !!
    Par MeHo_ dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 04/03/2008, 11h02
  3. Réponses: 11
    Dernier message: 19/02/2007, 00h20
  4. problème pour récupérer le mois et l'année dans ma requête SQL
    Par rob2-9 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 10/08/2006, 14h45
  5. [C#] Problème pour convertir .Color en .Brush
    Par pymouse dans le forum Windows Forms
    Réponses: 2
    Dernier message: 19/05/2005, 15h19

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