Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/08/2011, 20h49   #1
Invité de passage
 
Inscription : janvier 2010
Messages : 4
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 4
Points : 0
Points : 0
Par défaut Affichage date depuis MySQL en français et en lettres

Bonjour à tous,

Et voici encore un message de débutant (encore un ! :o),...

Je cherche à afficher une date sous la forme " mois (en lettre et en français) année (à 4 chiffre)" depuis une BD MySQL, où celle-ci est stockée en format américain yyyy-mm-dd.

J'ai tatonné jusqu'à trouver cela:

Code :
1
2
3
4
5
6
7
8
9
10
<?php
// connexion à la BD
	include '../php/include/connexion.php';	
// affichage de la date selectionnee
$select = "SELECT DATE_FORMAT(MA_COLONNE_DATE, '%B %Y') as MA_COLONNE_DATE from MA_TABLE where MA_COLONNE_DATE = '2011-03-01' ";
$result = mysql_query($select) or die ('Erreur : '.mysql_error() );
$row = mysql_fetch_array($result);
	echo '<p>'.$row['INS_DATE'].'</p>';
mysql_free_result($result);
?>
mais l'affichage du mois n'est pas reconnu, et j'obtiens: "B 2011" au lieu de "mars 2011"

Quelqun pourrait-il m'aider sur ce point ?

Avec tous mes remerciements par avance (Merci, Merci, Merci )

Bonne soirée à tous !
arch92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2011, 21h09   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 119
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 119
Points : 8 468
Points : 8 468
il faut changé le lc_time_names, si tu veux une date en francais, sinon le faire en PHP avec IntlDateFormatter
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2011, 21h53   #3
Invité de passage
 
Inscription : janvier 2010
Messages : 4
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 4
Points : 0
Points : 0
Tout d'abord Merci pour cette réponse rapide.

Petite précision utile, mon site est hebergé chez Free, je suis donc assez limité du côté Mysql (je passe par l'interface phpMyAdmin). J'y ai passé la commande suivante: "SET lc_time_names = 'fr_FR'" ce qui n'a pas donné le résultat escompté (peut-être m'y suis-je mal pris!)

Côté php je rame un peu (c'est un euphémisme ) avec IntlDateFormatter. J'ai essayé d'adapter (sans succès) l'exemple1 au français pour comprendre le fonctionnement:

Code :
1
2
$fmt = datefmt_create( "fr_FR" ,IntlDateFormatter::FULL, IntlDateFormatter::FULL,'French/France', IntlDateFormatter::GREGORIAN  );
echo datefmt_format( $fmt , 0);
Donc, si je pouvais avoir un petit peu plus d'explication cela m'aiderait beaucoup !

Merci d'avance !
arch92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2011, 22h05   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 119
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 119
Points : 8 468
Points : 8 468
chez free pas possible de changer la conf mysql, free n'as pas Intl non plus,
je te conseil donc d’utiliser strtotime + strftime
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2011, 22h28   #5
Invité de passage
 
Inscription : janvier 2010
Messages : 4
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 4
Points : 0
Points : 0
OK, Merci, j'ai regardé et testé avec une valeur pour comprendre le fonctionnement:

Code :
1
2
setlocale(LC_TIME, "fr_FR");
echo strftime('%B %Y', strtotime('2011-03-01'));
cela m'affiche bien "mars 2011"

Mais ce que je ne comprend pas; c'est comment faire la même chose avec l'enregistrement que je récupère avec mon select.

Quelle syntaxe dois-je utiliser ?

Merci encore pour cette précieuse aide
arch92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2011, 22h31   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 119
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 119
Points : 8 468
Points : 8 468
Citation:
Envoyé par arch92 Voir le message
OK, Merci, j'ai regardé et testé avec une valeur pour comprendre le fonctionnement:

Code :
1
2
setlocale(LC_TIME, "fr_FR");
echo strftime('%B %Y', strtotime('2011-03-01'));
cela m'affiche bien "mars 2011"

Mais ce que je ne comprend pas; c'est comment faire la même chose avec l'enregistrement que je récupère avec mon select.

Quelle syntaxe dois-je utiliser ?

Merci encore pour cette précieuse aide

tu mets $row['INS_DATE'] a la place de 2011-03-01
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/08/2011, 23h03   #7
Invité de passage
 
Inscription : janvier 2010
Messages : 4
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 4
Points : 0
Points : 0
Youpi !!!

Je réecris le code en entier pour ceux qui liront cet article (en corrigeant l'erreur que j'avais faite en écrivant INS_DATE au lieu de MA_COLONNE_DATE:

Code :
1
2
3
4
5
6
7
8
9
10
11
<?php
// connexion à la BD
	include '../php/include/connexion.php';	
// affichage de la date selectionnee
setlocale(LC_TIME, "fr_FR");
$select = "SELECT MA_COLONNE_DATE from MA_TABLE where MA_COLONNE_DATE = '2011-03-01' ";
$result = mysql_query($select) or die ('Erreur : '.mysql_error() );
$row = mysql_fetch_array($result);
	echo strftime('%B %Y', strtotime ($row['MA_COLONNE_DATE']));
mysql_free_result($result);
?>
Mille Merci stealth35 pour m'avoir aidé à comprendre comment cela fonctionne

Aaaargh! je ne trouve pas le bouton "résolu" Bon, j'envoie ce message, je suppose qu'il apparaît après.
arch92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2011, 15h50   #8
Invité de passage
 
Homme
Autre
Inscription : novembre 2011
Messages : 1
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Ile Maurice

Informations professionnelles :
Activité : Autre
Secteur : Conseil

Informations forums :
Inscription : novembre 2011
Messages : 1
Points : 1
Points : 1
Variante mysql

Code :
1
2
3
4
5
setlocale(LC_TIME, "fr_FR");
$select = "SELECT concat(monthname(date(ma_colonne_date)),' ',year(date(ma_colonne_date))) from ma_table where date(ma_colonne_date) = '2011-03-01' ";
$result = mysql_query($select) or die ('Erreur : '.mysql_error() );
 
echo $result
affiche mars 2011
willy11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h57.


 
 
 
 
Partenaires

Hébergement Web