OVH Cloud OVH Cloud

probleme de formatage de date..

13 réponses
Avatar
samuel
bonjour, j'ai écrit une petite fonction que voici:

function fdate($t){
$jours_fr = array('dimanche ','lundi ', 'mardi ', 'mercredi ', 'jeudi
', 'vendredi ', 'samedi ');
$mois_fr = array('janvier', 'février', 'mars', 'avril', 'mai', 'juin',
'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre');

$jour = $jours_fr[date('w',$t)].' ';
$jour2= date('j',$t);if ($jour2==1) {$jour2='1<sup>er</sup>';}
$mois = $mois_fr[date('n',$t)-1];
$annee=date('Y',$t);

return $jour.$jour2.' '.$mois.' '.$annee;
}

Alors, le test suivant est plutôt concluant:
echo fdate(mktime(0, 0, 0, 5, 10, 2009));



mais par contre dans ma boucle qui recupère des timestamps de mysql,
ça va pas:
else{$retour = mysql_query("SELECT titre,accroche,article,date FROM
article1 ORDER BY date DESC LIMIT 0,4")or die(mysql_error());}

while ($donnees = mysql_fetch_array($retour)){
echo '<h2>'.$donnees['titre'].' <em>('.fdate($donnees['date']).')</
em></h2>
<span class="accroche">'.$donnees['accroche'].'</span>
<p>'.$donnees['article'].'</p>
<div id="navig"><a href="comms.php?ch=1&id='.''.'">Commentaires
('.''.')</a></div>';
}

il maffiche tjs le 1jan.70..
pourtant la date est pas vide, car echo $donnees['date'] me donne un
truc pas mal..
comprends pas :s

merci de votre aide!

3 réponses

1 2
Avatar
Sylvain SF
samuel a écrit :

SELECT UNIX_TIMESTAMP(date) FROM article1


[ne] marche pas



(quelle est la version de MySQL utilisée?)


5.051



très surprenant !!

ma très vieille install 5.0.45 (linux) comme ma un peu
moins vieille install 5.1.29-rc-community (win32)
supportent parfaitement UNIX_TIMESTAMP !!

tu n'as pas oublié l'underscore ?... dès fois ...

Sylvain.
Avatar
samuel
cest la requête qui n'aboutit pas

Version finale MySQL: 5.0.51 (free)
et là :
Version du client MySQL: 5.0.51a

la "méthode" d'Antoine, cest pas moins bien au niveau de la "grosseur"
des requêtes que jenvoie à ma base?

merci
Avatar
Sylvain SF
samuel a écrit :
cest la requête qui n'aboutit pas

Version finale MySQL: 5.0.51 (free)



ça devrait aboutir. donne le msg d'erreur au cas où.

la "méthode" d'Antoine, cest pas moins bien au niveau de la "grosseur"
des requêtes que jenvoie à ma base?



SELECT DATE_FORMAT(date,'%W %e %M %Y %kh %imn %ss') FROM article1
comparé à
SELECT date FROM article1

oui, ça prendra qlq octets de plus pour le requête transmisse
mais cela n'a pas d'impact - il est courant d'avoir des requêtes
de plusieurs centaines de caractères.

le temps de traitement global sera plus court avec DATE_FORMAT
qu'avec la routine PHP; le choix de la méthode peut dépendre
de la charge du serveur MySQL et du serveur Apache/PHP, si c'est
ma même machine, on peut se simplifier la vie et faire la mise
en forme via MySQL.

un problème peut néanmoins apparaître dans ce cas, la localisation
n'est pas garantie, 'lc_time_names' est introduit avec la release
5.1.12 (donc pas dispo en 5.0.51) et son affectation nécessite le
privilège 'SUPER' ce qui est rarement le cas.

tu pourrais malgré tout dans ce cas faire un replace Monday, Lundi
en PHP.

Sylvain.
1 2