par
Ryle » 18 juil. 2016, 17:48
Bonjour,
Effectivement, le format de date de mysql n'est pas le format français (JJ/MM/AAAA), mais le format ISO (AAAA-MM-JJ). Le format américain quant à lui inverse jour et mois (MM/JJ/AAAA).
De façon à faciliter la vie de tes utilisateurs, il convient généralement de les laisser saisir leur date au format français 18/07/2016. Pour autant, au moment où tu vas les enregistrer dans ta base de données, il va te falloir transformer cette chaine pour l'insérer dans un format ISO afin que mysql comprenne ce que tu lui demandes. Et histoire de compliquer la chose, php va lui considérer qu'une date est par défaut dans un format américain... bref, c'est pas forcément simple, mais il existe des solutions
Déjà c'est très bien de vouloir utiliser le format date, ça simplifie les recherches, les filtres, les tris, les extractions. Pour ce qui est des conversions, tu peux considérer que la date que t'envoi l'utilisateur n'est qu'une chaine de caractères que tu peux découper et réassembler à ta guise. Tu peux aussi plus simplement utiliser la fonction date_create_from_format() :
$ma_date = '18/07/2016';
$ts = date_create_from_format('d/m/Y', $ma_date);
echo date_format($ts, "Y-M-d"); // affichera 2016-07-18
Tu peux ainsi convertir la date reçue pour l'insérer en base
Il faudra alors, au moment où tu veux restituer ta date la convertir dans l'autre sens, soit de la même manière via php, soit directement dans ta requête avec la fonction date_format() de mysql : DATE_FORMAT(champ_date,'%d/%m/%Y')
(et ça ne fonctionne qu'avec les champs de type date, d'où l'importance de les utiliser

)
Pour en savoir plus sur les manipulations des dates avec php ou mysql tu trouveras plein d'élément (dont l'exemple ci-dessus) dans le topic suivant de la FAQ :
faq-tutoriels/quelques-petites-manipula ... t8323.html
Bonjour,
Effectivement, le format de date de mysql n'est pas le format français (JJ/MM/AAAA), mais le format ISO (AAAA-MM-JJ). Le format américain quant à lui inverse jour et mois (MM/JJ/AAAA).
De façon à faciliter la vie de tes utilisateurs, il convient généralement de les laisser saisir leur date au format français 18/07/2016. Pour autant, au moment où tu vas les enregistrer dans ta base de données, il va te falloir transformer cette chaine pour l'insérer dans un format ISO afin que mysql comprenne ce que tu lui demandes. Et histoire de compliquer la chose, php va lui considérer qu'une date est par défaut dans un format américain... bref, c'est pas forcément simple, mais il existe des solutions :)
Déjà c'est très bien de vouloir utiliser le format date, ça simplifie les recherches, les filtres, les tris, les extractions. Pour ce qui est des conversions, tu peux considérer que la date que t'envoi l'utilisateur n'est qu'une chaine de caractères que tu peux découper et réassembler à ta guise. Tu peux aussi plus simplement utiliser la fonction date_create_from_format() :
[php]$ma_date = '18/07/2016';
$ts = date_create_from_format('d/m/Y', $ma_date);
echo date_format($ts, "Y-M-d"); // affichera 2016-07-18[/php]Tu peux ainsi convertir la date reçue pour l'insérer en base ;)
Il faudra alors, au moment où tu veux restituer ta date la convertir dans l'autre sens, soit de la même manière via php, soit directement dans ta requête avec la fonction date_format() de mysql : DATE_FORMAT(champ_date,'%d/%m/%Y')
(et ça ne fonctionne qu'avec les champs de type date, d'où l'importance de les utiliser :))
Pour en savoir plus sur les manipulations des dates avec php ou mysql tu trouveras plein d'élément (dont l'exemple ci-dessus) dans le topic suivant de la FAQ :
http://forum.phpfrance.com/faq-tutoriels/quelques-petites-manipulations-avec-les-dates-php-mysql-t8323.html