Добавьте таблицу категорий, чтобы вы могли отслеживать их. Затем добавьте таблицу color_category, чтобы иметь много-много. Вот так:
CategoryID Category
----------------------
1 primary
2 dark
ColorID CategoryID
---------------------
1 1
1 2
2 2
ColorID Color
-----------------
1 red
2 brown
Затем создайте таблицу UserPalette, которая выглядит следующим образом:
UserID ColorID
-----------------
1 3
1 4
Таким образом, когда пользователь выбирает dark
, вы выполняете этот запрос:
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'
Чтобы получить цвета пользователя, вы должны сделать это:
select
c.color
from
userpalette up
inner join colors c on
up.colorid = c.colorid
where
up.userid = $userid
Если у вас просто есть имя пользователя:
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'
Очевидно, что перед тем, как поместить его в запрос SQL, убедитесь, что все передано через mysql_real_escape_string()
. В противном случае вы оставляете себя открытым для атак с использованием SQL-инъекций.