0

我使用的是教师注册表和学生注册表。每个字段有十个字段,名字、姓氏、用户名、密码等相似,而部门(教师有 7 个,学生有 3 个)和电子邮件 ID(教师有不同的域扩展名,学生不同)是不同的。我正在使用两张桌子,一张给老师,一张给学生。

现在,我知道我可以使用一个登录表单,使用 JOIN 属性查询这两个表并让它们登录。但是我想知道这种方法是否有效,因为正在使用两个表。

或者这种方法更有效:在注册表格中,我放了一个单选按钮来选择教师或学生,并根据选择的其余字段更改,即,如果我选择教师,则显示 7 个部门,或者如果我只选择学生其中3人出现。这样,我只能使用一张桌子,至少我猜是这样。

或者另一种可能性是我使用两个表但两个登录表单,一个用于教师,一个用于学生,我知道这是最简单的方法,但作为 Comp Sci 学生,我想选择所有有效的方法。

PS:老师的角色将与站点中的学生完全不同。并且会有很多老师和学生的活动,他们是完全不同的。保持一张桌子是一个不错的选择吗?

4

1 回答 1

1

我想说教师和学生都是用户,但教师拥有更高的权限,就像管理员一样。

因此,我只会使用 1 个表users并有一个属性列来指示它们是什么类型。

一旦他们登录,您可以将类型变量返回到您的页面以确定要显示的字段。

而且您甚至不需要单选按钮来指示类型。只要有一个用户名和密码字段。然后,一旦它们通过身份验证,检索类型属性并相应地加载您的表单。

您的 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 回答