Format date en toute lettre

Mammouth du PHP | 620 Messages

24 juin 2008, 13:27

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.

Mammouth du PHP | 514 Messages

24 juin 2008, 13:33

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];
Ne jamais repousser à demain ce qu'on peut faire après demain ...

Mammouth du PHP | 620 Messages

24 juin 2008, 13:45

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 .

Mammouth du PHP | 1353 Messages

24 juin 2008, 13:49

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....
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Mammouth du PHP | 620 Messages

24 juin 2008, 14:02

ok sa fonctionne sauf que c'est en anglais.

Mammouth du PHP | 514 Messages

24 juin 2008, 14:03

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 ...
Ne jamais repousser à demain ce qu'on peut faire après demain ...

Eléphant du PHP | 377 Messages

24 juin 2008, 14:05

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
Petit scarabée deviendra grand

Eléphant du PHP | 377 Messages

24 juin 2008, 14:06

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
Petit scarabée deviendra grand

Mammouth du PHP | 514 Messages

24 juin 2008, 14:08

Je pensais à faire un équivalent du tableau php, mais en sql. doit bien y avoir une solution non ?
Ne jamais repousser à demain ce qu'on peut faire après demain ...

Mammouth du PHP | 620 Messages

24 juin 2008, 14:10

ok merci. je vais donc opté pour t'as premiere solution. 8-)

Mammouth du PHP | 1353 Messages

24 juin 2008, 14:12

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...
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Mammouth du PHP | 620 Messages

24 juin 2008, 14:23

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.

Mammouth du PHP | 1353 Messages

24 juin 2008, 14:28

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.
Modifié en dernier par guilt92 le 24 juin 2008, 14:31, modifié 1 fois.
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphant du PHP | 377 Messages

24 juin 2008, 14:30

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 :

Code : Tout sélectionner

SELECT UNIX_TIMESTAMP(date) AS date FROM photosnap
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é
Petit scarabée deviendra grand

Mammouth du PHP | 620 Messages

24 juin 2008, 14:46

j'ai les bonnes date avec un simple echo resultat["date"];