[RESOLU] afficher message si requête plus de 30 jours

Eléphanteau du PHP | 20 Messages

16 oct. 2020, 14:21

Bonjour
J'ai fais une requête dont le résultat s'affiche dans un menu déroulant,
Je voudraic que ça indique "nouveau" pour les résultats de moins de 30 jours
Comment puis-je faire ?
<select>
<option value="">Sélectionnez</option>
<?
$requete= $bdd->query("SELECT * FROM MaTable WHERE champ=':champ' ORDER BY id ASC");
while ($data= $requete->fetch())
{
?>
<option value="(réf : <? echo $date["id"] ?>)"><? echo $data["nom"] ?></option>
<? } $requete->closeCursor(); ?>
</select>

Mammouth du PHP | 1411 Messages

16 oct. 2020, 14:24

faire un test sur le champ adéquat de la table avec par exemple
https://www.php.net/manual/fr/datetime.diff.php

Eléphanteau du PHP | 20 Messages

16 oct. 2020, 19:32

J'ai essayé ça, ça me retourne bien le nombre de jours séparant les 2 dates, ceci dit, dans mon <select< <option> il ne tient pas compte des conditions et me met 'NOUVEAU' partout
<? $date1 = new DateTime($data['date']);
$date2 = new DateTime(date('Y-m-d'));
$diff = $date1->diff($date2)->format("%a");
$days = intval($diff);
if ($days<30) {
$new = "NOUVEAU";
}
?>
<option value="(réf : <? echo $date["id"] ?>)"><? echo $data["nom"] ?><? echo $new ?></option>

Eléphanteau du PHP | 20 Messages

17 oct. 2020, 11:24

C'est bon ça marche, je vous donne le code si ça peut aider quelqu'un :
Merci de votre aide

$date1 = new DateTime($data['date']);
$date2 = new DateTime(date('Y-m-d'));
$diff = $date1->diff($date2)->format("%a");
$days = intval($diff);
if ($days<30) {
$new = "NOUVEAU";
}
?>
<option value="(réf : <? echo $date["id"] ?>)"><? echo $data["nom"] ?><? echo $new ?></option>

Mammouth du PHP | 1411 Messages

17 oct. 2020, 14:03

c'est le même code. et sans un else pour le if, ou une initialisation de $new à '' à chaque début de la boucle, cela ne fonctionne pas correctement.