8800 sujets

Développement web côté serveur, CMS

bonjour,
voilà pour transformer la date actuel (du jour en cour) en fr je fais :



$mois = array(1=>'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'); 
$jours = array('dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'); 
  
echo 'Nous sommes le '.$jours[date('w')].' '.date('j').' '.$mois[date('n')].' '.date('Y'); 




------------

maintenant dans ma base de données j'enregistre la date lorsque j'ajoute une actualité sur mon site.
pour afficher cette date dans le sens europeen je fais dans ma requet :

 

$requete = mysql_query("SELECT *, DATE_FORMAT(date,'%d/%m/%Y') as date FROM infonews ORDER BY id DESC"); 




et je l'affiche de cette facon :
PHP:


echo $result['date']; 




et j'obtiens à l'affichage : 30/7/2009

je souhaiterai au lieu de recuperer en chiffre ma date sortie de ma base de données l'avoir en toute lettre comme par exemple jeudi 30 juillet 2009

j'ai essayé d'adapté la 1ere solution à l'affichage de la date sortie de ma bdd mais je n'y arrive pas.
de plus je voudrai un fois cela fait decomposer cette date afin d'avoir le jour dans un varibale $jour le mois dans un varable $moi et l'année dans $année (c'est pour la mise en forme de la date.)

pouvez vous m'aider ?
Modifié par fabrice88 (01 Aug 2009 - 11:29)
j'ai trouvé un solution rapide et efficace

setlocale(LC_TIME, 'french', 'fr_FR'); 
$requete = mysql_query("SELECT * FROM infonews ORDER BY id DESC"); 
while( $result = mysql_fetch_array( $requete ) )
{
echo ucwords(strftime("%A %d %B %Y", strtotime($result['date'])));
....
}

j'ai bien l'affichage souhaité et je peu sans probleme decomposé ma date de cette facon



$jour = ucwords(strftime("%A %d", strtotime($result['date'])));
$mois = ucwords(strftime("%B", strtotime($result['date'])));
$annee = ucwords(strftime("%Y", strtotime($result['date'])));




par contre les accents (uniquement sur les date par sur le autres textes de ma bdd) ne passent pas. par exemple au lieu de m'ecrir Août j'ai Ao�t (au lieu de � y'a un carré) .

comme regler ce probleme d'accent qui ne se fait que sur le dates ?
Modifié par fabrice88 (01 Aug 2009 - 10:39)
Par défaut la sortie de strftime est encodée en latin1 (ISO-8859-1). Si ta page est en utf8 tu peux faire :
setlocale(LC_TIME, 'fr_FR.UTF-8');
En local (avec Windows) je ne sais pas comment faire car setlocale(LC_TIME, 'french.UTF-8'); ne fonctionne pas. Dans ce cas il reste :
echo iconv('ISO-8859-1', 'UTF-8', ucwords(strftime("%A %d %B %Y", strtotime($madate))));

Modifié par Heyoan (01 Aug 2009 - 11:22)