0

私は教師用と学生用の登録フォームを使用していました。それぞれに 10 個のフィールドがあり、名、姓、ユーザー名、パスワードなどは類似していますが、部門 (教師は 7、学生は 3) と電子メール ID (教師は異なるドメイン拡張子を持ち、学生は異なる) は異なります。教師用と生徒用の 2 つのテーブルを使用しています。

これで、1 つのログイン フォームを使用し、JOIN プロパティを使用してこれら 2 つのテーブルに対してクエリを実行し、それらをログインさせることができることがわかりました。しかし、2 つのテーブルが使用されているため、この方法が効率的かどうかを知りたいです。

それとも、この方法の方が効率的ですか? reg フォームに、教師または生徒を選択するためのラジオ ボタンを配置し、選択内容に応じて、残りのフィールドが変化します。つまり、教師を選択した場合、7 つの部門が表示されるか、生徒のみを選択した場合です。うち3体登場。このように、少なくとも 1 つのテーブルのみを使用する必要があります。

または別の可能性として、私は 2 つのテーブルを使用していますが、2 つのログイン フォーム (1 つは教師用、もう 1 つは生徒用) です。

PS: 教師の役割は、サイト内の生徒の役割とはまったく異なります。そして、教師と生徒のための多くの活動があり、彼らは完全に異なっています. 1 つのテーブルを維持することは良い賭けでしょうか?

4

1 に答える 1

1

教師も生徒もユーザーですが、教師の方が管理者と同じように、より高い権限を持っています。

そのため、1 つのテーブルのみを使用しusers、それらがどのタイプであるかを示す属性列を持ちます。

ユーザーがログインしたら、タイプ変数をページに返して、表示するフィールドを決定できます。

また、タイプを示すラジオ ボタンも必要ありません。ユーザー名とパスワードのフィールドがあるだけです。次に、それらが認証されたら、type 属性を取得し、それに応じてフォームをロードします。

PHP ページは次のようになります。

<?php
    if(isset($_POST['username'])) {
        $user = $_POST['username'];
        $password = $_POST['password'];
        $mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');

        $query = "SELECT * FROM tblUser WHERE userid=" . $user;

        //Execute SQL
        if($mysqli->query($query) === TRUE) {
            if ($password == $row['password']) {
                $userType = $row['type'];
                $mysqli->close();
                echo $userType;
            else { echo "incorrect password"; }

        } else { echo "SQL execution error"; }
    } else { 
        echo "invalid username string"; 
    }
?>
于 2012-12-13T03:18:01.193 に答える