Base données

Résolu
cs_Aaron Messages postés 116 Date d'inscription lundi 29 juillet 2002 Statut Membre Dernière intervention 19 janvier 2009 - 20 janv. 2006 à 11:40
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!

6 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
20 janv. 2006 à 13:16
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.
}
3
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
20 janv. 2006 à 12:01
salut
perso je stockerais la valeur dans la bd (Rouge, bleu, noir, vert, gris)
ça me parait plus simple
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
20 janv. 2006 à 12:23
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...
0
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:00
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?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
20 janv. 2006 à 13:10
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
0
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
Compris !
Merci ^^
0
Rejoignez-nous