Skip to content Skip to sidebar Skip to footer

Display A Table In A Foreach Loop With Database Values

I am trying to display a table in a while loop.. But I have got stuck there for 2 days. anyone can help me to do this? Now I will explain actually what I am trying to do here.. Th

Solution 1:

Try

...
//Detect change in category
if($catID != $categoryId) 
{
    echo "<h3>Category 01: <span>{$category}</span><span></span></h3>";
    echo "<divclass='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 -->";
}
...

Update

Thought of changing the approach you've used to retrieve the data from DB. Try this code (code is not tested, typed it using notepad) so you may need to fix it a bit...)

$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>';          

}

In this we fetch Categories first, go in a loop print first Category name and within the loop we fetch appropriate Subjects for the current category, then print the next one and so on...

Post a Comment for "Display A Table In A Foreach Loop With Database Values"