Bij de producten in mijn webwinkel komen straks ook de product specificaties te staan. Nu heb ik dus ook hierop mijn databasemodel aangepast. Dat is nu als volgt:
+---------------------------------------------------+
| CATEGORIEEN |
+--------------------------------+------------------+
|id |naam |parent |
+--------------+-----------------+------------------+
|1 |Audio |0 |
|2 |Losse systemen |1 |
|3 |Speakers |1 |
|4 |Overige |1 |
|5 |Cd-spelers |2 |
|6 |Dvd-spelers |2 |
|7 |Mp3-spelers |4 |
+--------------+-----------------+------------------+
+-----------------------------------------------+
| PRODUCTEN |
+--------------------------------+--------------+
|id |naam |categorie_id |
+--------------+-----------------+--------------+
|1 |ipod-nano-8gb |7 |
|2 |nwx 2gb |7 |
+--------------+-----------------+--------------+
+----------------------------------------------------------------+
| EIGENSCHAPPEN |
+--------------------------------+------------------+------------+
|id |naam |parent |categorie_id|
+--------------+-----------------+------------------+------------+
|1 |Algemeen |0 |7 |
|2 |Type opslag |1 |7 |
|3 |Opslagcapaciteit |1 |7 |
+--------------+-----------------+------------------+------------+
+----------------------------------------------------------------+
| SPECIFICATIES |
+--------------------------------+------------------+------------+
|id |waarde |eigenschap_id |product_id |
+--------------+-----------------+------------------+------------+
|1 |Flash geheuegen |2 |1 |
|2 |8GB |3 |1 |
+--------------+-----------------+------------------+------------+
Nu vraag ik me echter af hoe ik deze specificaties het beste bij een product kan opvragen. Op dit moment doe ik dit als volgt:
<?php
// Ik haal hier eerst de 'hoofdeigenschappen' van de specificaties op. Hieronder vallen uiteindelijk de eigenschappen. Deze zijn alleen maar om de specificaties goed te verdelen
$query_eigenschappen = "SELECT id, naam FROM eigenschap WHERE parent = '0' AND categorie_id = '" .$row_product['subsubcat_id']. "'";
$result_eigenschappen = mysql_query($query_eigenschappen) or die (mysql_error());
while ($row_eigenschappen = mysql_fetch_assoc($result_eigenschappen))
{
echo '<div class="vak">';
echo '<table width="100%" border="0" cellspacing="0" cellpadding="0" class="informatie">';
echo '<tr>';
echo '<th colspan="2">' .$row_eigenschappen['naam']. '</th>' .PHP_EOL;
echo '</tr>';
// Hier kijk ik welke eigenschappen/specificaties tot een bepaalde hoofdeigenschap horen en laat deze weergeven.
$query_specificaties = "SELECT e.naam, s.waarde FROM specificatie s LEFT JOIN eigenschap e ON s.eigenschap_id = e.id WHERE e.parent = '" .$row_eigenschappen['id']. "' AND product_id = '" .$row_product['id']. "' ORDER BY naam ASC";
$result_specificaties = mysql_query($query_specificaties) or die (mysql_error());
while ($row_specificaties = mysql_fetch_assoc($result_specificaties))
{
echo '<tr>';
echo '<td class="a">' .$row_specificaties['naam']. '</td>';
echo '<td class="b">' .$row_specificaties['waarde']. '</td>';
echo '</tr>' .PHP_EOL;
}
echo '</table>';
echo '</div>';
}
?>
Dit werkt gewoon goed zolang er aan een product specificaties zijn toegewezen. Zodra een product echter nog geen specificaties heeft, worden alleen de hoofdcategorieen van de specificaties weergegeven. Ik wil echter ook dat de eigenschappen die onder de hoofdcategorieen vallen getoond worden. Hoe kan ik dit het beste doen volgens jullie? Vinden jullie overigens ook dat het datamodel goed is of kan het beter anders?
576 views