Php перечисляет спецификации продуктов и категории внутри цикла
Я столкнулся с исправлением, когда я хочу отображать спецификации продукта, как они отображаются на любых сайтах электронной коммерции. Группа атрибутов здесь должна появиться один раз, включая все атрибуты и значения в ней. Но родительская группа атрибутов появляется несколько раз с атрибутами и значением в ней только один раз. Его реверс отображается здесь с тем, что я ожидал. Чтобы объяснить, я буду максимально ясен, включая мои структуры базы данных, отображаемый вид и коды, которые я пробовал до сих пор. Чтобы быть с вами, я начну сначала со структуры базы данных. Предположим, у меня есть три стола.
группа атрибутов
atg_id atg_name atg_order 1 Memory 2 2 Motherboard 3 3 Processor 4 4 Technical 1
атрибуты
atr_id atr_group atr_name atr_order 1 3 Clock Speed 2 2 3 Description 1 3 3 No. of Cores 3 4 4 Test 1 2 5 1 Test 2 1 6 4 Test 3 1
атрибуты продукта
pat_id pat_product pat_attribute pat_value 1 1 1 2.8Ghz 2 1 2 This is some description 3 1 3 8 4 1 4 Test Value 1 5 1 5 Test value 2
Используя эту информацию, я хочу отобразить такие спецификации (как на сайтах электронной коммерции).
Technical Test 1 Test Value 1 Memory Test 2 Test value 2 Processor Clock Speed 2.8Ghz Description This is some description No. of Cores 8
Но по состоянию на мой текущий код он выглядит следующим образом
Technical Test 1 Test Value 1 Memory Test 2 Test value 2 Processor Clock Speed 2.8Ghz Processor Description This is some description Processor No. of Cores 8
Группа атрибутов процессора появляется трижды с атрибутом и значением в нем один раз вместо того, чтобы появляться один раз со всеми тремя атрибутами вместе.
Что я уже пробовал:
Моя PHP логика до сих пор
// Fetch Product Specifications $specs = $pdo->prepare("SELECT * FROM product_attributes LEFT JOIN attributes ON product_attributes.pat_attribute = attributes.atr_id LEFT JOIN attribute_groups ON attributes.atr_group = attribute_groups.atg_id WHERE pat_product = :id ORDER BY attribute_groups.atg_order ASC"); $specs-> bindValue(':id', $_GET['id']); $specs-> execute(); $smarty->assign('attributes', $specs);
Код шаблона для просмотра
{foreach $attributes as $attribute} <h3>{$attribute.atg_name}</h3> <table class="table table-striped table-hover"> <tr> <td class="col-md-4">{$attribute.atr_name}</td> <td>{$attribute.pat_value}</td> </tr> </table> {/foreach}