Date php bug du jours

Résolu/Fermé
charles - 12 avril 2019 à 13:19
 charles - 12 avril 2019 à 20:20
Bonjour,

j'ai mis 4 dates différent sur la base sql

par exemple
mercredi 10/04/219 à 15 h 00
jeudi 11/04/2019 à 16 h 00.
vendredi 12/04/2019 à 11 h 00.
vendredi 12/04/209 à 13 h 00.

j'ai mis ce petit code

$aujourdhui = new DateTime($donnees['date']);
echo 'aujourdhui'; echo $aujourdhui->format('d/m/Y, H:i:s'); echo'<br />';
$hier = $aujourdhui->sub(new DateInterval('P1D'));
echo 'hier'; echo  $hier->format('d/m/Y, H:i:s'); }


normalement, il devrait m'afficher

le 10/04/04/2019 à 15 h.
hier à 15 h 00.
aujourd'hui à 11 h 00
aujourd'hui à 13 h 00

étant donée qu'on est le 12/04

moi il m'affiche

titre1 contenu1 aujourdhui 11/04/2019, 16:00:00
hier10/04/2019,

enfaite, il y a 2 petits problème

il croit qu'on est le 11/04/2019 hors on est le 12/04/2019

ensuite il m'affiche mes 2 echo aujourd'hui et hier

normalement c'est soit il m’affiche aujourdhui ou soit hier

comment je dois rectifier le tire afin d'afficher la bonne date et qui met bien aujourd’hui et hier

Configuration: Windows / Chrome 73.0.3683.103

1 réponse

yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
12 avril 2019 à 13:29
bonjour, je ne vois pas ce que tu fais pour éviter d'exécuter les deux echos.
tu ne montres qu'une partie de ton code. 
0
imaginons que je mets dans une table date dans ma base sql

CREATE TABLE `date` (
  `id` int(11) DEFAULT NULL,
  `titre` varchar(255) DEFAULT NULL,
  `contenu` varchar(255) NOT NULL,
  `date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `date` (`id`, `titre`, `contenu`, `date`) VALUES
(1, 'date1', 'contenu', '2019-04-12 10:00:00'),
(2, 'date2', 'contenu2', '2019-04-11 13:00:00'),
(3, 'date3', 'contenu3', '2019-04-12 00:00:00');




tu vois , il y a 2 date du 12/04/2019 , donc ca affiche bien aujourdhui

ensuite il y a une date du 11/04/2019 normalement il doit afficher hier



c'est pour ca que je met aujourd'hui et hier ans le code


$stmt = $bdd->prepare('SELECT * FROM faq ORDER BY id ASC');


if ($stmt->execute()) {
 while ($donnees = $stmt->fetch(PDO::FETCH_ASSOC)) {


   echo $donnees['titre'];

   echo $donnees['contenu'];


$aujourdhui = new DateTime($donnees['date']);
echo 'aujourdhui'; echo $aujourdhui->format('d/m/Y, H:i:s'); echo'<br />';
$hier = $aujourdhui->sub(new DateInterval('P1D'));
echo 'hier'; echo  $hier->format('d/m/Y, H:i:s'); 
}
}



coment je doit faire soit on affiche aujourdhui ou soit hier


et après ca on verra coment afficher il y a 5 minutes, il y a 15 minutes , il y a 30 minites , il y a 1 h etc..


merci
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > charles
Modifié le 12 avril 2019 à 19:49
dans quel contexte fais-tu ce travail? as-tu de l'expérience en php?
si je devine correctement ce que tu veux faire, je programmerais ainsi:
- calculer la date de ce jour
- calculer la date d'hier
- pour chaque moment dans la table,
              - si la date de ce moment est égale à celle du jour, faire l'affichage en fonction
              - si la date de ce moment est égale à celle d'hier, ...
0
je ne repondrais pas à ta question sur le travail ni l'experience

ca serai trop à t'expliquer

je mets sujets resolut et c pas grave pour les dates

merci
0