2015-03-09 4 views
1

Я пытаюсь найти какое-то решение проблемы, когда я должен предоставить пользователю динамические выпадающие списки в зависимости от параметров, которые они выбирают.Динамические множественные выпадающие варианты выбора из MySQL с использованием PHP

В настоящее время у меня есть 3 таблицы, которые нормализуются как таковые.

Tables

В настоящее время это хорошо работает с моей HTML выбрать элементы, где, если я выбрать John Doe Я хотел бы получить Пол, Кевин и Дик, как мои вторые варианты, и если бы я должен был выбрать Кевин Я хотел бы получить Drake и Kanye как третий вариант.

Моя проблема заключается в том, что я не хочу создавать таблицы, так как я хотел бы добавить в свое приложение еще несколько слоев staff_level.

Как я могу подойти к этому и иметь полностью динамическую структуру таблиц с использованием PHP и MySQL?

Спасибо, что нашли время, чтобы прочитать это.

+0

Какова ситуация, когда эти многоуровневые таблицы используются? Каковы отношения между Джоном Джонсом и Полом Пете и Кевином Майором? –

+0

Привет @AaronD таблицы, которые я предусмотрел, подчеркивают связь между именами? какие дополнительные данные о взаимоотношениях вы ищете? – BaconJuice

+0

Я буду перефразировать - почему вы так его разработали? Какие отношения между этими именами существуют между людьми? Я думаю, что другой дизайн может быть более уместным, просто потому, что я с трудом представляю сценарий, в котором есть дерево таких отношений (кроме, возможно, семейного дерева). Таблица отношений может быть лучше подходит. –

ответ

1

Вам нужна таблица ассоциаций между людьми. Поместите их все в одной таблице с уникальными идентификаторами, как так:

Table Staff 
id | Name  | <Other fields> 
----+-------------+---------- 
1 | John Doe | 
2 | Sam Smith | 
3 | John Johns | 
4 | Paul Pete | 
5 | Kevin Mayor | 
6 | Dick Ross | 
     ... 

Тогда таблица объединение имени, что вам нравится - может быть StaffHeirarchy:

Table StaffRelationships 
id | ManagerId | SubordinateId 
---+-----------+-------------- 
* | Null  | 1      # Has no manager 
* | 2   | 6      # Dick Ross is subordinate to Sam Smith 

Эта таблица должна иметь поле идентификатора для уникальных ключей, но вам не нужно заботиться о том, что это такое (он не используется как внешний ключ, поскольку поле Staff.id), поэтому я поставил * - на самом деле это был бы некоторый целочисленный id.

Я не видел ваш PHP для вытаскивания значений из базы данных, но это в основном то же самое - запросите фильтрацию таблицы ассоциаций для идентификатора менеджера, который вы ищете, и вы получите идентификаторы подчиненных (который вы можете JOIN в штатном расписании, чтобы получить имена).

+0

Отличный смысл! Большое спасибо. – BaconJuice

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