Menus dynamiques

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Menus dynamiques

par Cyrano » 29 avr. 2005, 22:27

à première vue, ça se tient, j'aurais probablement séparé l'introduction dans une quatrième table pour éviter les doublons puisqu'on peut la retrouver dans plusieurs ouvrages. Ça donnerait la structure suivante:

Code : Tout sélectionner

Livre - id_livre <PK> - id_intro <FK> - titre_liv - ss_titre_liv partie_liv - id_partie <PK> - id_livre <FK> - numero_partie - titre_partie chapitre_liv - id_chap <PK> - id_partie <FK> - num_chap - page_debut - page_fin Introduction -id_intro <PK>
Après, c'est une question de requête avec jointure et clause GROUP BY pour retrouver ton arborescence triée par livre, parties et chapitres.

menus dynamiques

par bk » 29 avr. 2005, 22:03

Bonsoir à tous et en paticulier à ceux qui ont débatu sur ma petite question.

Juste pour en rajouter voici la structure que j'ai pour le moment construite pour enregistrer mes résumés de livre

Table 1 Resume_livre
Champ 1 ID
Champ 2 Titre Livre
Champ 3 Sous-Titre Livre
etc.
Champ N ResumeRef qui me sert de clé pour les tables suivantes

Table 2 Partie_livre
Champ 1 ID
Champ 2 Numéro_Partie
Champ 3 titre_Partie
Champ 4 LivreRef qui est égal au Champ N de table 1

Table 3 Chapitre_Livre
Champ 1 ID
Champ 2 Numéro_Chapitre
Champ 3 Page_Debut
Champ 4 Page_Fin
Champ 5 Resume
etc.
Champ N PartieRef qui est égal au champ 3 de la table 2 donc pour moi le lien avec la partie
champ N+1 ReferenceLivre qui est égal au Champ N de la table N car pour moi il peut y avoir plusieurs titre_partie identiques pour des livres différents (par ex. Introduction peut se retrouver dans des ouvrages différents) donc comme mon référentiel ResumeRef étant unique ca colle.

Pour info cette structure je l'avais construite auparavant dans une autre base de données (4D) et j'avais sans pb réussit à construire ma liste dynamique me permettant de visualiser en permanence l'arborescence d'un livre à partir de son titre et de pouvoir reconstituer dans un traitement de texte dédié le résumé en suivant cette hiérarchie.

Par contre et c'est là où ma méconnaissance de PHP me fait défaut dans mon programme 4D j'avais à dispo des fonctions spécifiques pour la génération de listes dynamiques et il me semble que PHP n'en possède pas ?

Merci encore de vos lumières

A+
BK :lol:

par seayoung » 29 avr. 2005, 11:24

mais bon au niveau de l'organisation il est vrai que une table pour chaque catégorie c'est mieux
et puis aussi
toutefois juste histoire de menfoncer encore un peu
car dans le concepte je suis tout a fait d'accord avec toi Cyrano

par Cyrano » 29 avr. 2005, 10:59

Bien sur que non seayoung : essaye de visualiser. Un auteur est en train d'enregistrer son livre dans une base de donnée. Dans la table livre, il va inscrire le titre. À ce stade, il n'y a pas une seule ligne dans la table chapitre. Quand il enregistre le premier chapitre, une ligne est écrite dans la table chapitre.
Si tu n'avais qu'une seule table avec un champ chapitre1, tu serais obligé d'avoir une valeur NULL dans ce champ tant que le chapitre n'est pas enregistré.

Règle d'OR lors de la conception d'une base de données : Éviter autant que faire se peut les champs de valeur NULL : ça prend de la place pour rien et ce n'est pas optimisé.
Il y a des cas où on a pas le choix, mais si tu ne respecte pas cette règle de base, tu vas construire des usines à gaz :)

par seayoung » 29 avr. 2005, 10:47

:oops:
c possible aussi ca marche aussi :oops:
oui Cyrano je le pense!!!!
je dois encore une fois m incliner devant ta grandeur ....
je sort :cry:
toutefois juste histoire de menfoncer encore un peu : les trentes champs pour les chapitre tu les auras de toutes les façons donc que tu mettes tout dans une table ou plus tu auras toujours tes trentes chapitres donc tes trentes champs

mais bon au niveau de l'organisation il est vrai que une table pour chaque catégorie c'est mieux :wink:

par Cyrano » 29 avr. 2005, 10:44

c possible ca marche aussi :D
mais bon je pense que trois table ou on peu en avoir qu'une ... est ce bien necessaire ? :roll:
Et combien de champs "chapitre" vas-tu mettre dans une table "livre" : d'un titre à l'autre, tu peux avois 5, 12 ou 30 chapitres. il serait complètement incohérent d'avoir trente champs "chapitre1", "chapitre2" etc... au lieu d'une table "chapitre" avec un identifiant et en clé étrangère la clé primaire de la table livre, ne crois-tu pas seayoung ?

par seayoung » 29 avr. 2005, 10:30

c possible ca marche aussi :D
mais bon je pense que trois table ou on peu en avoir qu'une ... est ce bien necessaire ? :roll:

par Cyrano » 29 avr. 2005, 10:15

La première question qui me vient à l'esprit c'est : as-tu dans la structure de ta base établi un système de clé primaire/clé étrangère ? Ou ce concept t'est encore un peu étranger ?
Avec ce système, il suffirait d'une seule requête avec une jointure de regrouper les informations en provenance des trois tables nécessaires.

par seayoung » 29 avr. 2005, 10:12

je vois pas trop ce que tu veux pourkoi pa choisir une table avec tous ces champs ca te simplifirai en plus pour tes requettes ?
pour ce qui est d'afficher les info de trois tables différens essaye peut etre quelque chose comme :

Code : Tout sélectionner

$livre = mysql_query("SELECT Titre Livre FROM nom de la table 1"); $chap1=mysql_query("SELECT Partie N FROM nom de la table 2"); ... while ($donnees = mysql_fetch_array($livre) ) { ... }
toutefois si tu avais qu une table tu aurais :

Code : Tout sélectionner

$var = mysql_query("SELECT * FROM nom de la table "); while ($donnees = mysql_fetch_array($var) ) { echo $donnees['titre_livre']; .... }

Menus dynamiques

par BK » 28 avr. 2005, 17:51

Bonjour à tous

Est-ce que quelqu'un à déjà fait ce genre de prog SVP et pourrait donc m'éclairer de ses lumières pour le cas suivant:

Je souhaite afficher de la manière suivante 3 infos venant chacune d'une table MySQL différente dans un formulaire qui me servira alors à ajouter une nouvelle partie ou un nouveau chapitre ou mettre à jour un chapitre par exemple:

Titre Livre (champ dans Table 1)
->Partie N (champ dans Table 2)
->ChapitreN (chanp dans Table 3)
->ChapitreN+1
->Partie N+1
etc.

Merci d'avance pour votre aide ou suggestions.

A+
BK