8795 sujets

Développement web côté serveur, CMS

Pages :
bonjours à tous
j'ai une colonne 'date' dans la base de donnée sous format yyyy-mm-dd h:m:s mon probléme c'est comment je peux afficher la date sous format dd-mmmm-yyyy (ex:17 juillet 2007)


merci pour tous
Modifié par eagle83 (26 Jul 2009 - 23:18)
Salut,

Voilà un lien qui répondra a ta question, en résumé dans ta requete tu demandes à mysql de formater directement ta date au format que tu veux Smiley cligne

du style :
mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');
        -> 'Saturday October 1997'

Modifié par N-J (21 Jul 2009 - 15:30)
merci bcp
mais où je peux mettre ce condition, est que je peux le faire à la même chaîne (ex je le met dans SELECT * from actualite where actualite.type='automobile' ORDER BY ref DESC LIMIT 1) ou bien je le met dans un autre chaîne indépendant
merci
SELECT *,DATE_FORMAT(date, '%d %M %Y') AS datefr from actualite where actualite.type='automobile' ORDER BY ref DESC LIMIT 1


Ce qu irécupèrera les champs que tu as demandé, dont la date au format anglais (qui dans l'exemple s'appel "date" dans la table), ainsi qu'une colonne "datefr" contenant cette date converti au format français.

Mais rien n'oblige à créé la colonne datefr en plus, tu peux simplement convertir la date en enlevant "AS datefr". Mais c'est souvent pratique de garder la colonne date en anglais notamment pour le tri.
Modifié par moust (21 Jul 2009 - 16:02)
mercccciiiiiiiiii bcpp
mais comment je peux afficher la date en français car j'ai essayé de changer''%d %M %Y' par '%J %M %A' mais il ne marche pas????????????????
Modifié par eagle83 (21 Jul 2009 - 16:14)
Tu peux également faire ce traitement en PhP.

	/* Traduit une date au format US vers le format FR */
	function dateUS_toFR($dateUS)
	{	
		list($annee, $mois, $jour) = split('[-.]', $dateUS);
		$dateFR=$jour."/".$mois."/".$annee;
		return $dateFR;
	}


	/* Traduit une date au format FR vers le format US */
	function dateFR_toUS($dateFR)
	{	
		list($jour, $mois, $annee) = split('[/.]', $dateFR);
		$dateUS=$annee."-".$mois."-".$jour;
		return $dateUS;
	}


Ce code est basique au possible et ne fonctionne que pour des dates seules, suffit juste d'adapter pour qu'elle prenne en compte les heures.
Modifié par Andromede (21 Jul 2009 - 23:59)
merci
j'ai essayé de faire mais il ne marche pas

$result = mysql_query("SELECT *,DATE_FORMAT(date, '%d %M %Y') AS dateUS from actualite where actualite.type='automobile' ORDER BY ref DESC LIMIT 1");
									function dateUS_toFR($dateUS)
										{	
											list($annee, $mois, $jour) = split('[-.]', $dateUS);

											$dateFR=$jour."/".$mois."/".$annee;

											return $dateFR;
										}
									while ($row = mysql_fetch_array($result)){
									echo $row["titre"].'<span>'.$row["dateFR"].'</span>';
									echo'<p>'.$row["resume"].'</p>';
									}

Modifié par eagle83 (21 Jul 2009 - 16:25)
eagle83 a écrit :
mercccciiiiiiiiii bcpp
mais comment je peux afficher la date en français car j'ai essayé de changer''%d %M %Y' par '%J %M %A' mais il ne marche pas????????????????



Normal, car %J n'existe pas, en descendant un peu sur la page que je t'ai filé il y a les possibilités décrites:
%d Jour du mois, au format numérique (00..31)
%M Nom du mois (January..December)
%Y Année, au format numérique, sur 4 chiffres
Je suppose que tu veux une date du format : 27/09/2009, ce qui donne :

"%d/%m/%Y"


Lis bien les possibilités qui sont assez énormes fournies par mysql.
eagle83 a écrit :
merci
j'ai essayé de faire mais il ne marche pas

$result = mysql_query("SELECT *,DATE_FORMAT(date, '%d %M %Y') AS dateUS from actualite where actualite.type='automobile' ORDER BY ref DESC LIMIT 1");
									function dateUS_toFR($dateUS)
										{	
											list($annee, $mois, $jour) = split('[-.]', $dateUS);

											$dateFR=$jour."/".$mois."/".$annee;

											return $dateFR;
										}
									while ($row = mysql_fetch_array($result)){
									echo $row["titre"].'<span>'.$row["dateFR"].'</span>';
									echo'<p>'.$row["resume"].'</p>';
									}



