Bonjour,
Je suis en train de programmer une partie commentaires en PHP pour mon site, et je voudrais afficher la date et l'heure de post, avec la fonction date.
Seulement voilà, l'heure enregistrée avance de exactement 23 minutes par rapport à mon heure système, et je suis pourtant à l'heure !
Je vous copie des extraits de mon code.
Enregistrement de la date/heure dans ma base de données à la validation du formulaire :
Affichage de la date/heure en dessous du commentaire :
Posté le <?php echo $donnees['Date']; ?> à <?php echo $donnees['Heure']; ?>.
PS: ajouter un "date_default_timezone_set(Europe/Paris);" n'a rien donné.
Peu-être vais-je tout simplement soustraire 23 minutes à l'heure avant enregistrement...
Si c'est la seule solution, pourriez-vous m'expliquer comment procéder?
Il serait stupide de modifier l'heure plutot que résoudre le réel probleme.
Tout d'abord ton script se trouve bien en local ?
Ta bdd est en local aussi ?
pour resoudre le pb tu tenter un time() en sql lors de l'enregistrement plutot que de recup l'heure en php.
Etrange si Apache est en local qu'il ne parvienne pas a récupérer correctement l'heure ...
Peut-on interposer du texte entre la date et l'heure quand on récupère le contenu d'un champ de type DATETIME ?
Oui, MySQL met à ta disposition plein de fonction de manipulation des dates et des chaînes de caractères. Voici un exemple, ici une simple spécification du format dans lequel on veux la date est suffisant :
mysql> SELECT DATE_FORMAT(NOW(), 'Posté le %e/%m/%Y à %T');
+----------------------------------------------+
| DATE_FORMAT(NOW(), 'Posté le %e/%m/%Y à %T') |
+----------------------------------------------+
| Posté le 23/11/2009 à 18:46:09 |
+----------------------------------------------+
1 row in set (0.00 sec)
PS : Désolé de devoir mettre ma commande dans la balise prévue pour du code PHP, pour un bon affichage il faut une police à chasse fixe et le code de type "autre" est foireux.
Juste comme ça, plutôt que de t'embêter a faire la date avec PHP tu peux utiliser NOW() ou similaire dans ta requête SQL. ET au passage je ne vois pas pourquoi tu as mis la date et l'heure dans deux champs séparés, les champs DATETIME existent.
J'avais essayé de modifier mon code sans le tester en local(je sais, c'est pas bien...),et en local ça marche.c'est donc dû à la localisation du serveur, ou quoi...?
Peut-on interposer du texte entre la date et l'heure quand on récupère le contenu d'un champ de type DATETIME ?
Parce que je voudrais quelque chose du genre
"Posté le jj/mm/aaaa à hh:mm:ss".
Voilà, en tout cas merci à vous pour vos indications.
Vous n’avez pas trouvé la réponse que vous recherchez ?
c'est donc dû à la localisation du serveur, ou quoi...?
Je ne pense pas, ça ressemble plutôt à une heure non mise à jour (parait bizarre mais bon)
Qu'en est il si tu utilises NOW() dans la requête SQL, comme suggéré par TychoBrahe ?
Peut-on interposer du texte entre la date et l'heure quand on récupère le contenu d'un champ de type DATETIME ?
Salut
c'est pas exactement un problême de localisation ca les fuseau horaire son de 1heure de décalage si tu a 23 minutes c'est que le serveur n'est pas a l'heure si c'est un hebergeur n'hésite pas a le contacter pour l'informer.
Pour intercaler du texte c'est out simple un DATETIME a un format tres precis
YYYY/MM/DD HH:II:SS
pour mettre dans le format : jj/mm/aaaa à hh:mm:ss
$datetime = 'YYYY/MM/DD HH:II:SS';
// on eclate la chaine a l'espace ce qui separe la date de l'heure
$date_heure = explode(" ",$datetime);
$heure = $date_heure[1];
// on eclate la date_heure[0] (donc la date seule)
// sur le caractere /
$date = explode("/",$date_heure[0]);
// on replace dans l'ordre voulu
$date = $date[2] . '/' .$date[1] . '/' $date[0];
// on affiche
echo $date .' à '.$heure;
le resultat :
DD/MM/YYYY à HH:II:SS
tu peux egalement explode la date sur le caractere : si tu veux par exemple retirer les secondes.
Il existe certainement des fonctions pour te faire ça proprement au pire tu la crée ;-) c'est pas bien difficile est un tres bon exercice pour un debutant.