我使用的是教师注册表和学生注册表。每个都有十个字段,名字,姓氏,用户名,密码等相似,而部门(教师有7个,学生有3个)和电子邮件ID(教师有不同的域名扩展,学生不同)是不同的。我使用两张桌子,一张用于教师,一张用于学生。
现在,我知道我可以使用一个登录表单,使用JOIN属性查询这两个表并使它们登录。但我想知道这种方法是否有效,因为正在使用两个表。
或者这种方法效率更高:在注册表格中,我选择了一个单选按钮来选择教师或学生,并根据所选择的其余字段进行更改,即,如果我选择了教师,则有7个部门出现或者如果我选择学生只有3人出现。通过这种方式,我只能使用一个表,至少我猜是这样。
或者另一种可能性是我使用两个表但只有两个登录表单,一个用于教师,一个用于学生,我知道这是一个简单的方法,但作为一个Comp Sci学生我想选择有效的方法。
P.S:教师的角色将与网站上的学生完全不同。教师和学生将会有很多活动,他们完全不同。维持一张桌子是不错的选择?答案 0 :(得分:1)
我会说教师和学生都是用户,但教师拥有更高的权限,就像管理员一样。
因此,我只会为users
使用1个表,并且有一个属性列来指示它们的类型。
登录后,您可以向页面返回一个类型变量,以确定要显示的字段。
你甚至不需要一个单选按钮来指示类型。只需要一个用户名和密码字段。然后,一旦对它们进行身份验证,请检索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";
}
?>