Member 13907974 Ответов: 0

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}

0 Ответов