|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : mai 2007 Messages : 14 ![]() |
Bonjour à tous,
je développe un Intranet de gestion de salles pour une municipalité. Le site est en PHP, et la BdD est en MySQL v5. Mais j'ai un petit problème : dans le cadre d'une modification du cahier des charges, je dois prendre en charge des réservations hebdomadaires. Donc, dans le formulaire de ce type de réservations, on spécifie date de début, date de fin, horaires de la réservation et JOUR de la réservation. Le but du jeu est donc d'insérer dans la table des locations une réservation à chacune des dates comprises dans l'intervalle spécifié et dont le jour est JOUR. Je pense que c'est peut_être plus simple de gérer en MySQL qu'en PHP, MySQL disposant des fonctions appropriées (DAYOFWEEK...), mais je n'arrive pas à définir la ou les requete(s) SQL à insérer dans ma page PHP... Any idea ?? Merci par avance pour vous pencher sur mon problème... |
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() ![]() Jasmine Inscription : octobre 2006 Messages : 2 824 ![]() |
quelque chose de ce genre
Code :
Il faudrait faire un INSERT INTO matable ou un UPDATE matable SET .... WHERE (date BETWEEN 'YYYY-MM-DD' AND 'YYYY-MM-DD' ) AND ChampJour = 'VariableJour' et pour le jour c'est simplement SELECT DAYOFWEEK(date) et en fonction du chiffre renvoyer tu attribues le jour. Jasmine, |
||
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : mai 2007 Messages : 14 ![]() |
j'ai déjà tout ça... mais merci de m'avoir répondu.
Ce que je demande, c'est si l'on désire faire un insert sur un intervalle de date1 à date2 en prenant en compte uniquement le jour pour sélectionner les "bonnes dates", on fait comment. le formulaire PHP permet d'obtenir (pour faire court) : la date initiale de la réservation (format date) ; ex : 12 mai 2007 la date finale de la réservation (format date) ; ex 30 decembre 2007 jour choisi (numérique pour coller au renvoi de la fonction dayofweek() de MySQL) ; ex : le lundi heure de début (format time) : ex 08h00 heure de fin (format time): ex 20h00 Est-ce que l'on crée une table où on insére par exemple toutes les dates d'une année, et leur dayofweek() correspondant ? Dans ce cas, il est extrêmement simple de récupérer les datetime (ou équivalents) dont le dayofweek() a la valeur qu'on cherche... Un simple Select * from une_table where date between $date_initiale and $date_finale and dayofweek(date) = $valeur_jour ; devrait suffire. Puis pour chaque date obtenue, on fait un insert dans la table de réservation... Le seul point lourd, c'est que ce système de réservation hebdo doit marcher pour 2 ans à l'avance. Un trigger (?) doit alors permettre de s'assurer que la table (date/dayofweek)évolue pour proposer toutes les dates 2 ans à l'avance. Ou peut-on faire plus simple ? Requeter en prenant l'intervalle donné par l'utilisateur, et le dayofweek() à la suite du formulaire.... |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() ![]() Jasmine Inscription : octobre 2006 Messages : 2 824 ![]() |
Code :
WHERE (ChampDate BETWEEN 'YYY-MM-DD' AND 'YYY-MM-DD' ) AND (SELECT DAYOFWEEK(ChampDate)= 2) Tu as donc tes trois variables dans ta requête. - date de début - date de fin - jour (que tu dois préalablement convertir en chiffre) C'est vrai que c'est très loud pour deux ans, je vais réfléchir à plus simple. Jasmine, |
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : mai 2007 Messages : 14 ![]() |
Ok, je vais essayer quelque chose comme ça...
Je reviendrai si j'ai d'autres questions... |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() ![]() Jasmine Inscription : octobre 2006 Messages : 2 824 ![]() |
Je ne connais pas bien php mais je pense que ça serait plus simple d'utiliser ses fonctions sur les dates au lieu de se servir de celles d'SQL.
Jasmine, |
|
|
00
|
|
|
#7 |
|
Invité régulier
![]() Inscription : mai 2007 Messages : 14 ![]() |
A ma connaissance, PHP fait très bien les manipulations de date (conversions timestamp...), et sait retrouver le jour à partir de la date, mais pas le contraire.
Je vais aller rechercher dans le forum PHP pour voir si le problème s'est déjà posé... Merci encore. |
|
|
00
|
|
|
#8 | ||
|
Membre Expert
![]() ![]() Jasmine Inscription : octobre 2006 Messages : 2 824 ![]() |
A j'ai trouvé qqch qui devrait t'aider
Code :
Jasmine, |
||
|
|
00
|
|
|
#9 |
|
Invité régulier
![]() Inscription : mai 2007 Messages : 14 ![]() |
C'est exactement la première partie qui m'interesse...
// ON calcule le timestamp correspondant à la date entrée $timestamp_naissance = mktime(0, 0, 0, $_POST['mois'], $_POST['jour'], $_POST['an']); // ON récupère le numéro du jour correspondant au timestamp (0, 1, 2, 3...) $numero_jour = date('w', $timestamp_naissance); Donc dans ce sript, il convertisse une date (un peu en morceaux, comme les miennes) en time stamp puis il en ressorte le numéro du jour... MAIS il me manque encore l'équivalent de la fonction ADDDATE de MySQL pour pouvoir obtenir tous les jours à tester entre le jour initial et le final. Je suis sur la bonne voie... Ce sera donc tout en PHP... Vais me faire virer d'ici |
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() ![]() Jasmine Inscription : octobre 2006 Messages : 2 824 ![]() |
Tant mieux si tu es sur la bonne voie.
Bonne chance sur l'autre partie du forum ^^ PHP c'est pas trop mon truc, je râme. Jasmine, PS: mets peut-être "résolu" que les gens sachent qu'ils ne faut plus venir répondre ici. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com