Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android/MySQL:如何根据与登录用户关联的部门显示数据?_Java_Php_Android_Mysql - Fatal编程技术网

Java Android/MySQL:如何根据与登录用户关联的部门显示数据?

Java Android/MySQL:如何根据与登录用户关联的部门显示数据?,java,php,android,mysql,Java,Php,Android,Mysql,我正在为工厂的员工(用户)创建一个应用程序。该应用程序需要由用户登录。登录后,在下一页上,微调器值基于用户的部门。如果用户来自IT部门,则微调器将填充IT部门所有“经理”姓名的列表。同样,当用户来自工程部门时,微调器将填充工程部门所有经理的姓名列表。问题是,目前,微调器将列出所有部门的所有经理。如何调整代码以仅显示用户部门的经理姓名 用于用户登录和列出“mysuggestion”的php代码: <?php require_once 'dbConnect.php'; $response

我正在为工厂的员工(用户)创建一个应用程序。该应用程序需要由用户登录。登录后,在下一页上,微调器值基于用户的部门。如果用户来自IT部门,则微调器将填充IT部门所有“经理”姓名的列表。同样,当用户来自工程部门时,微调器将填充工程部门所有经理的姓名列表。问题是,目前,微调器将列出所有部门的所有经理。如何调整代码以仅显示用户部门的经理姓名

用于用户登录和列出“mysuggestion”的php代码:

<?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 |部门名称

表3
Manager
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 |部门名称

表3
Manager
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;");