根据登录的用户查看休假详细信息

Posted

技术标签:

【中文标题】根据登录的用户查看休假详细信息【英文标题】:Viewing leave details depending on the user logged in 【发布时间】:2018-06-29 10:45:14 【问题描述】:

我已经建立了一个员工信息系统,他们可以在其中申请休假并查看他们的休假状态。问题是当员工想查看他的休假时,他可以看到所有申请休假的人。

这里是一个例子,登录的用户是 Jane Smith,当我去查看我的叶子时,我看到的是这样的:

所以基本上我试图根据登录的用户显示休假。此外,我的系统中确实有两个表,员工和休假。

员工表:

请假表:

我为我的员工信息系统编写了一个会话代码。我想我需要加入我的会话代码并查看我的离开代码来回答我的问题。问题是,我不知道如何将两者结合起来。

这是我为员工信息系统所做的会话代码:

<?php

session_start();
ob_start();

//Include the database connection file
include "database_connection.php"; 

//Check to be sure that a valid session has been created
if(isset($_SESSION["VALID_USER_ID"]))


    //Check the database table for the logged in user information
    $check_user_details = mysql_query("select * from `employee` where `username` = '".mysql_real_escape_string($_SESSION["VALID_USER_ID"])."'");
    //Validate created session
    if(mysql_num_rows($check_user_details) < 1)
    
        session_unset();
        session_destroy();
        header("location: login.php");
    
    else
    

    //Get all the logged in user information from the database users table
    $get_user_details = mysql_fetch_array($check_user_details);

    $user_id = strip_tags($get_user_details['id']);
    $fullname = strip_tags($get_user_details['fullname']);
    $username = strip_tags($get_user_details['username']);
    $email = strip_tags($get_user_details['email']);
    $address = strip_tags($get_user_details['address']);
    $gender = strip_tags($get_user_details['gender']);
    $contact = strip_tags($get_user_details['contact']);
    $user_access_level = strip_tags($get_user_details['user_levels']);
    $passwd = strip_tags($get_user_details['password']);
    $picture = strip_tags($get_user_details['picture']);
    $sickleave = strip_tags($get_user_details['sickleave']);
    $vacationleave = strip_tags($get_user_details['vacationleave']);
?>

这是我的休假代码:

<div class="container">
<div class="page-header">
<h3>My Leaves</h3>
            <div class="table-responsive">
                <table class="table">
                    <tr>
                        <th>Employee Name</th>
                        <th>Phone</th>
                        <th>Email</th>
                        <th>From</th>
                        <th>To</th>
                        <th>Reason</th>
                        <th>Status</th>
                    </tr>
                <?php
                    include ('database.php');
                    $result = $database->prepare ("SELECT * FROM leaves order by leaveno DESC");
                    $result ->execute();
                    for ($count=0; $row_message = $result ->fetch(); $count++)
                ?>
                    <tr>
                        <td><?php echo $row_message['full_name']; ?></td>
                        <td><?php echo $row_message['phone']; ?></td>
                        <td><?php echo $row_message['email']; ?></td>
                        <td><?php echo $row_message['fromdate']; ?></td>
                        <td><?php echo $row_message['todate']; ?></td>
                        <td><?php echo $row_message['reason']; ?></td>
                        <td><?php echo $row_message['status']; ?></td>
                    </tr>
                    <?php      ?>

                    </table>

                    <a href="home"><button type="button" class="btn btn-primary"><i class="glyphicon glyphicon-arrow-left"></i> Back</button></a>   
                </div>
            </div>
        </div>  
    </div>
</div>

所以正如我所说,我不知道如何合并这两个代码。我知道那里有很多教程,但我真的很难理解它们。

我也知道会话代码中的 mysql 已被弃用。我有在未来改变它们的计划。与此同时,我必须弄清楚如何做到这一点。任何帮助将不胜感激。

【问题讨论】:

哦,来吧。更改它,即使只更改为 mysqli。这很容易做到;可能不超过一个小时(包括构建准备好的和绑定的语句) @Strawberry 注意,我会试试的。 此外,除了leave_iduser_idfrom_dateto_datereasonstatus 之外,您的叶子中应该没有任何内容(尽管您可能还想关于如何计算半天) 【参考方案1】:

由于您将登录用户的用户名存储在会话变量$_SESSION["VALID_USER_ID"] 中,因此您可以在会话处于活动状态之前使用它。您可以在离开视图代码中使用它。

在您离开查看代码时,请使用以下代码:

$stmt = $conn->prepare("SELECT leaves.* FROM leaves INNER JOIN employee ON employee.id = leaves.user_id WHERE employee.username = ?");
$stmt->bind_param("s", $_SESSION["VALID_USER_ID"]);

这样你会得到用户名$_SESSION["VALID_USER_ID"]的用户的所有请假申请

【讨论】:

我收到了Parse error: syntax error, unexpected '"' 这就是我所做的$result = $database-&gt;prepare ("SELECT leaves.* FROM leaves INNER JOIN employee ON employee.id = leaves.user_id WHERE employee.username = $_SESSION["VALID_USER_ID"]"); 非常感谢您的帮助 由于“逗号”而发生错误。尝试将VALID_USER_ID写在单个引号(')内,如'VALID_USER_ID' 或者使用字符串拼接【参考方案2】:

FWIW,如果我正在构建一个休假表,我认为它可能看起来像这样。为了清楚起见,我在这里使用了 ENUM,通常我更喜欢避免使用它们...

CREATE TABLE leaves
(leave_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,employee_id INT NOT NULL
,from_date DATE NOT NULL
,from_type ENUM('all day','morning','afternoon') NOT NULL DEFAULT 'all day'
,to_date DATE NOT NULL
,to_type ENUM('all day','morning','afternoon') NOT NULL DEFAULT 'all day'
,reason VARCHAR(255) NOT NULL DEFAULT '';
,status ENUM('pending','approved','declined') NOT NULL DEFAULT 'pending'
);

我想我也可能有一个 leave_type,但你明白了。

【讨论】:

以上是关于根据登录的用户查看休假详细信息的主要内容,如果未能解决你的问题,请参考以下文章

Laravel - 如何根据员工和登录用户获取公司详细信息

如何在详细屏幕中查看项目的详细信息 - Flutter

显示登录用户详细信息

PHP获得当前登录用户ID,详细代码写法

Spring Security-获取当前登录用户的详细信息

Spring Security-获取当前登录用户的详细信息