Vérifier si la date du jour est incluse dans une période

But : comparer des dates sous le format mois-jour avec la date en cours (aujourd’hui). Retrouver une donnée correspondante à la date en cours dans une période déterminée. Par exemple, une image différente sera affichée suivant une période déterminée. La date du jour sert à déterminer l’enregistrement qui sera pris en compte

Une table MySQL nommée t_evenements avec 4 champs

  1. Id_Evenement (auto-increment,clé primaire)
  2. Debut (soit au format DATE soit un VARCHAR de 10 caractères sous la forme yyy-mm-dd)
  3. Fin (idem que Debut)
  4. Url (un VARCHAR, disons de 100 caractères, c’est un lien relatif pointant une image

Généralités

setlocale(LC_TIME, 'fr_FR');
date_default_timezone_set('Europe/Paris');
echo utf8_encode(strftime('%A %d %B %Y, %H:%M')); //Affiche la date en cours, par exemple : jeudi 29 avril 2021, 13:14
echo '<br>';
echo 'l\' année est '.date("Y"); // Affiche l'année en cours, par exemple : l' année est 2021
echo '<br>';
echo 'le mois est '.date("m"); // Affiche le mois en cours, par exemple :le mois est 04 
echo '<br>';
echo 'le jour est '.date("d"); // Affiche le jour en cours, par exemple le jour est 29
echo '<br>';

1ère Méthode : Modifier toutes les années encodées dans les champs « Debut » et « Fin » (au format DATE) dans une table « t_evenements » par l’année en cours. Exemple 2020/04/29 deviendra 2021/04/29 
NB : ce qui est en remarque permet de tester le code en cours de développement

$req = 'SELECT * FROM t_evenements';
if(!$retour = $db->query($req)){die('Il y a une erreur dans la requête [' . $db->error . ']');}
 while($donnees = $retour->fetch_assoc()) 
 {
   // $id = $donnees['Id_Evenement'];
   // echo $id;
   // echo '<br>';
   $nouveau_debut =  date("Y").substr($donnees['Debut'],-6); // Concaténation, le -6 permet de ne pas utiliser l' "ancienne" année
   // echo $nouveau_debut;
   // echo '<br>';
   $nouvelle_fin = date("Y").substr($donnees['Fin'],-6);
   // echo $nouvelle_fin;
   // echo '<br>';
   $sql = 'UPDATE t_evenements SET debut = "'.$nouveau_debut.'", fin = "'.$nouvelle_fin.'" WHERE Id_Evenement = "'.$id.'"';
   $res = $db -> query($sql);
 }

On peut ensuite rechercher un enregistrement qui correspond à une date comprise entre Debut et Fin soit deux champs au format DATE

$Recherche = date("Y").'-'.date("m").'-'.date("d");
// echo $Recherche;
// echo '<br>';
$req = 'SELECT * FROM t_evenements WHERE "'.$Recherche.'" BETWEEN Debut AND Fin';
if(!$retour = $db->query($req)){die('Il y a une erreur dans la requête [' . $db->error . ']');}
// echo mysqli_num_rows($retour); vérifie si la requête a au moins renvoyé 1 enregistrement
// echo '<br>';
while($donnees = $retour->fetch_assoc()) /* On fait une boucle pour lister les news. */
 {
  echo '<img src="'.$donnees['Url'].'">';
 }
if(mysqli_num_rows($retour) == 0) {echo '<img src="../photos/wayne.jpg">';}

2ème Méthode : On peut aussi arriver au même résultat sans se préoccuper de l’année. Néanmoins, les champs Debut et Fin reste au format DATE aaaa-mm-dd ou un VARCHAR de 10 caractères sous la même forme. Attention, pour mes tests, j’utilise ici une seconde table nommée t_events car les champs Debut et Fin sont de type VARCHAR

$req = 'SELECT * FROM `t_events` WHERE DATE_FORMAT(now(),"%m%d") BETWEEN DATE_FORMAT(Debut,"%m%d") AND DATE_FORMAT(Fin,"%m%d")  ';
if(!$retour = $db->query($req)){die('Il y a une erreur dans la requête [' . $db->error . ']');}
// echo mysqli_num_rows($retour);
// echo '<br>';
 while($donnees = $retour->fetch_assoc()) /* On fait une boucle pour lister les news. */
 {
   echo '<img src="'.$donnees['Url'].'">';
 }
if(mysqli_num_rows($retour) == 0) {echo '<img src="../photos/wayne.jpg">';}

Personnalisé par Bipbipcoyote.

AVERTISSEMENT !

La plupart des vidéos sur ce site ne m'appartiennent pas. Elles restent hébergées sur YouTube et vous pouvez aller les visionner sur place.
Elles sont éditées en mode public par leur auteur. Je les extrais de la plateforme pour pouvoir éventuellement ajouter des explications complémentaires 
et surtout pour les retrouver plus facilement. Je rappelle que ce site est d'abord MON aide-mémoire même si chacun peut en profiter.
Si un auteur ne souhaite pas que sa vidéo soit visible ici, il peut très facilement modifier les réglages YouTube et en empêcher la diffusion sur un site externe à YouTube..

Lisez aussi en bas de page, l'avis sur l'utilisation des cookies

Ceci fermera dans 30 secondes