Bug bizarre [résolu]

Bug bizarre [résolu] - PHP - Programmation

Marsh Posté le 11-04-2005 à 22:47:56    

Pour afficher une date plus "clairement", j'ai écris ça :

Code :
  1. if ($Naissance != "0000-00-00" ){
  2.    $annee=substr($Naissance,0,4);
  3.    $mois=substr($Naissance,5,2);
  4.    $jour=substr($Naissance,8,2);
  5.    switch ($mois) {
  6.     case 01:
  7.      $mois = 'janvier';
  8.         break;
  9.     case 02:
  10.      $mois = 'février';
  11.         break;
  12.     case 03:
  13.      $mois = 'mars';
  14.         break;
  15.     case 04:
  16.      $mois = 'avril';
  17.         break;
  18.     case 05:
  19.      $mois = 'mai';
  20.         break;
  21.     case 06:
  22.      $mois = 'juin';
  23.         break;
  24.     case 07:
  25.      $mois = 'juillet';
  26.         break;
  27.     case 08:
  28.      $mois = 'aout';
  29.         break;
  30.     case 09:
  31.      $mois = 'septembre';
  32.         break;
  33.     case 10:
  34.      $mois = 'octobre';
  35.         break;
  36.     case 11:
  37.      $mois = 'novembre';
  38.         break;
  39.     case 12:
  40.      $mois = 'décembre';
  41.         break;
  42.    }


 
Apparemment rien de bien sorcier, et ça marche très bien ... sauf pour 2 mois !
Les mois d'Aout et de Septembre ne sont pas traités, et le 08 ou 09 n'est pas remplacé. Ce que je ne comprends pas, c'est pourquoi juste ces 2 mois là !
 
J'ai essayé sur plusieurs feuilles différentes, j'ai réecrit le code : rien à faire.
 
Avez-vous une idée sur ce comportement pour le moins ...bizarre ?
 
Merci,
Benjamin


Message édité par bepimaco le 12-04-2005 à 22:39:34

---------------
Bepimaco
Reply

Marsh Posté le 11-04-2005 à 22:47:56   

Reply

Marsh Posté le 12-04-2005 à 00:42:09    

Tu devrais strtotime cela te permettra d'utiliser apres la fonction date. et fais ceci
$arrMonth[0] = '';
$arrMonth[1] = 'Janvier';
$arrMonth[2] = 'Février';
etc...
et va le numero d'index de ce tableau comme numéro du mois.
exemple grossier
echo $arrMonth[date('m',strtotime(la_date_naissance))];

Reply

Marsh Posté le 12-04-2005 à 09:08:18    

+1, vaut mieux faire comme Berceker United
 
et dans ton code il y a une truffe : tu fais un switch sur une chaine de caractère, donc pourquoi mettre des valeurs entières dans tes case ?
ce n'est pas

case 01

mais

case '01'

Reply

Marsh Posté le 12-04-2005 à 12:02:42    

Merci pour vos pistes. Encore débutant en PHP, je vais me lancer dans cette fonction strtotime.
En attendant, j'ai testé les guillemets : c'était ça.
 
Merci à vous, je me met au boulot.


---------------
Bepimaco
Reply

Marsh Posté le 12-04-2005 à 16:36:51    

Si tu fais précéder un chiffre de 0 ça veut dire que tu es en octal ;) : http://www.php.net/manual/en/langu [...] nteger.php
 
Et 08 et 09 en octal ça n'existe pas :D


Message édité par ratibus le 12-04-2005 à 16:37:51
Reply

Marsh Posté le 12-04-2005 à 22:31:18    

Merci de l'info ratibus, ça passe donc de bug bizarre à mauvaise programmation comprise.


---------------
Bepimaco
Reply

Marsh Posté le 13-04-2005 à 08:20:48    

:D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed