8800 sujets

Développement web côté serveur, CMS

Bonjour,

J'ai une table SQL contenant plusieurs evenements avec une heure et un jour.
En gros, j'aimerais afficher sur une page les évènements à venir (selon le jour et l'heure de la connexion donc). J'arrive à afficher les évènements à venir de la journée sans problème, le soucis, c'est que je voudrais afficher également les évènements du lendemain (par exemple quand il est 23h...) mais je n'arrive pas à trouver la requête adéquate Smiley decu

Ma table "evenements" contient un champ "semaine" où il y a les jours de la semaine où l'évènement se produit (sous forme de chiffre de 1 à 7, par exemple : un évènement qui a lieu uniquement le lundi a un 1, un évènement qui a lieu le dimanche un 7, et un évènement qui a lieu plusieurs jours dans la semaine est sous forme 1,2,3...) et donc un champ "heure" contenant l'heure de l'évènement.

Je voudrais donc pouvoir sélectionner les évènements à venir en les ordonnant par jour et par heure.
En gros, si on est jeudi 20h, je veux afficher dans cet ordre :
- evt de jeudi 21h
- evt de jeudi 22h
- evt de vendredi 7h


Ma requête pour l'instant (qui affiche tous les évènements souhaités mais dans le mauvais ordre) :

SELECT *
FROM evenements
WHERE (semaine LIKE '%".$jour."%' AND heure > '".$heure."')
OR (semaine LIKE '%".$lendemain."%'AND heure > '00:00:00')
ORDER BY heure
ASC


$jour correspond à la fonction php date('N')
$heure correspond à date('G:i')
$lendemain = $jour + 1


Une idée de comment ordonner ça comme il faut ???

Merci beaucoup !
Saut bilhackmac,

Avec un ORDER BY semaine, heure ça donne un classement bizarre... J'ai testé pour afficher les evenements du samedi après 17h + dimanche


SELECT *
FROM evenements
WHERE (
semaine LIKE '%6%'
AND heure > '17:00:00'
)
OR (
semaine LIKE '%7%'
AND heure > '0:00:00'
)
ORDER BY semaine, heure ASC


Et le résultat ressemble à :

nom | semaine | heure
evt1 | 1,2,3,4,5,6 | 20:30
evt2 | 1,2,3,4,5,6,7 | 14:30
evt3 | 1,2,3,4,5,6,7 | 16:30
evt4 | 1,2,3,4,5,6,7 | 18:00
evt5 | 1,2,3,4,5,6,7 | 20:30
evt6 | 6 | 18:30
evt7 | 7 | 14:30


J'avoue que je ne comprends pas bien comment MySQL fait son affaire ici...
Modifié par bidoum (06 Jan 2011 - 16:19)
Si tu peux remplace tes notations de semaine par une unique valeur numérique:
Lundi = 1
Mardi = 2
Mercredi = 4
Jeudi = 8
Vendredi = 16
Samedi = 32
Dimanche = 64

et donc Jeudi + Vendredi = 24

Ensuite

SELECT * 
FROM evenements 
WHERE (
    semaine & 32 = 32
    AND heure > '17:00:00'
)
OR semaine & 64 = 64
ORDER BY semaine, heure

Modifié par bilhackmac (07 Jan 2011 - 10:18)