Java Android/MySQL:如何根据与登录用户关联的部门显示数据?
我正在为工厂的员工(用户)创建一个应用程序。该应用程序需要由用户登录。登录后,在下一页上,微调器值基于用户的部门。如果用户来自IT部门,则微调器将填充IT部门所有“经理”姓名的列表。同样,当用户来自工程部门时,微调器将填充工程部门所有经理的姓名列表。问题是,目前,微调器将列出所有部门的所有经理。如何调整代码以仅显示用户部门的经理姓名 用于用户登录和列出“mysuggestion”的php代码:Java Android/MySQL:如何根据与登录用户关联的部门显示数据?,java,php,android,mysql,Java,Php,Android,Mysql,我正在为工厂的员工(用户)创建一个应用程序。该应用程序需要由用户登录。登录后,在下一页上,微调器值基于用户的部门。如果用户来自IT部门,则微调器将填充IT部门所有“经理”姓名的列表。同样,当用户来自工程部门时,微调器将填充工程部门所有经理的姓名列表。问题是,目前,微调器将列出所有部门的所有经理。如何调整代码以仅显示用户部门的经理姓名 用于用户登录和列出“mysuggestion”的php代码: <?php require_once 'dbConnect.php'; $response
<?php
require_once 'dbConnect.php';
$response = array();
if(isset($_GET['apicall'])){
if(isTheseParametersAvailable(array('username', 'password', 'approver'))){
$username = $_POST['username'];
$password = $_POST['password'];
$approver = $_POST['approver'];
$stmt = $conn->prepare("SELECT users.id, users.name, users.badgeid, users.position, users.department, users.factory,
mysuggestion.reviewer, mysuggestion.title, mysuggestion.year, mysuggestion.month, mysuggestion.suggestionwill, mysuggestion.present,
mysuggestion.details, mysuggestion.benefit, mysuggestion.photo, mysuggestion.status, mysuggestion.comment
FROM users left JOIN mysuggestion on users.badgeid = mysuggestion.badgeid
WHERE users.username = ? AND users.password = ? AND users.approver = ? ORDER BY mysuggestion.id DESC;");
$stmt->bind_param("sss",$username, $password, $approver);
$stmt->execute();
$stmt->store_result();
if($stmt->num_rows > 0){
$stmt->bind_result($id, $name, $badgeid, $position, $department, $factory, $reviewer, $title, $year, $month, $suggestionwill, $present, $details, $benefit, $photo, $status ,$comment);
$stmt->fetch();
$user = array(
'id'=>$id,
'name'=>$name,
'badgeid'=>$badgeid,
'position'=>$position,
'department'=>$department,
'factory'=>$factory,
'reviewer'=>$reviewer,
'title'=>$title,
'year'=>$year,
'month'=>$month,
'suggestionwill'=>$suggestionwill,
'present'=>$present,
'details'=>$details,
'benefit'=>$benefit,
'photo'=>$photo,
'status'=>$status,
'comment'=>$comment
);
$response['error'] = false;
$response['message'] = 'Login successfull';
$response['user'] = $user;
}else{
$response['error'] = false;
$response['message'] = 'The data that you insert is not match !!';
}
}
}else{
$response['error'] = true;
$response['message'] = 'Invalid API Call';
}
echo json_encode($response);
function isTheseParametersAvailable($params){
foreach($params as $param){
if(!isset($_POST[$param])){
return false;
}
}
return true;
}
为每个用户登录分配一个部门如何
然后在经理表中添加一个部门id
所以
表1用户
Id |姓名|部门Id |用户名|密码(加密)|等
表2部门
部门Id |部门名称
表3Manager
Id |经理姓名|部门Id
然后在查询中添加一个新的,其中应添加语句:
$stmt = $conn->prepare("SELECT users.id, users.name, users.badgeid, users.position, users.department, users.factory,
mysuggestion.reviewer, mysuggestion.title, mysuggestion.year, mysuggestion.month, mysuggestion.suggestionwill, mysuggestion.present,
mysuggestion.details, mysuggestion.benefit, mysuggestion.photo, mysuggestion.status, mysuggestion.comment
FROM users left JOIN mysuggestion on users.badgeid = mysuggestion.badgeid
WHERE users.username = ? AND users.password = ? AND users.approver = ?
AND users.department_id = '{department_id}'
ORDER BY mysuggestion.id DESC;");
我的建议(也取决于任务的规格)
将所有用户和登录凭据存储在一个表中,并按部门
(IT/Engineering/etc…)和角色
(用户/经理/etc…)区分它们如何为每个用户登录分配一个部门
然后在经理表中添加一个部门id
所以
表1用户
Id |姓名|部门Id |用户名|密码(加密)|等
表2部门
部门Id |部门名称
表3Manager
Id |经理姓名|部门Id
然后在查询中添加一个新的,其中应添加语句:
$stmt = $conn->prepare("SELECT users.id, users.name, users.badgeid, users.position, users.department, users.factory,
mysuggestion.reviewer, mysuggestion.title, mysuggestion.year, mysuggestion.month, mysuggestion.suggestionwill, mysuggestion.present,
mysuggestion.details, mysuggestion.benefit, mysuggestion.photo, mysuggestion.status, mysuggestion.comment
FROM users left JOIN mysuggestion on users.badgeid = mysuggestion.badgeid
WHERE users.username = ? AND users.password = ? AND users.approver = ?
AND users.department_id = '{department_id}'
ORDER BY mysuggestion.id DESC;");
我的建议(也取决于任务的规格)
将所有用户和登录凭据存储在一个表中,并按部门(IT/Engineering/etc…)和角色(users/Manager/etc…)区分它们。欢迎使用。如果您能格式化代码,那将很有帮助。它有助于提高可读性。永远不要以明文形式存储密码!。只存储密码哈希!使用PHP的和。如果您运行的PHP版本低于5.5(我真的希望您不是),那么可以使用获得相同的功能。我知道密码。系统上线后是否会更改?能否提供JSON响应示例?欢迎。如果您能格式化代码,那将很有帮助。它有助于提高可读性。永远不要以明文形式存储密码!。只存储密码哈希!使用PHP的和。如果您运行的PHP版本低于5.5(我真的希望您不是),那么可以使用获得相同的功能。我知道密码。系统上线后会更改它吗?您能提供一个JSON响应示例吗?我不想创建很多表。有什么想法吗?或者需要在java上进行更改?我认为您不需要在java上进行更改,因为在android上,您只需要在服务器端处理的数据。您需要更改数据源本身,如果不想创建新表,我建议更新有关如何填充微调器的查询,其中approver='Reviewer';“
to$sql=“SELECT*FROM用户,其中approver='Reviewer'和departmentId='{departmentId/IT/ENGG}';”
在此方法中,您将仅在表中添加新列。此部门ID将标识分配给特定部门的用户。我不想创建多个表。有什么想法吗?或者需要在java上进行更改?我认为您不需要在java上进行更改,因为在android上,您只需要在服务器端处理的数据。您需要更改数据源本身,如果不想创建新表,我建议更新有关如何填充微调器的查询,其中approver='Reviewer';“
to$sql=“SELECT*FROM用户,其中approver='Reviewer'和departmentId='{departmentId/IT/ENGG}';”
在此方法中,您将仅在表中添加新列。此部门ID将标识分配给特定部门的用户
$stmt = $conn->prepare("SELECT users.id, users.name, users.badgeid, users.position, users.department, users.factory,
mysuggestion.reviewer, mysuggestion.title, mysuggestion.year, mysuggestion.month, mysuggestion.suggestionwill, mysuggestion.present,
mysuggestion.details, mysuggestion.benefit, mysuggestion.photo, mysuggestion.status, mysuggestion.comment
FROM users left JOIN mysuggestion on users.badgeid = mysuggestion.badgeid
WHERE users.username = ? AND users.password = ? AND users.approver = ?
AND users.department_id = '{department_id}'
ORDER BY mysuggestion.id DESC;");