MEttre des id à la chain dans un chmap comment les trier ?

Résolu
bossfoot Messages postés 13 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 7 avril 2009 - 7 avril 2009 à 02:59
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,
++

4 réponses

ed73 Messages postés 276 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 15 avril 2013 2
7 avril 2009 à 19:24
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'.
3
ed73 Messages postés 276 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 15 avril 2013 2
7 avril 2009 à 09:58
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'
0
bossfoot Messages postés 13 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 7 avril 2009
7 avril 2009 à 17:11
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
0
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
Ça à l'air de marcher correctement en local xD

merci beaucoup ^^
0
Rejoignez-nous