2009-08-29 2 views
1

Пользователь может выполнять поиск цветов и добавить их в палитре ..Проектирование базы данных для пользователей настроенная групп

Так что, если они пишут синий, синий будет отображаться, и они могут добавить.

так далее с красным, желтым .......

Но я хочу, что если они выбирают «темные цвета», затем серые черные и коричневые должны быть добавлены.

Сегодня I'm делать как этот

if($color==darkcolor) 

insert black and grey and brown... 

Есть ли более простой способ для достижения этой цели. У меня есть сотни атрибутов, которые я хочу добавить и сидеть и писать php, если, иначе строки будут занимать много времени ...

ответ

1

У вас нет конкретной проблемы с php/mysql.

Лучше всего было бы, чтобы добавить атрибуты в цветовой базе

например

Name  Attribute 
Green  Natural, Light 
Brown  Natural, Dark 

вы можете просто SELECT Name FROM Colours WHERE Attribute LIKE <Query String>

Если существует ограниченное количество категорий атрибутов, то вы можете дополнительно специализировать таблицу, добавив имена столбцов, как «Lightness», «Тема» и т.д.

+0

в порядке. тогда это более сложно. Я получил xml-файл с 2100 школьными курсами. Пользователи могут добавить в расписание. Проблема в том, что 3 курса в одном семестре могут быть названы курсом A, B, C. Но для студентов в действительности это называется курсом X, который работает в течение одного семестра, а курс X содержит те a, b, c, но noone когда-либо помнят их имена. Моей мечтой было бы иметь простую форму назад-администратора, чтобы сказать. Сделать coursenname X содержать a, b, c Сделать coursename Z содержит d, e, f – user165445

+0

проблема цвета была просто для иллюстрации проблемы простым способом, извините за мою плохую терминологию – user165445

1

Я бы создал базу данных с несколькими таблицами.

colours 
    id 
    name 

attributes 
    id 
    name 

colour_attributes 
    colour_id 
    attribute_id 

Таким образом, вы можете отслеживать неограниченное количество цветов и атрибутов, а также галстук атрибуты цвета с помощью таблицы ассоциации colour_attributes.

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' 

Очевидно, убедитесь, что вы передадите все через mysql_real_escape_string(), прежде чем положить его в запрос SQL. В противном случае вы оставите себя открытым для атак SQL-инъекций.

Смежные вопросы