Bonjour,
J'ai une table évènement constituée comme ceci :
id titre date_debut date_fin 1 Mon evenement 1 2014-09-10 15:40:00 2014-09-15 20:40:00 2 Mon evenement 2 2014-09-15 15:40:00 2014-09-15 20:40:00 -- -- -- --
Je souhaite sélectionner les événements dans un intervalle donné en fonction d'une date X.
Mon code PHP
Voici ma requête actuellement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $currentDate = $_GET['date']; $dateToday = new DateTime(date("Y-m-d")); $dateSelect = new DateTime($_GET['currentDate ']); $dateDiff = date_diff($dateToday, $dateSelect); $interval = intval($dateDiff->format('%a'));
où :interval est la variable PHP $interval qui correspond au nombre de jours entre la date X et aujourd'hui. Exemple pour : "Je souhaite sélectionner les événements qui se déroulent DEMAIN", $interval vaudra 1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT id FROM evenements WHERE (CURRENT_DATE() + INTERVAL :interval DAY BETWEEN DATE(date_debut) AND DATE(date_fin)) AND IF(DATE(date_fin) = CURRENT_DATE(), date_fin > CURRENT_TIMESTAMP(),1=1) ORDER BY date_debut ASC
Cependant j'aimerais trié mes résultats d'une manière bien particulière :
- J'aimerais d'abord avoir les événements où la date de début est la date X et que la durée de l’événement soit inférieur à 1 jour rangé par date_debut ASC
- Et ensuite les autres événements rangés par date_debut ASC.
Auriez-vous une solution ou des pistes à me proposer ?
Merci.
Partager