0

これを理解する方法がわからない!学校の成績評価図を作成しようとしています。4 列 4 行のテーブルがあります。水平方向のクラスと学生の垂直方向。

列は次のように db から生成されます。

<form action="insert.php" method="post">
<table>
<thead>
    <tr>
        <th>Name</th>
        <?
        $query = "SELECT classname FROM class ORDER BY cname LIMIT 3";

        if ($result = $mysqli->query($query)) {
            while ($row = $result->fetch_assoc()) {
                $classid = $row['classid'];
                echo '<th><div class="verticalText">'.$row['classname'].'</div></th>';
            }
        }
       ?> 
    </tr>
</thead>

さて、これは私が sudent 垂直を取得する方法です:

<tbody>
<?
$query = "SELECT studentid, studentname FROM students ORDER BY studentname";

if ($result = $mysqli->query($query)) {
    while ($row = $result->fetch_assoc()) {

        $studentid = $row['studentid'];

        echo '<tr>';
        echo '<td style="text-align:left;"><a href="#">'.$row["studentname"].'</a></td>';
        echo '<td>';
        echo '<input type="text" name="grade" id="grade" placeholder="--">';
        echo '</td>';   
        echo '</tr>';
    }

    /* free result set */
    $result->free();
}

/* close connection */
$mysqli->close();
?>  
</tbody>
</table>
<input type="submit" value="report" name="submit">
</form>

私の質問はです。insert.php で classid と studentid を結合して、db に挿入すると、各学生がどのクラスとどの学年を取得したかを知るにはどうすればよいですか?

これが何らかの意味をなすことを願っており、どんな答えも楽しみにしています。

4

1 に答える 1

0

良い質問!

まず、クラス テーブルには自動インクリメント ID が必要です。これにより、クラス行へのクリーンな参照を取得できます (名前に基づく参照は悪い習慣と見なされます)。その後、class_id、student_id、および grade の 3 つの列を持つ 3 番目のテーブルを追加する必要があります。 . 必要に応じて、student_id と class_id に組み合わせた主キーを追加して、組み合わせを強制的に一意にすることができます。(私はそれがあなたが望むものだと思います)

データをリンクするこの方法は、リレーショナル データベースと呼ばれます: https://en.wikipedia.org/wiki/Relational_database

そして、このフィールド設定は多対多の関係と呼ばれます: http://en.wikipedia.org/wiki/Many-to-many_(data_model)

// So your relational table will look like:
- student_id (part of primary key and foreign key that points to the student)
- class_id (part of primary key and foreign key that points to the class)
- grade

ここには学ぶべきことがたくさんあります。記事を見て、試してみてください。幸運を!:)

于 2013-05-27T22:36:17.360 に答える