Prøv
...
//Detect change in category
if($catID != $categoryId)
{
echo "<h3>Category 01: <span>{$category}</span><span></span></h3>";
echo "<div class='container'>";
echo "<table>";
if (is_array($subjects))
{
foreach ($subjects as $sub) {
echo "<tr>";
echo "<td>";
echo $sub;
echo "</td>";
echo "</tr>";
}
}
else
{
echo "<tr><td>No subjects to display...<td/><tr/>";
}
echo "</table>";
echo "</div> <!-- End .container DIV -->";
}
...
Opdater
Tænkte på at ændre den tilgang du har brugt til at hente data fra DB. Prøv denne kode (koden er ikke testet, skrev den ved hjælp af notesblok), så du skal muligvis rette den lidt...)
$categoryIds = implode(',', $_SESSION['category']);
$q = "SELECT c. category_id AS ci, c.category_name AS cn
FROM category AS c
WHERE c.category_id IN ($categoryIds)";
$r = mysqli_query( $dbc, $q) ;
$catID = false;
$max_columns = 2;
while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC))
{
$categoryId = $row['ci'];
$category = $row['cn'];
echo '<div>';
echo "<h3>Category 01: <span>{$category}</span><span></span></h3>\n";
$qs = "SELECT s.subject_name AS sn, s.subject_id AS si
FROM category_subjects cs
INNER JOIN subjects AS s ON s.subject_id = cs.subject_id
WHERE cs.category_id = \'' . $categoryId . '\'";
$rs = mysqli_query( $dbc, $qs) ;
echo "<h3>Category 01: <span>{$category}</span><span></span></h3>";
echo "<div class='container'>";
echo "<table>";
while ($rows = mysqli_fetch_array($rs, MYSQLI_ASSOC))
{
$sub = $rows['sn'];
echo "<tr>";
echo "<td>";
echo $sub;
echo "</td>";
echo "</tr>";
}
echo "</table>";
echo "</div> <!-- End .container DIV -->";
echo '</div>';
}
I dette henter vi først kategorier, går i en løkke udskriv først Kategorinavn og i løkken henter vi passende emner til den aktuelle kategori, så udskriver vi den næste og så videre...