用户可以搜索颜色并将其添加到调色板中。
因此,如果他们写蓝色,蓝色将显示,他们可以添加它。
等等,红色,黄色.......
但是我想,如果他们选择“深色”,那么应该添加灰黑色和棕色。
今天我这样做
if($color==darkcolor)
insert black and grey and brown...
有没有更简单的方法来实现这一目标。我有几百个属性我想添加,坐着写php,否则字符串耗费时间很长......
答案 0 :(得分:1)
这里没有特定的php / mysql问题。
最好的办法是将属性添加到颜色数据库
e.g。
Name Attribute
Green Natural, Light
Brown Natural, Dark
你可以简单地SELECT Name FROM Colours WHERE Attribute LIKE <Query String>
如果属性类别数量有限,那么您可以通过添加“Lightness”,“Theme”等列名来进一步专门化表格。
答案 1 :(得分:1)
我建立了一个包含几张桌子的数据库。
colours
id
name
attributes
id
name
colour_attributes
colour_id
attribute_id
这样,您可以跟踪无限量的颜色和属性,并通过关联表colour_attributes
将属性与颜色联系起来。
答案 2 :(得分:1)
添加类别表,以便您可以跟踪它们。然后,添加一个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注入攻击。