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

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'));
Voici ma requête actuellement :

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
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.

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.