Это «мета» вопрос, который я задаю, чтобы лучше понять некоторые крепкие орешки, которые мне пришлось сломать в последнее время.Даже если вы не получите именно то, к чему я здесь обращаюсь, или слишком много текста для прочтения, любой практический вклад приветствуется и, вероятно, полезен.
Предположим, у вас есть веб-сайт, который должен использовать данныеэто хранится в нескольких таблицах базы данных.Эти данные нужно будет повторять множеством способов, использовать для расчетов в разных местах и т. Д.
Таким образом, на странице, которая должна отображать коллекцию проектов (из одной таблицы БД), каждый из которых содержитколлекция категорий (из другой таблицы БД), каждая из которых содержит 1 или более элементов (из другой таблицы БД), каков наилучший способ сбора данных, их упорядочения и повторения для отображения?
Поскольку каждыйВ проекте может быть 1 или несколько категорий, и в каждой категории может быть один или несколько элементов (но элементы уникальны для определенной категории). Каков наилучший способ упорядочить полученную кучу?
Моя цель в следующем примере:создать таблицу проектов, в которой каждый проект имеет связанные категории, перечисленные с ним, и каждая категория имеет связанные элементы, перечисленные с ним, но мне также нужно объединить данные из таблицы элементов, чтобы отобразить рядом с именем проекта
A Project Name (43 items and 2 of them have errors!)
- category 1
- item 1
- item 2
- category 2
- item 1
Another Project Name (12 items and no errors)
- category 1
- item 1
- category 2
- item 1
Что я сделал, так это извлек данные из каждой таблицы и вставилт в переменной.Дая мне что-то вроде:
var $projects = array("id" => 1, "proj_id" => 1, "name" => "aname");
var $categories = array("id" => 1, "cat_id" => 1234, "proj_id" => 1, "cat_name" => "acatname");
var $items = array("id" => 1, "item_id" => 1234, "location" => "katmandu");
Затем я прошел через переменные во вложенных циклах foreach (), создавая строки, которые мне нужно было отобразить.
Я столкнулся с трудностями с этим как foreach () цикл работал бы хорошо при построении чего-то на 2 уровня глубиной (связывая категории с проектами), но он не работал должным образом, когда углубился на три уровня ( INCEPTION .. ха, не смог устоять) и попытался добавитьэлементы для каждой категории (вместо этого добавление всех их к одному элементу ... первый или последний, я не помню, какой).Кроме того, когда что-то присутствовало на третьем уровне массива, как бы вы сложили эти данные, а затем вывели их для использования обратно на верхний уровень строящегося массива?
Полагаю, я мог быЯ создал мега SQL-запрос, который сделал все для меня и поместил все в один массив, избавив меня от путаницы в цикле, сгладив его, но ... ну, вот почему я здесь вас всех спрашиваю.
Итак, я полагаю, что суть этого вопроса: как вы справляетесь с получением большого количества данных из разных таблиц, а затем объединяете их для отображения и использования в расчетах?