sql >> Databáze >  >> RDS >> Mysql

Zobrazte tabulku ve smyčce foreach s databázovými hodnotami

Zkuste

...
//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 -->";
}
...

Aktualizovat

Myslel jsem na změnu přístupu, který jste použili k načítání dat z DB. Vyzkoušejte tento kód (kód není testován, zadejte jej pomocí poznámkového bloku), takže jej možná budete muset trochu opravit...)

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

}

Zde nejprve načteme kategorie, ve smyčce vytiskneme nejprve název kategorie a v rámci smyčky načteme příslušné předměty pro aktuální kategorii, poté vytiskneme další a tak dále...




  1. Přidejte hodiny k časové hodnotě v PostgreSQL

  2. Hromadné vkládání MySQL z datových souborů CSV

  3. Jak funguje funkce LEFT() v MySQL

  4. PŘIPOJTE SE k problému s výkonem MySQL