<?php
$output = array(
1 => array(
'name' => 'Speelgoed',
'description' => 'In deze category zie je allemaal speelgoed',
'products' => array(
1 => array(
'productname' => 'Lego',
'price' => '12,95',
),
),
),
2 => array(
'name' => 'Speelgoed',
'description' => 'In deze category zie je allemaal speelgoed',
'products' => array(
2 => array(
'productname' => 'Puzzel 1000 stukjes',
'price' => '19,95',
),
),
),
3 => array(
'name' => 'Huishouden',
'description' => 'In deze category vind je alles voor het huishouden',
'products' => array(
1 => array(
'productname' => 'swiffer',
'price' => '12,95',
),
),
),
4 => array(
'name' => 'Huishouden',
'description' => 'In deze category vind je alles voor het huishouden',
'products' => array(
2 => array(
'productname' => 'Stofzuiger',
'price' => '12,95',
),
),
),
);
foreach($output as $categoryId => $category){
echo '<h1>'.$category['name'].'</h1>';
echo '<div>'.$category['description'].'</div></br>';
foreach($category['products'] as $productId => $product){
echo '<div>'.$product['productname'].'</div></br>';
echo '<div>'.$product['price'].'</div></br>';
}
}
?>
OK dit werkt tot zover maar nu zit ik nog met één probleem:
De categorienaam en de beschrijving mogen maar een keer vertoont worden, zoals het nu werkt worden deze bij elk product getoond.
Uiteraard, een alternatief is on-the-fly bepalen of er een nieuwe categorie gestart is, dan hoef je niet twee keer een loop uit te voeren (een voor het bouwen van het array tijdens het uitlezen van de resultaten en een voor het doorlopen van dit array), maar kun je in 1x door de resultaten.
Bijvoorbeeld als volgt:
<?php
$currentCategoryId = false;
while ($row = mysqli_fetch_assoc($result)) {
if ($row['catid'] != $currentCategoryId) {
// we zijn van categorie veranderd, dus geef hier een nieuw categorie kopje weer
// ...
// onthoud de nieuwe categorie
$currentCategoryId = $row['catid'];
}
// geef hier de productinformatie weer
// ...
}
?>