Menu

Date php bug du jours [Résolu]

- - Dernière réponse :  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
Afficher la suite 

Votre réponse

1 réponse

Messages postés
7671
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 avril 2019
456
0
Merci
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. 
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
yg_be
Messages postés
7671
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 avril 2019
456 > charles -
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, ...
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
Commenter la réponse de yg_be