|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |
|
Membre confirmé
![]() Inscription : mars 2003 Messages : 674 ![]() |
Bonjour,
Je fais un site pour des réservations à la semaine et j'aimerai bien savoir comment je peux construire la table. J'ai pensé à une table "semainier" du genre : - id_logement (qui fait référence à la table des logements) - semaine1 (où j'indiquerai un tarif) - statut1 (où j'indiquerai 0 pour libre et 1 pour non disponible) - semaine2 - statut2 - semaine3 - statut3 etc... jusqu'à la semaine 52 Ma requete serait Code sql :
SELECT * FROM semainier WHERE id_logement = $id_logement; Citation:
Est ce que je ne risque pas d'avoir un problème pour traiter le mois de février ? Merci d'avance |
|
|
|
00
|
|
|
#2 | |||
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Citation:
Code :
|
|||
|
|
00
|
|
|
#3 |
|
Membre confirmé
![]() Inscription : mars 2003 Messages : 674 ![]() |
Merci pour la réponse.
Dans ton exemple je ne vois pas où je mets le prix des réservations par semaine. Surement dans la table reservations ? Comment je fais la maintenance de la table semaines ? manuellement ? ou alors je crée une requête qui s'exécute automatiquement -ou pas- au changement d'année ? |
|
|
00
|
|
|
#4 | |
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Citation:
Manuellement ? Tu veux dire, comme si tu étais un opérateur de saisie ? ![]() oui, ou plus simplement, tu peux calculer à l'avance les cent prochaines années, ce qui devrait t'assurer qu'on ne viendrait pas te demander de venir corriger le bug de l'an 2111. |
|
|
|
00
|
|
|
#5 | |
|
Membre confirmé
![]() Inscription : mars 2003 Messages : 674 ![]() |
oui c'est 1 prix par semaine par logement donc je vais ajouter un champ
Je suis d'accord ce n'est pas une bonne idée. ![]() Citation:
![]() Il serait quoi ce bug de 2111 ? Bien sur c'est par curiosité parce que cette année je n'aurai plus mal aux dents |
|
|
|
00
|
|
|
#6 | |
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Citation:
Et bien, si tu crées aujourd'hui un calendrier couvrant les 100 prochaines années, et que ton application perdure jusque-là, en 2111 ils vont s'apercevoir que le calendrier ne contient plus de date utilisable... Si tu ne fais que 10 ans, cela arrivera en 2021. |
|
|
|
00
|
|
|
#7 |
|
Membre confirmé
![]() Inscription : mars 2003 Messages : 674 ![]() |
Au moment où je crée les tables je me pose une question.
Dans la table semaines Debut et Fin sont de quel format : DD-MM ? |
|
|
00
|
|
|
#8 | |
![]() ![]() |
Citation:
pour plus d'infos sur la gestion des calendriers, voir chez SQLPro.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
|
00
|
|
|
#9 | ||
|
Membre confirmé
![]() Inscription : mars 2003 Messages : 674 ![]() |
Je reviens car j'ai avancé un peu dans mon projet
Le code qui suit donne les dates de tous les samedi lorsqu'on entre une date qui correspond à un samedi. Code :
Le problème c'est que je ne sais pas alimenter une table avec boucle comme ci-dessus Merci de me dire où je peux trouver un tuto ou me dire comment faire. |
||
|
|
00
|
|
|
#10 | ||
|
Membre confirmé
![]() Inscription : mars 2003 Messages : 674 ![]() |
Je n'ai eu de réponse mais je pense avoir trouvé la soltion
eh oui la nuit porte conseil A mon avis ma requete va se trouver ici à l'intérieur de la boucle : Code :
|
||
|
|
00
|
|
|
#11 | ||||
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Je ne comprends pas pourquoi tu veux créer une nouvelle table à chaque fois, alors que ta table va être la même, modulo les dates de début et de fin.
Si tu veux faire une table des semaines, qui serais par exemple celle-ci : Code SQL :
Tu peux utiliser une table des chiffres de 0 à 9 pour créer facilement les mille semaines à partir du lundi 3 janvier 2011 et être ainsi tranquille jusqu'en 2030. Code SQL :
|
||||
|
|
00
|
|
|
#12 | ||
|
Membre confirmé
![]() Inscription : mars 2003 Messages : 674 ![]() |
Merci de continuer cette discussion.
En fait je ne détruis la table des semaines, je la vide chaque année puis je la reconstruis. L'avantage est que l'id_semaine me donne automatiquement le n° de la semaine celui-ci étant utilisé par par pas mal de gens. Je vais regarder de plus près les codes que tu me donnes car je ne comprends pas tout. exemple je ne comprends pas pourquoi YEAR est une clé primaire. Le code pour insérer les valeurs dans la table des semaines ne me parle pas trop. Le mieux c'est peut être que je l'utilise pour me permettre de comprendre. C'est surtout cette partie où je bute Code :
|
||
|
|
00
|
|
|
#13 | ||||||
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Citation:
Quant au numéro de semaine, je l'ai bien inclus dans ma table. Citation:
Une autre variante serait de mettre la clé primaire sur la date de Debut. Citation:
Citation:
Je fais ensuite un second produit cartésien par une troisième instance de Chiffres, nommée C (Centaines). J'obtiens ainsi mille lignes, numérotées de 0 à 999 par la formule 100 * C.Num + 10 * D.Num + U.Num. Il ne reste plus qu'à transformer ces numéros en semaines. Pour cela, je pars du lundi 3 janvier 2011, et j'ajoute 0 jours, 7 jours, 14 jours, etc. jusqu'à 999 * 7 jours. J'obtiens ainsi les mille lundis à partir de 2011, et il ne me reste plus qu'à utiliser les fonctions classiques YEAR et WEEK pour générer les infos manquantes. Non, pas avec un index sur les colonnes que tu utilises pour tes filtres ou tes jointures (Annee et Semaine ou Debut et Fin, selon ton utilisation). |
||||||
|
|
00
|
|
|
#14 |
|
Membre confirmé
![]() Inscription : mars 2003 Messages : 674 ![]() |
Déjà je tiens à te remercier Antoun pour toutes tes explications et ta patience.
Donc je viens de créer les tables. Tout fonctionne bien mais... Le problème est que les réservations se font du samedi au samedi et dois afficher les semaines du samedi au samedi. Donc j'ai remplacé les valeurs Lundi par Samedi et j'ai changé la date de départ : 2011-01-01 Quand je regarde la table semaines, certains n° de semaines commencent par 0 !!! Y a t-il une solution à ce problème ? |
|
|
00
|
|
|
#15 |
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
MySQL prévoit plusieurs modes de numérotation des semaines (cf http://dev.mysql.com/doc/refman/5.1/...#function_week), mais après test, aucun d'entre eux ne permet de numéroter 1 une semaine commençant un samedi.
Je pense que le plus simple est de rester calé sur le lundi 03/01/2011, et de reculer ensuite les dates de début et fin de 2 jours : Code :
update semaines set deb = deb - interval 2 day, fin = fin - interval 2 day ; |
|
|
00
|
|
|
#16 |
|
Membre confirmé
![]() Inscription : mars 2003 Messages : 674 ![]() |
Tout cela est parfait.
![]() Il me reste maintenant à créer un tableau HTML pour la sélection des semaines et à entrer les réservations dans la table des réservations. Encore merci |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com