根据登录的用户查看休假详细信息
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_id
、user_id
、from_date
、to_date
、reason
和 status
之外,您的叶子中应该没有任何内容(尽管您可能还想关于如何计算半天)
【参考方案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->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,但你明白了。
【讨论】:
以上是关于根据登录的用户查看休假详细信息的主要内容,如果未能解决你的问题,请参考以下文章