Bonjour,
Pour commencer félicitation pour ton message, clair, bien écrit et simple à comprendre, c'est pas souvent qu'on tombe sur quelqun qui explique si bien :D
Pour te répondre :
1/
JoueurID | SERIAL |
rempli automatiquement à chaque nouvelle ligne ?
=> Oui, l'identifiant est généralement unique par définition, et doit donc être rempli automatiquement lors d'une insertion. (auto-increment). Il faut également que cette propriété soit définie comme la clef primaire de ta table.
Enreg | DATE | date d'enregistrement
remplie automatiquement
=> Oui, libre à toi de l'écrire dans ta requête SQL d'insertion (le mieux je trouve) ou de calculer en PHP et de l'inclure comme variable dans ta requête d'insertion.
Pseudo | VARCHAR(25) | rempli à l'inscription par le membre
via PHP ?
Mdp | VARCHAR(25) | rempli à l'inscription par le membre
Pays | VARCHAR(25) | rempli à l'inscription par le membre
Email | VARCHAR(25) | rempli à l'inscription par le membre
=> Oui, tout cela sont des variables issue de ton formulaire, qui devront être vérifiées et validée au préalable en PHP (pour éviter que l'utilisateur n'entre des données qui corrompt ta base de données). Ces variables seront passée à ta requête SQL d'insertion.
Avatar | VARCHAR(255) | le membre entre l'url d'une image pour qu'elle puisse s'afficher sur son profil
grâce à PHP ?
=> Encore un oui, si tu as l'url de l'image, lorsque tu affichera ta page, il te suffira de faire une requête SQL pour récupérer les informations d'un utilisateur - dont l'url de l'avatar - et d'y inclure une balise image ayant pour source l'url en question.
Ex :
<img src="$url" ... />
2) Si tu veux que tes utilisateurs puisse choisir une ou plusieurs catégories d'objet, il va falloir que tu les matérialise dans ta base de données, afin d'enregistrer les liens entre ces catégories et tes utilisateurs.
Pour ce faire, tu devra donc créer une table "categorie" qui regroupera certaines informations.
Par exemple :
- identifiant (numerique, auto-increment)
- label (varchar)
Ensuite tu pourra insérer directement tes catégories dans ta base, de manière à pouvoir lister sur une page PHP toutes tes catégories via une requête SQL SELECT sur ta base de donneés (dans cette nouvelle table). Ainsi tu as tes catégories en base et non en dur dans ton code PHP.
Reste ensuite à pouvoir faire un lien entre les catégories et les utilisateur.
Pour ce faire, il te suffit de créer une autre table qui symbolisera ce lien. Tu sais que dans la table utilisateur tu as un identifiant, unique pour chaque utilisateur, et de même dans ta table de catégorie.
Ta nouvelle table s'appellera par exemple 'utilisateur_cat' et regroupera les informations suivantes :
- utilisateur_identifiant (primary key)
- categrorie_identifiant (primary key)
Ces deux idendifiants ne doivent pas être en auto-increment puisque tu les replira toi même par des identifiants déjà connus (celui de l'utilisateur et celui de la catégorie sélectionnée)
Par contre, ces deux identifiants doivent être défini tout deux comme des clés primaires, puisque ce qui fait l'unicité dans cette table, c'est le couple (utilisateur_id,catégorie_id).
On est d'accord qu'un utilisateur ne peux pas sélectionner deux fois la même catégorie.
3) La par contre je te dirai non :)
Le mieux pour faire ce que tu veux c'est de créer une nouvelle table "jeu" qui aura pour propriétés :
- identifiant (int, auto-increment, primary key)
- label (varchar) => nom du jeu
- valeur (int) => contante de division, propre à chaque jeu
Ensuite, la donnée "score" elle n'est pas propre à jeu, mais plutôt au couple 'joueur-jeu'. Tu vois donc que cette données ne peux pas être inclue dans la table 'jeu' même.
Il faut, de la même manière que pour la table qui relie 'utilisateur' à 'categorie', faire une nouvelle table de liaison (que l'on appelle 'relation') qui reliera nos deux tables 'utilisateur' et 'jeu'. Elle se nomera 'score' par exemple et aura les propriétés suivantes :
-
id_score (int, primary key)
- id_utilisateur (int, primary key)
- id_jeu (int, primary key)
- score (int)
De cette manière (sans prendre en compte ce qui est en gras), un joueur pourra n'avoir qu'un seul score / jeu. Si tu veux qu'il puisse en avoir plusieurs, il faudra inclure en plus un notion d'identifiant pour la table 'score' (ajouté en gras ci dessus). Ainsi, le couple (id_score,id_utilisateur,id_jeu) sera toujours unique.