Bonsoir,
Il faut comparer la date d'aujourd'hui avec le jour et le mois des données.
Le problème c'est qu'il faut convertir tes données au format date.
1> il faut concatener la prochaine année avec les dates dans la base pour la comparaison
CONCAT(YEAR(NOW())+1,'-',date) : on obtient une date de type "yyyy-mm-jj"
2> il faut obtenir les dates qui suivent aujourd'hui
DAY(NOW()) <= CONCAT(YEAR(NOW())+1,'-',date) et MONTH(NOW()) <= CONCAT(YEAR(NOW())+1,'-',date)
3> Il faut ordonner selon le mois puis le jour pour avoir la prochaine date la plus proche et faire un limit pour n'avoir qu'une réponse
ORDER BY MONTH( CONCAT( YEAR( NOW( ) ) +1, '-', date ) ) ASC , DAY( CONCAT( YEAR( NOW( ) )+1 , '-', date ) ) ASC LIMIT 1
ça donne en gros :
SELECT *
FROM `table`
WHERE DAY( NOW( ) ) <= DAY( CONCAT( YEAR( NOW( ) )+1 , '-', date ) )
AND MONTH( NOW( ) ) <= MONTH( CONCAT( YEAR( NOW( ) ) +1, '-', date ) )
ORDER BY MONTH( CONCAT( YEAR( NOW( ) ) +1, '-', date ) ) ASC , DAY( CONCAT( YEAR( NOW( ) ) +1, '-', date ) ) ASC
LIMIT 1
Il y a surement une méthode plus simple...
Est-ce que tu comprends le +1 au niveau des années ? C'est pour gérer un cas un peu particulier! mais lequel ?
le +1 m'oblige à utiliser DAY et MONTH, pourquoi ?