8791 sujets

Développement web côté serveur, CMS

Salut,

Dans le cadre d'un concours de flêchettes je dois faire afficher la liste des réservations. Le leader de chaque équipe fait la réservation de toute sa team, je voudrais que les organisateurs puissent afficher toutes les réservations en cours à partir de la date du jour et pour une période précise (exemple à partir d'aujourd'hui et pour les 5 jours à venir).

Mes deux tables ressemblent à ça:

concurrents
ID_CONCURRENT | PRENOM_CONCURRENT | NOM_CONCURRENT | PHONE_CONCURRENT | MAIL_CONCURRENT |
124 | Etienne | Blanchard | 0600000000 | etienne.blanchard@fai.fr |

reservations
ID_RESERVATION | ID_CONCURRENT | DATE_RESERVATION | HEURE_RESERVATION | NB_PERSONNES | DEF_RESERVATION |
36 | 124 | 201-06-19 | 15:30:00 | 6 | blablabla |

Voici maintenant ma requête:
$listResa = "SELECT ID_CONCURRENT, PRENOM_CONCURRENT, NOM_CONCURRENT, PHONE_CONCURRENT, MAIL_CONCURRENT, DATE_RESERVATION, HEURE_RESERVATION, NB_PERSONNES, DEF_RESERVATION
            FROM concurrents 
            INNER JOIN reservations 
            ON concurrents .ID_CONCURRENT = reservations.ID_CONCURRENT 
	    ORDER BY reservations.DATE_RESERVATION ASC";


Cette requête fonctionne comme ça mais je ne sais pas comment faire pour n'inclure que les réservations du jour plus celles des 5 prochains jours.

Auriez-vous une idée sur la marche à suivre svp ?
Modifié par LordBatoon (12 Jun 2010 - 20:33)
Il me semble qu'en utilisant le POSIX timestamp (Il s'agit du nombre de secondes écoulées depuis le 1er janvier 1970 00:00:00). Tu pourrais y arriver facilement. De plus tu n'as pas besoin d'un champ pour la date et d'un autre pour l'heure. Il te faudrait par contre un script qui fait les étapes suivantes:

-Réception de la date et de l'heure écrit dans le formulaire d'envoi d'une réservation.
-Transformation de cette date/heure en heure POSIX timestamp (Cela devient un simpe chiffre).
-Incorporation de l'heure timestamp dans la base de données.

Lorsque le script veut visionner les réservation pour aujourd'hui et 5 jours plus tard:

-Récupération de l'heure timestamp actuel dans une variable.
-Ajout a cette variables de 5 x 86 400 (le nombre de seconde dans 24h x 5 jours) dans une autre variable.
-Recherche dans la base de données les entrées ayant un timestamp entre celui actuel et celui dans 5 jours.

Bien sur cela n'affichera plus une réservation dès que celle-ci est commencé. Si tu veut garder celle qui ont commencé il y a disons quelques heures avant l'heure actuel tu peut soustraire un nombre de seconde a l'heure actuel pour afficher les réservations qui sont déjà en cours.

Il y a peut-être une meilleure façon, mais je crois que cela peut marcher. D'ailleurs PHP intègre la plupart des fonctions pour convertir une date et pour savoir le timestamp actuel.
Merci pour vos réponses, en fait la solution était très simple:
$listResa = "SELECT ID_CONCURRENT, PRENOM_CONCURRENT, NOM_CONCURRENT, PHONE_CONCURRENT, MAIL_CONCURRENT, DATE_RESERVATION, HEURE_RESERVATION, NB_PERSONNES, DEF_RESERVATION 
     FROM concurrents  
     INNER JOIN reservations  
     ON concurrents .ID_CONCURRENT = reservations.ID_CONCURRENT  
     [b]WHERE DATE_RESERVATION BETWEEN CURRENT_DATE AND CURRENT_DATE + INTERVAL 5 DAY[/b]
     ORDER BY reservations.DATE_RESERVATION ASC";


C'est le 'INTERVAL 5 DAY' que je ne connaissais pas. C'est propre et très simple... mais il fallait connaitre. Smiley cligne
Modifié par LordBatoon (12 Jun 2010 - 20:31)