PHP / MySQL отображает продукт и категории в сетке сравнения или таблице

У меня есть две таблицы БД следующим образом:

Таблица категорий

--- ID --- Name -- GroupID
1      Cat 1     0
2      Cat 2     0
3      Side 1    1
4      Side 2    1

Таблица продуктов

--- ID --- Name – CatID – CatID2
1       P1      1      3
2       P2      1      4
3       P4      2      3
4       P3      2      4
5       P5      1      4

На основании приведенной выше таблицы я бы вывел в следующем формате:

  • Все категории с GroupID 0 должны быть именами столбцов (заголовок таблицы)
  • Все категории с GroupID 1 первый столбец / строка
  • Продукт появляется в каждом ряду в зависимости от группы 0 и 1

Образец вывода:

        Cat 1   Cat 2
Side 1  P1      P4
Side 2  P2,P5   P3

Я не уверен, что структура таблицы неправильная, я могу получить список категорий и продуктов, но я не уверен, как вывести приведенную выше таблицу.

1

Решение

здесь решение, которое я придумал, я упустил базу данных, чтобы сделать ее проще.

Данные это жестко закодированные массивы:

$cats = array(
array(
'id' => 1,
'name' => 'cat 1 '
),array(
'id' => 2,
'name' => 'cat 2 '
),array(
'id' => 3,
'name' => 'cat 3 '
)
);$side = array(
array(
'id' => 5,
'name' => 'side 1 '
),array(
'id' => 4,
'name' => 'side 2 '
),array(
'id' => 6,
'name' => 'side 3 '
)
);$products = array(
array(
'id' => 5,
'name' => 'p1',
'cat' => 1,
'side' => 6,
),array(
'id' => 5,
'name' => 'p2',
'cat' => 1,
'side' => 6,
),array(
'id' => 6,
'name' => 'p3',
'cat' => 2,
'side' => 5,
),array(
'id' => 7,
'name' => 'p4',
'cat' => 2,
'side' => 6,
)

);

Затем эта функция используется для поиска как в cat, так и в боковых массивах и проверки соответствия продукта.

function search_p($array, $key, $value, $key2, $value2)
{
$results = array();

if (is_array($array) ) {
if (isset($array[$key]) && $array[$key] == $value && isset($array[$key2]) && $array[$key2] == $value2) {
$results[] = $array;
}

foreach ($array as $subarray) {
$results = array_merge($results, search_p($subarray, $key, $value,$key2, $value2));
}

}

return $results;
}

Чтобы вывести таблицу, я сделал следующее:

<table>
<tr>
<th></th>
<?php
foreach($cats  AS  $c){
echo '<th>'.$c['name'].'</th>';
}
?>
</tr>

<?php
foreach($side  AS  $a){
echo '<tr><td>'.$a['name'].'</td>';
foreach($cats  AS  $c){
echo '<td>';
$p = search_p($products, 'cat', $c['id'], 'side', $a['id']);
foreach($p  AS  $pc){
echo '-- '.$pc['name'].' -- ';
}

echo '</td>';
}
echo '</tr>';
}
?>
</table>
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector