Récupérer plusieurs valeurs d'un même champ
Résolu
LaChaux78
Messages postés
583
Date d'inscription
Statut
Membre
Dernière intervention
-
LaChaux78 Messages postés 583 Date d'inscription Statut Membre Dernière intervention -
LaChaux78 Messages postés 583 Date d'inscription Statut Membre Dernière intervention -
Bonjour, Je reviens encore une fois vers vous. Alors je vais essayé cette fois ci d'être très explicite enfin le mieux possible.
J'ai créé une table dans ma BDD qui me servira pour la gestion de classeurs.
De ce fait j'ai eu beau y tourner dans tous les sens il a fallu que je me résigne à insérer plusieurs valeurs dans un même champ pour pouvoir arrivé à mes fins.
Ma table pour faire simple.
cdc_classeurs (nom de la table)
idclass (auto incrémente)
idpers (tinytext relation avec ma table cdc_personnes)
J'ai créé un tableau pour stocker les noms des personnes et créé des cases à cocher en bouclant dessus.
Maintenant pour pouvoir UPDATER il faut récupérer et afficher les cases qui ont été sélectionnés lors de l'INSERT. Malheureusement si je fait un INSERT avec plusieurs case à coché aucune n'est retournée, par contre si je sélectionne une seule case lors de l'INSERT alors là c'est nickel ma checkbox est sélectionné alors je peux modifier cette case.
J'ai utilisé la fonction implode pour l'insertion et pour l'affichage peut-être qu'il faut utiliser explode et c'est là mon soucis je n'y suis pas parvenu.
En résumé: c'est là où je bloque car je n'arrive pas à ré-afficher plusieurs choix dans les checkbox
Je vous donne ma page complète. Je vous remercie.
mon formulaire
J'ai créé une table dans ma BDD qui me servira pour la gestion de classeurs.
De ce fait j'ai eu beau y tourner dans tous les sens il a fallu que je me résigne à insérer plusieurs valeurs dans un même champ pour pouvoir arrivé à mes fins.
Ma table pour faire simple.
cdc_classeurs (nom de la table)
idclass (auto incrémente)
idpers (tinytext relation avec ma table cdc_personnes)
J'ai créé un tableau pour stocker les noms des personnes et créé des cases à cocher en bouclant dessus.
Maintenant pour pouvoir UPDATER il faut récupérer et afficher les cases qui ont été sélectionnés lors de l'INSERT. Malheureusement si je fait un INSERT avec plusieurs case à coché aucune n'est retournée, par contre si je sélectionne une seule case lors de l'INSERT alors là c'est nickel ma checkbox est sélectionné alors je peux modifier cette case.
J'ai utilisé la fonction implode pour l'insertion et pour l'affichage peut-être qu'il faut utiliser explode et c'est là mon soucis je n'y suis pas parvenu.
En résumé: c'est là où je bloque car je n'arrive pas à ré-afficher plusieurs choix dans les checkbox
Je vous donne ma page complète. Je vous remercie.
$quant = date("z"); // Quantième du jour dans l'année. NB: le 01/09/AAAAA est le 245è jour de l'année // Si l'on est avant le 01/09, l'année d'adhésion ($aadh) est l'année précédente, sinon c'est l'année courante $aadh = $quant < 245 ? date("Y")-1 : date("Y"); $action = 'new'; $a = !empty($_GET['a']) ? $_GET['a'] : NULL; $submit = !empty($_POST['submit']) ? $_POST['submit'] : NULL; $haction = !empty($_POST['haction']) ? $_POST['haction'] : NULL; $idclass = !empty($_REQUEST['idclass']) ? $_REQUEST['idclass'] : NULL; $idpers = !empty($_POST['idpers']) ? $_POST['idpers'] : ''; $possession = !empty($_POST['possession']) ? $_POST['possession'] : NULL; switch($a) { case 'new': $action = 'new'; break; case 'ls' : $action = 'list'; break; case 'mod': $action = 'mod'; break; default : $action = 'new'; break; } if($submit) { switch($haction) { case 'new': if(isset($possession) && is_array($possession)) { $check = implode(',',$possession); // Construction de la requete d'ajout $sql = "INSERT INTO cdc_classeurs (idpers) VALUES (:idpers)"; $datas = array('idpers' => $check); $result = executeQuery($sql,$datas); $typenr = "enregistré"; $reqaj = $sql; $sql = "SELECT * FROM cdc_classeurs LEFT JOIN cdc_personnes ON cdc_personnes.idpers = cdc_classeurs.idpers"; $result = executeQuery($sql,$datas); $donnees = $result->fetch(); $success = "<span class='success'>Le classeur de ".$check." a été $typenr.</span>"; } break; case 'mod': if(isset($possession) && is_array($possession)) { $check = implode(',',$possession); // Construction de la requete de modif $sql = "UPDATE cdc_classeurs SET idpers = :idpers WHERE idclass = :idclass"; $datas = array('idpers' => $check, 'idclass' => $idclass); $result = executeQuery($sql,$datas); $typenr = "modififié"; $reqmod = $sql; $success = "<span class='success'>Le classeur ".$check." a été $typenr.</span>"; } break; } } switch($action) { case 'new': $title = "Saisie des classeurs"; $btsub = "Enregistrer"; $idclass = ""; $idpers = ""; break; case 'list': $title = "Liste des classeurs"; break; case 'mod': $title = "Modification d'un classeur"; $btsub = "Modifier"; $sql = "SELECT * FROM cdc_classeurs WHERE idclass = :idclass"; $datas = array('idclass' => $idclass); $result = executeQuery($sql,$datas); $donnees = $result->fetch(); $idclass = $donnees->idclass; $idpers = $donnees->idpers; break; }
mon formulaire
if($action == 'list') { echo '<h1>'.$title.'</h1>'; $sql = "SELECT * FROM cdc_classeurs"; $result = executeQuery($sql,$datas); echo '<ul>'; while ($donnees = $result->fetch()) { $lien = $_SERVER["PHP_SELF"].'?a=mod&idclass='.$donnees->idclass; echo '<li> <a href="'.$lien.'">'.$donnees->idpers.'</a>'; } echo '</ul>'; // Ecrire bas de page et sortir : listage fini. echo dmaj("sais_classeur.php"); echo "</div></body></html>"; exit; } $checked = $idpers ? " checked " : ""; echo '<form method="post" name="cla" action="'.$_SERVER["PHP_SELF"].'" onsubmit="return verif()">'; echo '<h1>'.$title.'</h1>'; $sql = "SELECT cdc_adherer.idpers, nom, prenom FROM cdc_adherer LEFT JOIN cdc_personnes ON cdc_personnes.idpers = cdc_adherer.idpers WHERE annee = :annee AND cdc_adherer.idclas IN (3,4) ORDER BY nom,prenom"; $datas = array('annee' => $aadh); $result = executeQuery($sql,$datas); while ($donnees = $result->fetch()) { echo '<input type="checkbox" name="possession[]"'; if($donnees->idpers == "$idpers") echo $checked; echo 'value="'.$donnees->idpers.'" />';echo '<label> '.$donnees->nom.' '.$donnees->prenom.'</label><br/>'; } echo '<input type="hidden" name="haction" value="'.$action.'" />'; echo '<input type="hidden" name="idclass" value="'.$idclass.'" />'; echo '</td>'; echo '</tr>'; echo '</table>'; echo '<td class="data"><input type="submit" name="submit" value="'.$btsub.'" /></td>'; echo '</div>'; echo '</form>';
A voir également:
- Récupérer plusieurs valeurs d'un même champ
- Comment recuperer un message supprimé sur whatsapp - Guide
- Comment récupérer un compte facebook piraté - Guide
- Récupérer mon compte facebook désactivé - Guide
- Comment récupérer un document dans le presse-papier samsung - Guide
- Comment recuperer une video sur youtube - Guide
11 réponses
Ton code est toujours aussi brouillon.... et tes explications complètement incompréhensibles..
Mais bon... j'aurai beau te le dire à chacun de tes messages, je pense que ça ne sert à rien..
On a du mal à comprendre si ton souci est lors de l'insertion en base de données ..... ou lors de l'affichage des données insérées sur ta page.
Au départ j'ai pensé à un souci d'insertion en base.... mais après une bonne vingtaine de relecture je penche finalement sur un souci d'affichage.
Et plus exactement.. un problème de jointure dans ta requête
En effet... .. la structure de ta table
n'est pas bonne. ( je te l'ai déjà dit à plusieurs reprises dans tes différentes discussions )
Tu ne peux pas mettre plusieurs ID dans un seul champ idpers et faire des jointures dessus !!!!
Donc, une dernière fois, je te le redis.... tu dois faire une table de relation supplémentaire.. !
Et vu les erreurs que tu commets lorsque tu conçois ta base de données (et ton code en général...) je serais toi.. je commencerai par suivre des tutos adaptés à ton niveau.
A commencer par un bon cours sur les bases de données relationnelles....
Pour rappel.. le 12 octobre 2018 (et oui.. déjà un an ) tu planchais déjà sur ce bout de code et tu avais indiqué que tu allais revoir la structure de tes tables
Discussion visible ici : https://forums.commentcamarche.net/forum/affich-35620214-recuperer-les-valeurs-des-checkboxs#10
Tu n'as guère progressé visiblement....
Mais bon... j'aurai beau te le dire à chacun de tes messages, je pense que ça ne sert à rien..
On a du mal à comprendre si ton souci est lors de l'insertion en base de données ..... ou lors de l'affichage des données insérées sur ta page.
Au départ j'ai pensé à un souci d'insertion en base.... mais après une bonne vingtaine de relecture je penche finalement sur un souci d'affichage.
Et plus exactement.. un problème de jointure dans ta requête
En effet... .. la structure de ta table
Ma table pour faire simple.
cdc_classeurs (nom de la table)
idclass (auto incrémente)
idpers (tinytext relation avec ma table cdc_personnes)
n'est pas bonne. ( je te l'ai déjà dit à plusieurs reprises dans tes différentes discussions )
Tu ne peux pas mettre plusieurs ID dans un seul champ idpers et faire des jointures dessus !!!!
Donc, une dernière fois, je te le redis.... tu dois faire une table de relation supplémentaire.. !
Et vu les erreurs que tu commets lorsque tu conçois ta base de données (et ton code en général...) je serais toi.. je commencerai par suivre des tutos adaptés à ton niveau.
A commencer par un bon cours sur les bases de données relationnelles....
Pour rappel.. le 12 octobre 2018 (et oui.. déjà un an ) tu planchais déjà sur ce bout de code et tu avais indiqué que tu allais revoir la structure de tes tables
Discussion visible ici : https://forums.commentcamarche.net/forum/affich-35620214-recuperer-les-valeurs-des-checkboxs#10
Tu n'as guère progressé visiblement....
Bonjour, C'est exact comme tu l'a souligné il y a un an j'avais fait cette gestion de classeurs avec des relations entre tables quelques choses de structuré. Et au fil du temps je me suis aperçu que je ne pouvais gérer cela de façon conventionnel. Alors j'ai repris un classeur Excel et j'ai fait ma gestion avec. Et aujourdh'ui j'aimerai reprendre cette gestion de façon dynamique. Mais voilà il y a un hic....
Je suis obligé d'insérer plusieurs valeurs dans un même champ sql. je sais que c'est une très mauvaise idée mais dans mon cas je n'ai pas le choix. Je posterai prochainement mon soucis.
Cordialement.
Je suis obligé d'insérer plusieurs valeurs dans un même champ sql. je sais que c'est une très mauvaise idée mais dans mon cas je n'ai pas le choix. Je posterai prochainement mon soucis.
Cordialement.
Je suis obligé d'insérer plusieurs valeurs dans un même champ sql
Tu es OBLIGE ?
Par qui ? Pourquoi ?
je sais que c'est une très mauvaise idée
Ce n'est pas une "mauvaise" idée.... c'est une très très très très mauvaise façon de faire !
Sais tu ce qu'est une Base de données relationnelle et comment la concevoir et l'utiliser ? J'en doute vu tes questions....
mais dans mon cas je n'ai pas le choix
Ah bon ? Comme pour ma première question... qui t'y oblige ? Pour quells raisons ? Qu'est-ce qui t'en empeche réellement ?
Tu ne peux pas ( ne dois pas..) juste prendre tes feuilles excel est esayer de les reproduire dans ta BDD ...
Excel est un tableur.. pas un système de gestion de base de données... tu ne dois donc pas t'en inspirer pour concevoir ta base.
Pour faire une base.. on peut stocker toutes les valeurs dans autant de tables et de champs qu'on le souhaite... il faut juste rester logique et cohérent avec le fonctionnement d'une base relationnelle....
Et avec ta structure actuelle de base tu es loin d'être en accord avec une bdd relationnelle et tu ne pourras JAMAIS réaliser ce que tu souhaites.
Donc.. avant de commencer à coder (ou de continuer dans ton cas)... forme toi sur les bases de données relationnelles et essaye de concevoir un MCD cohérent.
Bonjour, Avant toute chose je sais très bien ce que c'est un classeur Excel c'était simplement pour dire que je gére cela sur papier si tu préféres, je ne suis pas très doué mais quand même. J'ai réalisé une partie administration dont je suis pas mécontent de moi. J'ai fait l'achat de livres sur PHP/MYSQL et je ne serai jamais un pro comme tu l'est mais j'avance quand même à mon niveau.
Je donne des cours de musique BENEVOLEMENT heureusement qu'avec mes élèves, que je ne suis pas aussi intransigeant que tu l'est avec moi. Merci en tout cas pour l'aide que vous apporter.
Je continue dans mes recherches.
Salutations.
Je donne des cours de musique BENEVOLEMENT heureusement qu'avec mes élèves, que je ne suis pas aussi intransigeant que tu l'est avec moi. Merci en tout cas pour l'aide que vous apporter.
Je continue dans mes recherches.
Salutations.
Bonjour, Alors en ce qui concerne mon soucis.
Il faut que je gère la gestion des classeurs dans lequel sont classé les partitions de musique pour chaque musiciens.
Chaque classeur à bien entendu 1 catégorie (pupitre)
Pour que cela soit plus limpide.
Moi j'ai un classeur de la catégorie Saxophone.
Mes deux compères se partagent un classeur de la catégorie Saxophone également.
Alors tu me dira et pourquoi vous n'avez pas chacun un classeur? cela simplifierai la chose.
J'avais fait mes relations des tables de la façon suivante.
Avant d'aller plus loin donne moi tes impressions, même si je redoute le pire.
Merci.
Il faut que je gère la gestion des classeurs dans lequel sont classé les partitions de musique pour chaque musiciens.
Chaque classeur à bien entendu 1 catégorie (pupitre)
Pour que cela soit plus limpide.
Moi j'ai un classeur de la catégorie Saxophone.
Mes deux compères se partagent un classeur de la catégorie Saxophone également.
Alors tu me dira et pourquoi vous n'avez pas chacun un classeur? cela simplifierai la chose.
J'avais fait mes relations des tables de la façon suivante.
cdc_personnes idpers AUTO_INCREMENT nom prenom cdc_classeurs idpers idpup cdc_pupitres idpup AUTO_INCREMENT pupitre
Avant d'aller plus loin donne moi tes impressions, même si je redoute le pire.
Merci.
Tu as donc trois tables...
Table cdc_personnes
Table cdc_classeurs
Table cdc_pupitres
La table cdc_classeurs étant donc la table de jointure entre cdc_personnes et cdc_pupitres ?
Jusque là, tout est bon.
Bien entendu, tu peux avoir dans cette table autant de lignes 'user/pupitre' que necessaire.
Imaginons que tu aies un utilisation dont l'id est "1"
Et qu'il soit rattaché aux classeurs 1,2,3,5
Dans ce cas, dans ta table cdc_classeurs tu auras 4 lignes
1 | 1
1 | 2
1 | 3
1 | 5
Table cdc_personnes
idpers AUTO_INCREMENT nom prenom
Table cdc_classeurs
idpers idpup
Table cdc_pupitres
idpup AUTO_INCREMENT pupitre
La table cdc_classeurs étant donc la table de jointure entre cdc_personnes et cdc_pupitres ?
Jusque là, tout est bon.
Bien entendu, tu peux avoir dans cette table autant de lignes 'user/pupitre' que necessaire.
Imaginons que tu aies un utilisation dont l'id est "1"
Et qu'il soit rattaché aux classeurs 1,2,3,5
Dans ce cas, dans ta table cdc_classeurs tu auras 4 lignes
1 | 1
1 | 2
1 | 3
1 | 5
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Déjà un utilisateur a 1 seul classeur donc dans ton exemple l'ID 1, ne peut avoir 4 classeurs, et 1 classeur à 1 utilisateur ou plusieurs
Mais imaginons comme c'est le cas que deux utilisateur dont l'ID est le 2 et 5 et qu'ils se partagent le même classeur 3.
Un autre utilisateur dont l'ID est le 1 à le classeur 3
voici la correspondance:
classeur = pupitre
pupitre = saxophone ou trompette ou guitare ou piano etc...
2 | 3
5 | 3
1 | 3
Comment je vais pouvoir faire pour savoir entre l'ID 1 et 2 et 3 qui se partagent le même classeur? c'est très important pour cette gestion.
Déjà un utilisateur a 1 seul classeur donc dans ton exemple l'ID 1, ne peut avoir 4 classeurs, et 1 classeur à 1 utilisateur ou plusieurs
Mais imaginons comme c'est le cas que deux utilisateur dont l'ID est le 2 et 5 et qu'ils se partagent le même classeur 3.
Un autre utilisateur dont l'ID est le 1 à le classeur 3
voici la correspondance:
classeur = pupitre
pupitre = saxophone ou trompette ou guitare ou piano etc...
2 | 3
5 | 3
1 | 3
Comment je vais pouvoir faire pour savoir entre l'ID 1 et 2 et 3 qui se partagent le même classeur? c'est très important pour cette gestion.
Erreur d'écriture de ma part
A la place de
Il fallait lire
Ensuite
Dans ce cas... il te manque un champ pour faire le lien entre une personne et un classeur.
Si tu as une liaison 1 personne -> 1 classeur il faut dans ce cas ajouter, dans ta table cdc_personnes un champ 'id_classeur'
A la place de
Imaginons que tu aies un utilisation dont l'id est "1"
Et qu'il soit rattaché aux classeurs 1,2,3,5
Il fallait lire
Imaginons que tu aies un utilisation dont l'id est "1"
Et qu'il soit rattaché aux pupitres 1,2,3,5
Ensuite
Déjà un utilisateur a 1 seul classeur
Dans ce cas... il te manque un champ pour faire le lien entre une personne et un classeur.
Si tu as une liaison 1 personne -> 1 classeur il faut dans ce cas ajouter, dans ta table cdc_personnes un champ 'id_classeur'
Pourrais tu lister TOUTES les tables de ta BDD et indiquer les relations qu'il y a entre chacune d'elles ?
On sait déjà qu'un cdc_personnes est lié à 1 cdc_classeur
Donc pour ces deux tables on devrait avoir :
cdc_personnes
cdc_classeurs
Et la table cdc_adherer ? elle sert à quoi ? Elle est liée à quelle autre table ? Quelle cardinalité ( 1:1 1:n n:n ? )
On sait déjà qu'un cdc_personnes est lié à 1 cdc_classeur
Donc pour ces deux tables on devrait avoir :
cdc_personnes
idpers AUTO_INCREMENT nom prenom idclass
cdc_classeurs
idclass AUTO_INCREMENT idpers idpup
Et la table cdc_adherer ? elle sert à quoi ? Elle est liée à quelle autre table ? Quelle cardinalité ( 1:1 1:n n:n ? )
Bonjour,
La table cdc_adherer est une table de relation
Alors cela donnerai donc:
Mais qu'en est-il => 1 classeur à 1 utilisateur ou plusieurs => 1:n
C'est flou pour moi je suis en train de mettre tout ça sur papier pour voir.
La table cdc_adherer est une table de relation
idpers => ID de la personne idpaie =>ID du paiement idclas => ID de la classe annee => Année de cotisation ddebut => Date de début d'adhésion de l'adhérent dfin => Date de démission de l'adhérent montant => Montant annuel payé
Alors cela donnerai donc:
table cdc_personnes idpers AUTO_INCREMENT nom prenom idclass table cdc_pupitre idpup AUTO_INCREMENT pupitre table cdc_classeurs idclass AUTO_INCREMENT idpers idpup
Mais qu'en est-il => 1 classeur à 1 utilisateur ou plusieurs => 1:n
C'est flou pour moi je suis en train de mettre tout ça sur papier pour voir.
Oui cela commence à être moins confus.
Est-il possible au lieu de rajouter un champ dans la table cdc_personnes si je cré en plus une nouvelle table par exemple:
cdc_possession
idpers
idclass
Est-il possible au lieu de rajouter un champ dans la table cdc_personnes si je cré en plus une nouvelle table par exemple:
cdc_possession
idpers
idclass
Si tu veux.
cela te permettra en plus de pouvoir gérer plusieurs classeurs pour une même personne si tu en as besoin.
Par contre, il est recommandé, même si ce n'est pas une obligation, d'avoir un id Autoincrementé dans chaque table.. y compris celle là.
Cela permet d'administrer plus facilement la table lors de delete ou d'update.
(tu le verras si jamais tu essaye de supprimer la ligne via phpmyadmin par exemple )
cela te permettra en plus de pouvoir gérer plusieurs classeurs pour une même personne si tu en as besoin.
Par contre, il est recommandé, même si ce n'est pas une obligation, d'avoir un id Autoincrementé dans chaque table.. y compris celle là.
Cela permet d'administrer plus facilement la table lors de delete ou d'update.
(tu le verras si jamais tu essaye de supprimer la ligne via phpmyadmin par exemple )
Je vais créé mes tables et voir tout cela de façon réel car il y a encore une petite chose qui me chagrine mais je suis pas sur.
je me suis basé sur ce que tu as essayé de nous expliquer.
Donc en partant du principe qu'il peut y avoir 1-->n pupitre par classeur ?
A mois que LE pupitre soit lié à l'utilisateur ?
pourrais tu nous expliquer le lien que tu souhaites avoir entre chaque élément ?
Combien de classeur par Utilisateur ? ( ça tu nous as déjà dit 1 utilisateur est rattaché à 1 classeur )
Combien de Pupitre par classeur ? ( et/ou par utilisateur peut-être ? )
Sinon à quoi sert la table cdc_classeur..... ?
NB: Tous les champs "id" sont de type auto-incrément.
Pas besoin, dans chaque table.. d'indiquer iddequoi
Si tu es dans la table cdc_personne... on se doute que le champ "id" c'est idPers ....
Donc en partant du principe qu'il peut y avoir 1-->n pupitre par classeur ?
A mois que LE pupitre soit lié à l'utilisateur ?
pourrais tu nous expliquer le lien que tu souhaites avoir entre chaque élément ?
Combien de classeur par Utilisateur ? ( ça tu nous as déjà dit 1 utilisateur est rattaché à 1 classeur )
Combien de Pupitre par classeur ? ( et/ou par utilisateur peut-être ? )
Sinon à quoi sert la table cdc_classeur..... ?
NB: Tous les champs "id" sont de type auto-incrément.
Pas besoin, dans chaque table.. d'indiquer iddequoi
Si tu es dans la table cdc_personne... on se doute que le champ "id" c'est idPers ....
Relation entre éléments:
1 => n utilisateur par classeur
1 => 1 pupitre par classeur
Un classeur à 1 ou plusieurs utilisateurs
Un classeur a un pupitre
Un pupitre à un ou plusieurs classeur
Exemple de tables mais c'est simplement pour te donner une idée sur les relations des IDs qu'il faudrait.
Mais à propos de la tables cdc_classeurs il manque une table de relation.
C'est pour te montrer dans la table cdc_classeurs que les idpers ont le même pupitre et que idpers1 et idpers2 se partage le même classeur et idpers3 il a un classeur individuel.
La structure que tu a faites me semble peut-être cohérente mais je n'en suis pas sur. Par contre dans la table cdc_adherer il y a déjà idpers.
Excuse moi ça c'est peut-être pas très clair mes explications mais je ne peux pas faire mieux.
1 => n utilisateur par classeur
1 => 1 pupitre par classeur
Un classeur à 1 ou plusieurs utilisateurs
Un classeur a un pupitre
Un pupitre à un ou plusieurs classeur
Exemple de tables mais c'est simplement pour te donner une idée sur les relations des IDs qu'il faudrait.
Mais à propos de la tables cdc_classeurs il manque une table de relation.
C'est pour te montrer dans la table cdc_classeurs que les idpers ont le même pupitre et que idpers1 et idpers2 se partage le même classeur et idpers3 il a un classeur individuel.
La structure que tu a faites me semble peut-être cohérente mais je n'en suis pas sur. Par contre dans la table cdc_adherer il y a déjà idpers.
Excuse moi ça c'est peut-être pas très clair mes explications mais je ne peux pas faire mieux.
cdc_personnes idpers nom 1 pierre 2 paul 3 jacques cdc_pupitres id pupitre 1 guitare 2 piano cdc_classeurs id idpers idpup 1 1 2 1 2 2 2 3 2