Si date du jour <=
Résolu
Bonjour,
J'affiche une date depuis ma table avec :
echo $data['DateLimite'];
J'aimerais dans la même condition lui dire ceci :
Si la date du DateLimite = aujourd'hui alors affiche : Dernier jour !
Si la date du DateLimite > aujourd'hui alors affiche : Terminé
Sinon affiche la date DateLimite
Pouvez-vous m'aider svp ?
J'affiche une date depuis ma table avec :
echo $data['DateLimite'];
J'aimerais dans la même condition lui dire ceci :
Si la date du DateLimite = aujourd'hui alors affiche : Dernier jour !
Si la date du DateLimite > aujourd'hui alors affiche : Terminé
Sinon affiche la date DateLimite
Pouvez-vous m'aider svp ?
11 réponses
Résumé de la discussion
La discussion porte sur la comparaison d'une DateLimite issue d'une base avec la date du jour en PHP afin d'afficher un message adapté selon le contexte. Plusieurs solutions ont été proposées, notamment l'utilisation d'objets DateTime et de formats Ymd pour une comparaison numérique fiable, ou l'emploi de date() et strtotime pour l'affichage. La méthode recommandée est de convertir les dates en DateTime et de les comparer en utilisant le format Ymd pour neutraliser les heures; selon le résultat, afficher 'Dernier jour !', 'Terminé' ou la date. Des échanges évoquent aussi d'éviter les comparaisons d'objets et mentionnent des variantes utilisant le format d'affichage 'd/m/Y' ou des tests numériques.
-
Prffff, c'est le problème du copy/past (désolé)
Effectivement, ca fonctionne ^^
Mer reste plus qu'a remplacer la date du jour par celle du serveur et c'est ok :p
Merci encore à tous pour votre aide précieuse ! -
Non, il m'envois tout en Terminé :p
$today = new DateTime(); $dateLimite = new DateTime(); $dateLimite->setTimestamp(strtotime('2013-07-02')); if ($dateLimite->format('Ymd') > $today->format('Ymd')){$affiche = $dateLimite->format('d/m/Y');} elseif ($dateLimite->format('Ymd') == $today->format('Ymd')){$affiche = 'Dernier jour !';} elseif ($dateLimite->format('Ymd') < $today->format('Ymd')){$affiche = 'Terminé';} else {$affiche = $dateLimite->format('d/m/Y');} echo $affiche; -
$today = new DateTime();
$dateLimite = new DateTime();
$dateLimite->setTimestamp(strtotime($data['LimiteDuCastingue']));
if ($DateLimite > $DateDuJour){$Affiche = $DateLimite->format('d/m/Y');}
elseif ($DateLimite == $DateDuJour){$Affiche = 'Dernier jour !';}
elseif ($DateLimite < $DateDuJour){$Affiche = 'Terminé';}
else {$affiche = $DateLimite->format('d/m/Y');}
echo $Affiche;
-
-
-
Contributeur
$today = new DateTime(); $dateLimite = new DateTime(); $dateLimite->setTimestamp(strtotime('2013-07-02')); if ($dateLimite->format('Ymd') > $today->format('Ymd')){$affiche = $dateLimite->format('d/m/Y');} elseif ($dateLimite->format('Ymd') == $today->format('Ymd')){$affiche = 'Dernier jour !';} elseif ($dateLimite->format('Ymd') < $today->format('Ymd')){$affiche = 'Terminé';} else {$affiche = $dateLimite->format('d/m/Y');} echo $affiche;
là ça fonctionne. -
-
-
Et donc, soit je fais un Ymd soit pas de calcul correct ?
-
Oups... tu as raison ! Il ne fonctionne plus !
Hé ben...-
ContributeurC'est pas bien compliqué à comprendre.
Déjà, tu essaies de faire une comparaison numérique sur des chaines de caractères...
Je ne sais plus exactement comme ça fonctionne côté PHP, mais il me semble qu'il compare les valeurs numériques de ta variable et s'arrête dès qu'une trouve un caractère non numérique.
En gros, tu compares les jours entre eux.
Si tu passes par un date("Ymd"), tu as une chaine de caractère qui comprend l'année, le mois et le jour, tu pourras alors comparer tes dates tranquillement.
Sinon, comme je l'ai dis, tu passes par un objet date, ça marche aussi et tu peux l'afficher dans le format qui te convient.
-
-
Merci à tous !
<?php $DateDuJour = date ('d/m/Y'); $DateLimite = date('d/m/Y', strtotime($data['LimiteDuCastingue'])); if ($DateLimite > $DateDuJour){$Affiche = $DateLimite;} elseif ($DateLimite == $DateDuJour){$Affiche = 'Dernier jour !';} elseif ($DateLimite < $DateDuJour){$Affiche = 'Terminé';} else {$affiche = $DateLimite;} echo $Affiche; ?>a fonctionné.
Je ne sais pas, vu que c'est un affichage public, je ne sais pas si le Ymd serait le bienvenue...
Toute façon, vu qu'il fonctionne et qu'il n'y a pas de problème, je vous remercie pour votre aide. -
svp, encore un truc :
setlocale (LC_TIME, 'fr_FR.utf8','fra'); $DateJ = date('d/m/Y'); $DateDuJour = strftime("d/m/Y", strtotime($DateJ)); $DateLimite = strftime('d/m/Y', strtotime($data['LimiteDuCastingue'])); if ($DateLimite < $DateDuJour){$Affiche = $DateLimite;} elseif ($DateLimite == $DateDuJour){$Affiche = 'Dernier jour !';} elseif ($DateLimite > $DateDuJour){$Affiche = 'Terminé';} else {$affiche = $DateLimite;} echo $Affiche;
Je n'arrives pas à afficher la date au format d/m/Y
Pouvez-vous m'aider svb ?-
Contributeurpourquoi tu passes par un strftime maintenant ?
Ton script fonctionne ? les paramètres que tu passes à ta fonction ne sont pas bons.
https://www.php.net/strftime
c'était très bien avec une fonction date() je sais pas ce que t'es allé chercher là... -
-
-
-
-
Merci merci merciiiiii ^^
-
Merci pour vos réponses
Voilà ce que j'ai fais, mais ca ne fonctionne pas :$DateDuJour = date ('Y/m/d'); $DateLimite = $data['LimiteDuCastingue']; if ($DateLimite == $DateDuJour){$Affiche = 'Dernier jour !';} elseif ($DateLimite >= $DateDuJour){$Affiche = 'Terminé';} else {$affiche = $data['LimiteDuCastingue'];} echo $Affiche;
Dans ma table , le champ est au format 'Date' -
ContributeurSalut,
tout va dépendre du format dans lequel ta date est stockée -