Bein c'est normal, les fonctions suivantes permettent de faire une conversion de date fr->us ou us->fr , si tu donnes une date fr à traiter (donnée par mysql) il ne vas pas bien traiter ton code. La requête mysql seule suffit pour transformer ta date Smiley cligne .
meric pour tous
mais comment alors je peux modifier la date en français car je pense il n y a pas une possibilité d'intégrer la fonction dans la chaîne SQl?????
Ca ne sert à rien de mélanger les deux. Soit tu utilise la méthode que t'a présenté N-J en SQL soit tu fait un traitement php après avoir reçu la date de la base de données.
eagle83 a écrit :
meric pour tous
mais comment alors je peux modifier la date en français car je pense il n y a pas une possibilité d'intégrer la fonction dans la chaîne SQl?????

Si j'ai bien compris tu cherches maintenant à avoir les jours et mois en anglais. Là pas possible avec SQL donc le plus simple est de passer par PHP et de remplacer par les mois en français contenus dans un tableau.


$mois = array("01"=>"Janvier","02"=>"Février" /*...etc */ );

$date = "2009-07-22";

list($year, $month, $day) = explode('-', $date);

$datefr = $day .' '. $mois[$month] .' '. $year; // 22 Juillet 2009

Modifié par moust (22 Jul 2009 - 00:26)
bonsoir
excuse-moi mais la méthode proposé par n-j c'est pour afficher que les numéros et pour moi j'ai besoin d'afficher au format suivant (ex 13 juillet 2008)
et pour la deuxième solution c'est ça ce que j'ai fait mais il ne marche pas Smiley decu
merci bcp pour tous
Salut,

je n'ai pas tout lu mais tu peux aussi faire :
<?php
setlocale(LC_TIME, 'french', 'fr_FR');
$sql = 'Select date from ...';
$result = mysql_query($sql);
$madate = mysql_result($result, 0);
echo ucwords(strftime("%A %d %B %Y", strtotime($madate)));
?>
Accessoirement c'est une mauvaise idée de nommer ton champ date car c'est l'un des mots réservés de mysql (même si celui-ci est toléré).
Modifié par Heyoan (22 Jul 2009 - 08:02)
bonjour
excuse-moi je n'ai pas bien compris ton code ,mon but c'est afficher 23 july 2009 comme 23 juillet 2009
Si tu cherche a passer de "23 july 2009" à "23 juillet 2009", la solution de moust convient parfaitement mais avec un tableau associatif mois anglais->mois français et non plus numéro->mois français.
ENFIIIIIIIN !ça marche


<?php
$connect = mysql_connect('localhost','root','') or die ("erreur de connexion");
mysql_select_db('base',$connect) or die ("erreur de connexion base");
setlocale (LC_ALL, 'fr_FR'); 
$result = mysql_query("SELECT *,DATE_FORMAT(datenews, '%d %m %Y') AS dateus from actualite where actualite.type='automobile' ORDER BY ref DESC LIMIT 1");
$mois = array("01"=>"Janvier","02"=>"Février","03"=>"Mars","04"=>"Avril","05"=>"Mai","06"=>"Juin","07"=>"juillet","08"=>"Août","09"=>"Septembre","10"=>"Octobre","11"=>"Novembre","12"=>"Décembre"); 
while ($row = mysql_fetch_array($result)){
list($day,$month,$year) = explode(" ",$row["dateus"]);  
$row["dateus"] = $day .' '. $mois[$month] .' '. $year;
echo $row["titre"].'<span>'.$row["dateus"].'</span>';
echo'<p><a href="">'.$row["resume"].'</a></p>';
}
mysql_close();
?>

Smiley biggrin
Modifié par eagle83 (22 Jul 2009 - 14:12)
eagle83 a écrit :
bonjour
excuse-moi je n'ai pas bien compris ton code ,mon but c'est afficher 23 july 2009 comme 23 juillet 2009
Oui... c'est ce que fait mon code (pas besoin de tableau associatif). Smiley murf
Géniale cette fonction Heyoan. Je connaissait l'équivalent proposé par Zend Framework mais je ne savais pas que ça existant nativement dans PHP. Smiley biggrin
oui mais je ne sais pas pourquoi le résultat de cette fonction me donne une date différente (1 janvier 1970)
Modifié par eagle83 (23 Jul 2009 - 12:18)
Pages :