sql >> データベース >  >> RDS >> Mysql

データベース値を使用してforeachループにテーブルを表示します

    試してみてください

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

    更新

    DBからデータを取得するために使用したアプローチを変更することを考えました。このコードを試してみてください(コードはテストされていません。メモ帳を使用して入力してください)。少し修正する必要があるかもしれません...)

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

    ここでは、最初にカテゴリをフェッチし、ループ内で最初のカテゴリ名を印刷し、ループ内で現在のカテゴリに適切なサブジェクトをフェッチしてから、次のカテゴリを印刷します...




    1. mysql auto_increment by 5?

    2. 引用符で囲まれたものを除いて、文字列での区切り文字の出現をカウントする方法

    3. ストアドプロシージャでカーソルを使用して行をループするMySQL

    4. djangoプロジェクトのpostgreSQLデータベースのセットアップに関する問題