[RESOLU] Problème affichage date plus grand que aujourd'hui avec label

Petit nouveau ! | 3 Messages

28 oct. 2019, 03:17

Bonjour,

Voici un bout de code que j'utilise mais qui me pose un problème
$dateheb = $customer_meta['eacute-ch-eacute-ance-h-eacute-bergement'];

            //date
            $today = date('d/m/Y', time()+0*24*3600);
            $today10 = date('d/m/Y', time()+10*24*3600);
            $today9 = date('d/m/Y', time()+9*24*3600);
            $today8 = date('d/m/Y', time()+8*24*3600);
            $today7 = date('d/m/Y', time()+7*24*3600);
            $today6 = date('d/m/Y', time()+6*24*3600);
            $today5 = date('d/m/Y', time()+5*24*3600);
            $today4 = date('d/m/Y', time()+4*24*3600);
            $today3 = date('d/m/Y', time()+3*24*3600);
            $today2 = date('d/m/Y', time()+2*24*3600);
            $today1 = date('d/m/Y', time()+1*24*3600);
						?>
		<div class="portal strong echeance">
		<h3>Échéance de votre abonnement</h3>
                 <div class="datelabel">
              <p><?php echo $dateheb; ?><p>
              <?php if( $dateheb == $today10 ) { ?>
                <span class="pul-label pul-label-alert-success content__label"><span>Expire dans 10 jours</span></span>
              <?php } elseif( $dateheb == $today9 ) { ?>
                <span class="pul-label pul-label-alert-success content__label"><span>Expire dans 9 jours</span></span>
              <?php } elseif( $dateheb == $today8 ) { ?>
                <span class="pul-label pul-label-alert-success content__label"><span>Expire dans 8 jours</span></span>
              <?php } elseif( $dateheb == $today7 ) { ?>
                <span class="pul-label pul-label-alert-success content__label"><span>Expire dans 7 jours</span></span>
              <?php } elseif( $dateheb == $today6 ) { ?>
                <span class="pul-label pul-label-alert-success content__label"><span>Expire dans 6 jours</span></span>
              <?php } elseif( $dateheb == $today5 ) { ?>
                <span class="pul-label pul-label-alert-success content__label"><span>Expire dans 5 jours</span></span>
              <?php } elseif( $dateheb == $today4 ) { ?>
                <span class="pul-label pul-label-alert-success content__label"><span>Expire dans 4 jours</span></span>
              <?php } elseif( $dateheb == $today3 ) { ?>
                <span class="pul-label pul-label-alert-success content__label"><span>Expire dans 3 jours</span></span>
              <?php } elseif( $dateheb == $today2 ) { ?>
                <span class="pul-label pul-label-alert-success content__label"><span>Expire dans 2 jours</span></span>
              <?php } elseif( $dateheb == $today1 ) { ?>
                <span class="pul-label pul-label-alert-success content__label"><span>Expire dans 1 jour</span></span>
              <?php } elseif( $dateheb>$today ) { ?>
                <span class="pul-label pul-label--success content__label"><span>Actif</span></span>
                <?php } else { ?>
            <span class="pul-label pul-label-no-success content__label"><span>Expiré</span></span>
              <?php } ?>
            </div>
	</div>
En résumé $dateheb m'affiche une date sous format 'd/m/Y'. Tous les affichages de "expire dans X jours" fonctionnent correctement.
Cependant j'ai un problème avec le label "actif". imaginons que nous sommes le 10/10/2019 et que ma date d'expiration ($dateheb) est le 29/10/2019, il m'affiche correctement le label "actif" car $dateheb est bien > que $today. cependant si ma date d'expiration ($dateheb) est le 01/11/2019, il m'affiche "expiré" car il considère que 01 est plus petit que 10. Il ne prend en considération donc que le jour pour calculer $dateheb>$today.

Auriez-vous une idée pour qu'il prenne en considération l'entièreté de la date ?

merci d'avance.

Mammouth du PHP | 688 Messages

28 oct. 2019, 08:51

m/d/Y au lieu de d/m/Y pour les comparaisons.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

28 oct. 2019, 11:13

m/d/Y au lieu de d/m/Y pour les comparaisons.
Je dirai même plus Ymd (sans les slash et en mettant l'année en premier).
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 3 Messages

28 oct. 2019, 11:15

Merci. En fait c'est super logique. je devrais même utiliser Y/m/d car les comparaisons peuvent se faire sur plusieurs années aussi.

Cependant il faut que je trouve comment changer le format $dateheb. ou même rajouter une variable qui sera utilisée pour la comparaison car $dateheb doit resté affiché via echo en format (d/m/Y)
j'ai essayé ceci pour vérifier mais sans succès.
$datehebinv = $dateheb->format('Y/m/d');
echo $datehebinv;
Modifié en dernier par kevkak le 28 oct. 2019, 11:33, modifié 2 fois.

Petit nouveau ! | 3 Messages

28 oct. 2019, 11:27

Ok résolu avec
$datehebinv = date("Ymd", strtotime($dateheb));
merci à tous pour vos pistes