MEttre des id à la chain dans un chmap comment les trier ? [Résolu]

Messages postés
13
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
7 avril 2009
- - Dernière réponse : bossfoot
Messages postés
13
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
7 avril 2009
- 7 avril 2009 à 20:51
Bonjour à tous et toutes,

Je me retrouve confronté à un problèmes qui m'ennuie assez vu que je n'ai pas réussit à trouver une réponse par mes propres moyens ^^

Donc voilà en gros mon soucis :
Je compte faire un jeu php pour m'améliorez dans ce langage principalement ^^
Je souhaiterai faire une table du style

| id | nom_perso | objets |

Mais le champ objet contiendrait la liste des objets que possède le joueur. Ce champ serait rempli d'id de ma tables objets séparer par une virgule.
| 1 | joueur_test | 1,2,3 |

le numéro 1 correspondrait à un bâton, le 2 a une flute et le 3 a du papier.
Mais je vois pas du tout comment sélectionner tel ou tel objet. Ça serait pour faire apparaître les objet dans linventaire du joueur

J'espère que j'ai été clair ^^

Merci de votre attention et de vos éventuelles réponses,
++
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
276
Date d'inscription
lundi 8 septembre 2008
Statut
Membre
Dernière intervention
15 avril 2013
2
3
Merci
Bonsoir,

Ne pars pas du principe que ta table est trié par id_joueur, ce n'est pas certain. Pour avoir les données triées par joueur la requête devient :

select Joueur.id_joueur, Joueur.nom_perso, Objet.nom_objet from Joueur,Objet,Joueur_Objet
where Joueur.idjoueur = Joueur_Objet.idjoueur
and Objet.idobjet = Joueur_Objet.idobjet 
order by Joueur.id_joueur

Cette requête te donne tous les objets de tous les joueurs triés par identifiant de joueur.

 J'avais mis and Joueur.nom_perso = 'toto' juste comme exemple, ça permet de retrouver uniquement les objets appartenant au joueur 'toto'.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 206 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ed73
Messages postés
276
Date d'inscription
lundi 8 septembre 2008
Statut
Membre
Dernière intervention
15 avril 2013
2
0
Merci
Salut,

Ton modèle de BDD est incorrect, il ne respecte pas la première forme normale (atomicité des informations).

Il te faut 3 tables :

Joueur : | idjoueur | nom_perso |
Objet :  | idobjet | nom_objet |
Joueur_Objet : | idjoueur | idobjet |

ainsi chaque joueur peut posséder plusieurs objets et chaque objet peut être possédé par plusieurs joueurs. Il est alors très simple de sconnaitre l'inventaire du joueur, par exemple pour le joueur 'toto' :

select nom_perso,nom_objet from Joueur,Objet,Joueur_Objet
where Joueur.idjoueur = Joueur_Objet.idjoueur
and Objet.idobjet = Joueur_Objet.idobjet 
and Joueur.nom_perso = 'toto'
Commenter la réponse de ed73
Messages postés
13
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
7 avril 2009
0
Merci
Bonjour,

ok en fait j'avais besoin d'une table de liaison ^^
Je pense avoir tout compris sauf le point ci-dessous
Mais je comprends pas pourquoi il faut  rajouter and Joueur.nom_perso = 'toto' vu qu'on a deja trier par l'id_joueur.

pour le moment merci tu m'as bien débloqué ^^

Cordialement
Commenter la réponse de bossfoot
Messages postés
13
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
7 avril 2009
0
Merci
Ça à l'air de marcher correctement en local xD

merci beaucoup ^^
Commenter la réponse de bossfoot