Как получить записи в виде дерева из mysql / php - PullRequest
0 голосов
/ 02 июня 2011

Я должен создать древовидное представление из записей моей таблицы ниже

id user_id friend_id property_id
1    123       321          1
2    123       456          1
3    456       909          1
4    909       222          1

У меня есть user_id i.e 123 и property_id i.e 1 Мне нужно знать, как создать дерево с друзьями, с которыми я делюсь этим свойством, а затем с пользователями, с которыми мои друзья делятся этим идентификатором.

1 Ответ

1 голос
/ 02 июня 2011

Хорошо, поскольку есть несколько шагов, с которых я начну на высоком уровне. Если вам нужна помощь с любым из них, спросите еще раз!

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

Затем для каждого из этих пользователей начните опрашивать всех своих детей. Для этого определите функцию, которая получает все дочерние элементы пользователя и которая рекурсивно вызывает себя для дочерних элементов дочернего элемента, который она находит.

Это довольно абстрактно, потому что вопрос в том, что вы хотите делать с этой структурой. Это зависит от последней части, вашего уровня представления. Об этом я знаю меньше всего; может быть фреймворк, который поможет вам визуализировать деревья в PHP, но я не знаю. Обычно будет какая-то структура объекта со свойствами макета и дочерними объектами; создайте эти свойства в своей рекурсивной функции с последнего шага.

Как побочный узел, неясно, является ли полученная вами структура данных фактически деревом. Если вы A, у вас есть друзья B и C, и C также является другом B, B будет отображаться как ваш друг (на уровне 2 дерева) и как друг C (на уровне 3). Вам придется проверить, какое поведение вы предпочитаете в этом месте, и, возможно, придется, например, игнорировать C во второй раз, когда вы столкнетесь с ним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...