|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre éclairé
![]() Gérard OkonoDéveloppeur Web Inscription : juillet 2006 Messages : 707 ![]() |
Bonsoir à tous,
Pour mes besoins, je souhaite réaliser un module de news pour gérer l'actualité parlementaire. Les choses au parlement sont regroupées en législature. Et dans mon cas une législature coure sur 5 ans. Et chaque année parlementaire(année d'une législature) est divisée en 3 sessions. Celle Novembre, Mars et Juin. Je souhaite donc découpé mes news par législature et session. Retrouver toutes les news d'une session par exemple celle de mars, ou bien par exemple toutes les news d'une législature. Je ne sais donc pas comment tailler ma table ou mes tables à propos. Cela me permettra aussi de classer mes textes de lois dans la même logique (législature et sessions). Merci d'avance pour votre aide. NB. Les choses pourront s'étaler sur plusieurs sessions.
|
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Thierry NFC & DevWeb Inscription : avril 2006 Messages : 1 175 ![]() |
Il y a beaucoup de spécialiste dans ce domaine et bien que je ne le sois pas, voilà comment je ferais (ou du moins j'essayerais de faire
Idée 1/ Créer un ou deux champ(s) supplémentaire(s) dans la table news qui représenteraient la législature et la session. ex: 2008:2. Ce codage correspondant à une convention que tu auras définit au préalable avec les utilisateurs. Idée 2/ Créer une table législature avec 3 champs: ID_Legislature, Legislature, Session. Cette table est liée à la table News par le champ ID_Legislature. J'espère avoir été claire et surtout ne pas être hors sujet. |
|
|
00
|
|
|
#3 | |
|
Membre éclairé
![]() Gérard OkonoDéveloppeur Web Inscription : juillet 2006 Messages : 707 ![]() |
Citation:
table legislatures avec 3 champs id, annee_debut et annee_fin et comme exemple id_legis | annee_debut | annee_fin 1 | 2003 | 2008 2 | 2008 | 2013 table sessions id_session | mois 1 | Novembre 2 | Mars 3 | Juin table news id_news | id_legis | id_session | news_titre | news_texte | date_insertion Avec cela ca marche, mais j'ai l'impression que le champs id_legis serait inutile. date_insertion étant un datetime, YEAR(date_insertion) me retourne l'année du post de la news et en comparant cette année avec annee_debut et annee_fin de chaque legislature, on peut retrouver la legisture de la news. Je souhaite donc savoir comment faire cette comparaison. je pense être claire. Meilleures salutations. |
|
|
|
00
|
|
|
#4 | |
|
Membre Expert
![]() Thierry NFC & DevWeb Inscription : avril 2006 Messages : 1 175 ![]() |
Citation:
en plus c'est peut être mieux que ce que je t'ai proposé.Par contre ton idée de supprimer id_legis n'est pas bonne à mon avis. D'une il te faut une clé primaire sur ta table (mettre annee_debut ou fin n'est pas top), deux, si tu veux que tes requêtes soient performantes, il faut mieux faire une recherche sur un champ indexé et indexer une des années sur une si petite table ?. Utilise ton temps à autre chose |
|
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : janvier 2010 Messages : 59 ![]() |
Je confirme okoweb ta solution est bien bonne pour id_legis ca dépends, je le garderais, ca
|
|
|
00
|
|
|
#6 | ||||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 707 ![]() |
Salut
Je suis plutôt d'accord sur la structure que tu as conçue. Mais un truc me chiffonne malgré tout, car il est dit que : Une législature c'est 5 ans (comme 2003 - 2008) Puis chaque année des législatures il y a 3 sessions (Novembre, Mars, Juin) Et enfin, chaque News correspond à 1 législature, donc à 1 session. Là je veux en venir, c'est que théoriquement, c'est les sessions (table sessions) qui sont liées directement aux législatures, or, cette structure ne le représente pas. C'est la table "news" qui fait le lien avec les 2, ce qui est théoriquement pas vraiment la même chose. D'ailleurs, on perçoit dans la réalité qu'il y a un phénomène de répétition : Tous les ans il devrait avoir 3 sessions, donc 15 sessions pour chaque législature (3 x 5 ans). Toujours théoriquement, on devrait avoir ceci : legislatures Code :
Code :
Coté requête, faudra faire une jointure. new -> sessions sessions -> legis Encore que, si on a les 2 infos (les 2 IDs) sur le coude, et qu'on estime fiables, la jointure session/legis peut être évité. Il me semble que c'est plutôt comme ceci d'après ce que tu as exprimé, non ? A coté de ça, on voit bien que les sessions seront les mêmes tous les ans, qu'il est peut être peu probable que ça change (aussi bien le mois que le nombre/an), mais ça reste néanmoins basé sur une probabilité. Encore que là, personnellement je sais vraiment pas. ![]() Faire 3 lignes/ans, soit 15 tous les 5 ans et 30 tous les 10 ans, c'est très peu. L'avantage, c'est qu'il est possible de rajouter autant de sessions par années en cas d'exception, de même de leur donner un libellé individualisé aussi. Mise à part ça, ça diffère très peu. En espérant aussi ne pas être à coté de la plaque, car les législatures, c'est franchement pas ma tasse de thé.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
||||
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Thierry NFC & DevWeb Inscription : avril 2006 Messages : 1 175 ![]() |
@okoweb Conserve ta structure:
table news id_news | id_legis | id_session | news_titre | news_texte | date_insertion Si le cycle des Sessions est toujours le même, Novembre Mars Juin, avec simplement 3 enregistrements dans la table Sessions la requête est possible. tu n'auras donc pas de problèmes à trouver une news avec ta structure. Je ne partage pas l'avis de RunCodePhp. |
|
|
00
|
|
|
#8 | ||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 707 ![]() |
Citation:
Pour ma part, je n'ai fais qu'une remarque sur un aspect par rapport à ce qui a été exprimé. Personnellement, je ne m'aventurerais pas, à moins de bien maitriser le sujet (les législatures). A coté de ça, et juste par curiosité, j'ai jeté un oeil sur un site où le déroulement des législatures étaient très variables : Rarement les même mois, rarement le même nombre de session, etc ... Il y aurait rien de fixe apparemment. M'enfin, Okoweb doit le savoir mieux que nous. Citation:
Dans l'absolu on pourrait aussi le faire en une seule et unique table, et on aura aussi aucun mal à retrouver une news, mais vraiment aucun. Mais est ce bon pour autant ?
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
||
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() Thierry NFC & DevWeb Inscription : avril 2006 Messages : 1 175 ![]() |
|
|
|
00
|
|
|
#10 | |||
|
Membre éclairé
![]() Gérard OkonoDéveloppeur Web Inscription : juillet 2006 Messages : 707 ![]() |
Malgré mon retard, déjà mes remerciements à tous pour vos réactions.
Citation:
Comment résoudre ce problème? Merci d'avance... |
|||
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() Thierry NFC & DevWeb Inscription : avril 2006 Messages : 1 175 ![]() |
Il y a plusieurs solutions, pour ma part j'utiliserais une liste <select> avec tous les mois. De cette façon aucun risque d'erreur de saisie et tu stock le numéro du mois.
|
|
|
00
|
|
|
#12 | ||||||||||||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 707 ![]() |
Citation:
Exemples simples : Code sql :
Mais dans cette exemple, même si cela est inutile, il faudrait quand même choisir une législature en particulier. Ensuite, et bien comme le propose Riete, propose un menu déroulant (ou boutons radios, peu importe) lors d'une insertion ou modification. En somme, on évite au maximum les saisies, pour justement éviter les erreurs de frappes. Citation:
Code sql :
A coté de ça, si dans tes spécifications les mois seront toujours les mêmes (novembre, mars, juin), il faut en être certain aussi, et bien rien empêche de le représenter dans la Bdd en créant/rajoutant ça dans une table. table : "legis_libelle" Code :
Puis coté session_legis : Code :
Puis pour obtenir toutes les news d'1 législature de Juin : Code sql :
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
||||||||||||
|
|
00
|
|
|
#13 |
|
Membre éclairé
![]() Gérard OkonoDéveloppeur Web Inscription : juillet 2006 Messages : 707 ![]() |
@RunCodePhp, @Riete : Merci à vous tous. je regarde et reviens à vous. Je pense être au bout du tunnel.
Meilleures salutations à tous.
|
|
|
00
|
|
|
#14 |
|
Membre éclairé
![]() Gérard OkonoDéveloppeur Web Inscription : juillet 2006 Messages : 707 ![]() |
@RunCodePhp, merci.
Précision : Les news sont liées plutôt aux sessions et non aux législatures, et les sessions aux législatures. Les jointures font le reste du sale boulot.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com