Ajoutez un tableau de catégories, afin de pouvoir en garder la trace. Puis, ajoutez une table color_category afin d'avoir un many-to-many. Comme ça :
CategoryID Category
----------------------
1 primary
2 dark
ColorID CategoryID
---------------------
1 1
1 2
2 2
ColorID Color
-----------------
1 red
2 brown
Ensuite, ayez un tableau UserPalette qui ressemble à ceci :
UserID ColorID
-----------------
1 3
1 4
Ainsi, lorsqu'un utilisateur sélectionne dark
vous devez exécuter cette requête :
insert into userpalette
select
$userId as userid,
c.colorid
from
category cat
inner join color_category cc on
cat.categoryid = cc.categoryid
inner join colors c on
cat.colorid = c.colorid
where
cat.category = '$category'
Pour récupérer les couleurs d'un utilisateur, vous devez faire ceci :
select
c.color
from
userpalette up
inner join colors c on
up.colorid = c.colorid
where
up.userid = $userid
Si vous avez juste un nom d'utilisateur :
select
*
from
users u
inner join userpalette up on
u.userid = up.userid
inner join colors c on
up.colorid = c.colorid
where
u.username = '$username'
Évidemment, assurez-vous de tout faire passer par mysql_real_escape_string()
avant de le mettre dans une requête SQL. Sinon, vous vous exposez à des attaques par injection SQL.