Переменная сеанса PHP потеряна на той же странице - PullRequest
0 голосов
/ 29 августа 2018

У меня есть команды, в которые я назначаю сотрудников. Менеджер входит в свою учетную запись, которая присваивает номер команды. Затем они щелкают ссылку (которая передает идентификатор команды в качестве переменной), чтобы перейти на страницу назначения, где они выполняют поиск сотрудников; найдите сотрудника и нажмите на ссылку, чтобы назначить этого сотрудника своей команде.

При первом входе на страницу назначения номер группы существует. Однако после выполнения поиска номер команды не отображается. Это все на одной странице. Я не знаю, почему функция поиска уничтожает значение переменной сеанса. Спасибо.

<?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">&nbsp;
        <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>

1 Ответ

0 голосов
/ 29 августа 2018

Это потому, что вверху вашего кода у вас есть эта часть:

<?php 
$_SESSION["teamid"] = $_REQUEST["tid"];
?>

Таким образом, каждый раз, когда страница перезагружается, она устанавливает teamid в то, что находится в запросе. Во второй раз, когда вы посещаете страницу, она, скорее всего, пуста, поэтому сессия также будет пустой.

Простой способ исправить это - установить $_REQUEST["tid"]:

<?php
if (isset($_REQUEST["tid"])) {
    $_SESSION["teamid"] = $_REQUEST["tid"];
}
?>
...