我有一些要分配员工的团队。经理登录到分配团队编号的帐户。然后,他们单击链接(该链接将Team ID作为变量传递)转到工作分配页面,在该页面中进行员工查找。找到该员工,然后单击链接以将该员工分配给他们的团队。
当他们首次进入此分配页面时,团队编号存在。但是,他们执行搜索后,团队编号将被清空。这些都在同一页面上。我不知道为什么“搜索”功能会清除“会话变量”值。谢谢。
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<?php
$_SESSION["teamid"] = $_REQUEST["tid"];
?>
<?php
$con = new mysqli($localhost, $username, $password, $dbname);
if( $con->connect_error){
die('Error: ' . $con->connect_error);
}
if( isset($_GET['search']) ){
$team = $_SESSION["teamid"];
$memberid = mysqli_real_escape_string($con, htmlspecialchars($_GET['search']));
$sql = "SELECT * FROM employees WHERE empid ='$memberid'";
}
$result = $con->query($sql);
?>
<label>Enter Employee You Wish To Add To Your Team (<?php echo $_SESSION["teamid"]; ?>)</label>
<form action="" method="GET">
<input type="text" placeholder="Enter Employee ID here" name="search">
<input type="submit" value="Search" name="btn" class="btn btn-sm btn-primary">
</form>
<br />
<table class="table table-striped table-responsive">
<tr>
<th>Employee ID</th>
<th>Name</th>
<th>Action</th>
</tr>
<?php
while($row = $result->fetch_assoc()){
?>
<tr>
<td><?php echo $row['empid']; ?></td>
<td><?php echo $row['firstname']; ?> <?php echo $row['lastname']; ?></td>
<td><a href="assignemployee.php?mid=<?php echo $row['empid']; ?>&tid=<?php echo $team; ?>">Assign Employee</a></td>
</tr>
<?php
}
?>
</table>
</div>
</body>
</html>
答案 0 :(得分:0)
这是因为在代码的顶部,您具有以下部分:
<?php
$_SESSION["teamid"] = $_REQUEST["tid"];
?>
因此,每次页面重新加载时,都会将teamid设置为请求中的内容。第二次访问该页面时,很可能是空的,这也导致会话也为空。
一种简单的解决方法是检查是否设置了$_REQUEST["tid"]
:
<?php
if (isset($_REQUEST["tid"])) {
$_SESSION["teamid"] = $_REQUEST["tid"];
}
?>