Page 1 sur 2
Format date en toute lettre
Posté : 24 juin 2008, 13:27
par fabrice88250
Bonjour,
pour faire afficher ma date au format europeen j'utilsie dans mon select :
Code : Tout sélectionner
$sql = "SELECT *, DATE_FORMAT(date,'%d/%m/%Y - %H:%i') as date FROM `photosnap` ORDER BY `id` DESC";
puis pour l'affichage :
echo' , $resultat['date'] , ' ;
ma question est la suivante :
ce resultat nous affiche donc la date en chiffre. Comment faire par exemple si je veus le resultat en lettres (par exemple le mois) ? au lieu d'avoir 06 on aurait juin.
Posté : 24 juin 2008, 13:33
par mcorgnet
En plaçant tes mois dans un tableau de variables :
$listeMois = array('01' => 'janvier', '02' => 'fevrier' ....);
et en récupérant la valeur de ton mois dans ta date en sortie de BD (avec MONTH en sql), puis depuis php :
echo $listeMois [$month];
Posté : 24 juin 2008, 13:45
par fabrice88250
ok merci. je regardai sur
http://fr.php.net/date et il me semblait que l'on pouvait afficher en toute lettre sen etre obligé de passer par un tableau de variables .
Posté : 24 juin 2008, 13:49
par guilt92
Tu peux le faire, par contre si tu n'es pas en php 5 je crois que tu dois passer par un tableau pour l'avoir en français... Mais sinon par exemple :
echo date("F",$resultat['date']);
devrait fonctionner (et tu peux rajouter autour le jour et l'année si tu veux....
Posté : 24 juin 2008, 14:02
par fabrice88250
ok sa fonctionne sauf que c'est en anglais.
Posté : 24 juin 2008, 14:03
par mcorgnet
C'est pour ça que je te parlais d'un tableau de variables, d'un autre côté ...
EDIT
Remarque, je me demande si c'est pas faisable en SQL ...
Posté : 24 juin 2008, 14:05
par Shrell
sans vouloir dire de bêtise, je crois que date() renverra toujours un résultat en anglais
si tu veux un résultat en français, regarde du coté de setlocale() et strftime(), qui ne t'obligent pas à passer par un tableau
Posté : 24 juin 2008, 14:06
par Shrell
EDIT
Remarque, je me demande si c'est pas faisable en SQL ...
Si, mais tu auras le même résultat, c'est à dire en anglais
Posté : 24 juin 2008, 14:08
par mcorgnet
Je pensais à faire un équivalent du tableau php, mais en sql. doit bien y avoir une solution non ?
Posté : 24 juin 2008, 14:10
par fabrice88250
ok merci. je vais donc opté pour t'as premiere solution.

Posté : 24 juin 2008, 14:12
par guilt92
Shrell marque un point :
setlocale(LC_TIME, 'fr_FR','fra');
echo strftime("%B",$resultat["date"]);
fonctionne (sans tableau

).
En php5 je pensais que date_timezone_set() servait aussi pour la fonction date() mais j'ai pas testé donc je suis pas sûr...
Posté : 24 juin 2008, 14:23
par fabrice88250
ok c'est bien en francais mais pourquoi il me sort un date qui n'a rien a voir avec la réalité ?
Code : Tout sélectionner
setlocale(LC_TIME, 'fr_FR','fra');
echo strftime("%A %e %B %Y",$resultat["date"]);
il me sort toujours : jeudi 1 janvier 1970 au lieu des bonnes dates.
Posté : 24 juin 2008, 14:28
par guilt92
Ton champ date dans ta table est bien de format DATE ?
Fais un echo resultat["date"]; pour voir si tu récupères la bonne valeur.
Posté : 24 juin 2008, 14:30
par Shrell
Il faut passer à la fonction strftime non pas une date mais un timestamp UNIX. Du fait qu'il ne reconnait pas ce que tu lui passes en paramètre, il te renvoie le 1er Janvier 1970, qui correspond au temps 0 dans le monde *NIX
Il faut que tu transformes ta date en timestamp, pour cela deux moyens au choix :
ou, en gardant ta requete actuelle
strftime("%A %e %B %Y", strtotime($resultat["date"]));
Au passage : évite d'appeler ton champ "date", c'est un mot clé réservé
Posté : 24 juin 2008, 14:46
par fabrice88250
j'ai les bonnes date avec un simple echo resultat["date"];