Base données [Résolu]

Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009
- - Dernière réponse : cs_Aaron
Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009
- 20 janv. 2006 à 13:23
Bonjour, j'aimerais avoir un conseil !

Je souhaiterais savoir s'il vaut mieux enregistrer x fois la même valeur dans une base de données ou utiliser un 'switch', je m'explique :

Les membres de mon site peuvent renseigner leur profil via un combobox (liste déroulante de formulaire) contenant : Rouge, bleu, noir, vert, gris.

La valeur de ce combobox est ensuite enregistré dans ma BDD mySQL sous forme :

<valeur du combobox>

J'hésite à stocker l'une des valeurs (Rouge, bleu, noir, vert, gris) dans la colonne <valeur du combobox> ou bien un smallInt et lors de l'affichage du profil procéder comme ceci :

Switch(<valeur du combobox>){
case1: echo "Rouge"; break;
case2: ....}
Etc.

A noter que j'ai une bonne dizaine d'autre combobox de ce style.
Je ne sais pas à quoi cela sert mais le type de valeur ENUM dans la DBB peut-elle gérer des données en "packet" du style : 1, 2, 4, 3 ? Dans ce cas je peut les récupérer et assigner les différentes valeurs avec une boucle.. Non?

Merci de votre aide!
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
10844
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17
3
Merci
Par ontre j'avais pas pigé que chaque utilisateur pouvaity avoir plusieurs couleurs.
Dans ce cas il faut ujne 3ème table, et les 2 autres sont :

USERS
user_id
user_pseudo

COLORS
color_id
color_libelle

LNK_USR_CL
color_id
user_id
reprenons Paul, (id 1) et les couleurs de la table COLORS. Si Paul a les couleurs bleus (id 2) et rouge (id = 1), on a dans LNK_USR_CL :


1 1


2 1


c'est à dire :


rouge Paul


bleu Paul


Ta requête pour avoir ttes les couleurs de Paul :


$sQuery = '
SELECT
cl.color_libelle
FROM
colors cl,
users usr,
lnk_usr_cl lnk
WHERE
(lnk.user_id = usr.user_id) AND
(lnk.color_id = cl.color_id) AND
(usr.user_id = 1)';

$rRequete = mysql_query ($sQuery);
while ($sRes = mysql_fetch_assoc ($rRequete)) {
echo $sres['color_libelle']; // rouge, puis bleu.
}

Dire « Merci » 3

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

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

Commenter la réponse de malalam
Messages postés
1218
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
4
0
Merci
salut
perso je stockerais la valeur dans la bd (Rouge, bleu, noir, vert, gris)
ça me parait plus simple
Commenter la réponse de sidf
Messages postés
10844
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17
0
Merci
Hello,

il y a 6 règles de bases, lorsqu'on bosse avec une bdd relationnelle. Celle-ci en est une :-) (voir Merise).

USERS
user_id
user_pseudo
color_id

COLORS
color_id
color_libelle

exemple de tables :

COLORS:
1 rouge
2 bleu
3 noir

USERS :
1 Paul 2
2 Pierre 3
3 Sophie 2
4 Bidule 1
etc...
Commenter la réponse de malalam
Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009
0
Merci
Je comprend pas bien...

USERS
user_id
user_pseudo
color_id
...
statut_id (30 colonnes comme Color_id)

COLORS
color_id
color_libelle


Je vais devoir faire 30 requêtes ?
Recupérer les données (int) de l'user avec un Select * From Users Where user_pseudo=$pseudo
Et puis une fois que j'aurais les valeurs ? Exemple :
USERS
1 Paul 2 4 5 6 7 3 2 1
Je vais devoir faire x requetes pour savoir à quoi correspondent ces valeurs (Du style 2=Bleu pour ce qui conçerne color_id) Non?
Commenter la réponse de cs_Aaron
Messages postés
10844
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17
0
Merci
Non. Tu veux la couleur de Paul ?
$sQuery 'SELECT cl.color_libelle FROM colors cl, users usr WHERE (usr.user_id 1) AND (usr.color_id = cl.color_id)';

$rRequete = mysql_query ($sQuery);
$sRes = mysql_fetch_assoc ($rRequete);
echo $sres['color_libelle']; // bleu
Commenter la réponse de malalam
Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009
0
Merci
Compris !
Merci ^^
Commenter la réponse de cs_Aaron