Problème de date [résolu]

Problème de date [résolu] - PHP - Programmation

Marsh Posté le 25-02-2009 à 21:11:55    

Je crée un site PHP (je suis débutant) et j'obtiens une date sous le format JJ/MM/AAAA via un formulaire.
Cette date est utilisée sous le format JJ/MM/AAAA puis JJ mmmmmmmm AAAA, il faut donc la convertir en lettres...
Ce qui est réalisé à partir des lignes de codes suivantes (cependant cela ne fonctionne pas pour les mois de aout et septembre (08 & 09)!!!!!!!
 
Que dois-je faire ???
 

Citation :

$fp = fopen("$annee-$mois-$jour/Date_de_l_archive_en_lettre.txt",a);
 
If ($mois == 01)
 $mois_en_lettre = "janvier";
If ($mois == 02)
 $mois_en_lettre = "février";
If ($mois == 03)
 $mois_en_lettre = "mars";
If ($mois == 04)
 $mois_en_lettre = "avril";
If ($mois == 05)
 $mois_en_lettre = "mai";
If ($mois == 06)
 $mois_en_lettre = "juin";
If ($mois == 07)
 $mois_en_lettre = "juillet";
If ($mois == 08)
 $mois_en_lettre = "aout";
If ($mois == 09)
 $mois_en_lettre = "septembre";
If ($mois == 10)
 $mois_en_lettre = "octobre";
If ($mois == 11)
 $mois_en_lettre = "novembre";
If ($mois == 12)
 $mois_en_lettre = "décembre";
 
fputs($fp, "$jour $mois_en_lettre $annee"."\r\n" );
fclose($fp);


Message édité par alx067 le 26-02-2009 à 00:07:47
Reply

Marsh Posté le 25-02-2009 à 21:11:55   

Reply

Marsh Posté le 25-02-2009 à 21:44:20    

Tout d'abord, je crois qu'il vaut mieux que tu utilises le fonction switch au lieu de 12 if :)
Pour le reste, désolé je ne peux pas t'aider

Reply

Marsh Posté le 25-02-2009 à 21:52:15    

D'accord je vais essayer la fonction switch mais cela ne répond pas à la question ???

Reply

Marsh Posté le 25-02-2009 à 22:07:06    

J'ai testé le fonction switch
1. Elle est plus longue...
2. Même problème... les valeurs pour aout et septembre renvoie une erreur (08 & 09)...
 

Citation :

$fp = fopen("$annee-$mois-$jour/Date_de_l_archive_en_lettre.txt",a);
 
switch ($mois) {
 case 01:    
 $mois_en_lettre = "janvier";
 break;
 case 02:    
 $mois_en_lettre = "février";
 break;
 case 03:    
 $mois_en_lettre = "mars";
 break;
 case 04:    
 $mois_en_lettre = "avril";
 break;
 case 05:    
 $mois_en_lettre = "mai";
 break;
 case 06:    
 $mois_en_lettre = "juin";
 break;
 case 07:    
 $mois_en_lettre = "juillet";
 break;
 case 08:    
 $mois_en_lettre = "août";
 break;
 case 09:    
 $mois_en_lettre = "septembre";
 break;
 case 10:    
 $mois_en_lettre = "octobre";
 break;
 case 11:    
 $mois_en_lettre = "novembre";
 break;
 case 12:    
 $mois_en_lettre = "décembre";
 break;
 default:    
 echo "Vous avez entré une valeur erronée...";}
 
fputs($fp, "$jour $mois_en_lettre $annee"."\r\n" );
fclose($fp);


Message édité par alx067 le 25-02-2009 à 22:07:25
Reply

Marsh Posté le 25-02-2009 à 22:30:26    

Personne ???  

Reply

Marsh Posté le 25-02-2009 à 23:04:20    

Si tu préfixe les nombres par 0, alors ça veut dire qu'ils sont en octal. Et en octal, 8 et 9 n'existent pas. Vire tous les zéros (qui d'ailleurs ne servent à rien) :)

Reply

Marsh Posté le 25-02-2009 à 23:12:56    

J'ai modifié le titre du topic, "A lire..." étant évidemment hors charte.

Reply

Marsh Posté le 26-02-2009 à 00:07:18    

Merci, FlorentG. Maintenant j'ai la réponse et cela fonctionne.  :)  
 
Pour le 0, j'ai ajouté une série de If qui ajoute le zéro (étant utile pour les classer dans l'ordre alphabétique).
 
Mais j'ai pas trop compris cette histoire d'octal...


Message édité par alx067 le 26-02-2009 à 00:08:54
Reply

Marsh Posté le 26-02-2009 à 00:10:22    

octal = base 8
 
Un nombre en dur qui commence par 0 est considéré comme étant en base 8.

Reply

Marsh Posté le 26-02-2009 à 00:19:16    

On utilise traditionnellement la base 10, donc dix signes (0123456789)
 
On commence à 0, jusqu'à 9. Arrivé au bout, on recommence en rajoutant un chiffre : 7, 8, 9, 10, 11, 12
 
Donc en base 8, on utilise 8 signes (01234567) :
0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, etc.

Reply

Marsh Posté le 26-02-2009 à 00:19:16   

Reply

Marsh Posté le 26-02-2009 à 00:22:44    

Plus que je n'espérais...
:)

Reply

Sujets relatifs:

Leave a Replay

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