我们正在创建一个HTML表,如果用户选择名称旁边的“签出”按钮,它将使用当前日期和时间更新数据库中的一行,同时将其从HTML表中删除。它通过获取所选行的ID来完成此操作。由于某种原因,当HTML表中有多个名称时,如果单击第一个的Checkout按钮,它将获取其下方名称的ID并更新数据库中的该行。如果单击第一个下方的Checkout按钮,则它会照常执行代码。
页面代码:
<?php
// connect to database
require_once('connection.php');
session_start();
//get session variable, if empty, unset and logout
if(empty($_SESSION['department'])) {
session_unset();
session_destroy();
header("Location: index.php");
} else {
}
$dept = $_SESSION[department];
$eventsTable = $dept . "_events";
$checkinTable = $dept . "_checkin";
$query = mysqli_query($VisitorManagement, "SELECT * FROM config WHERE deptCode='$dept'");
$row2 = mysqli_fetch_array($query);
$checkout = $row2['checkout'];
$sql = mysqli_query($VisitorManagement, "SELECT * FROM {$checkinTable} WHERE deptCode='$dept'");
$row3 = mysqli_fetch_array($sql);
$checkoutDateTime = $row3['checkoutDateTime'];
if (!$checkout) {
header("Location: checkin.php");
}
if(isset($_POST['checkoutUser']))
{
$id = mysqli_real_escape_string($VisitorManagement, $_POST['id']);
// set checkout date
$query = "UPDATE {$checkinTable} SET checkoutDateTime = CURRENT_TIMESTAMP() WHERE id = '$id'";
if (mysqli_query($VisitorManagement, $query)) {
header('Location: checkout-thankyou.php');
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($VisitorManagement);
}
}
?>
<!doctype html>
<html class="no-js" lang="en">
<head>
<meta charset="utf-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Visitor Management</title>
<link rel="stylesheet" href="css/foundation.min.css" />
<link rel="stylesheet" href="css/app.css" />
</head>
<body>
<!-- nav -->
<div class="top-bar">
<div class="top-bar-left">
<ul class="menu">
<li><a href="checkin.php">Check-In</a></li>
<?php
if ($checkout) {
?>
<li><a href="checkout.php" class="active">Checkout</a></li>
<?php } ?>
</ul>
</div>
<div class="top-bar-right">
<ul class="menu">
<li><a href="login.php">Admin Login</a></li>
<li><a href="logout.php">Logout</a></li>
</ul>
</div>
</div>
<div class="row text-center" style="margin-top: 5%;">
<h1><img src="img/su-wordmark-vm.png" alt="Syracuse University"></h1>
<?php
$sql = "SELECT name from departments WHERE code='{$dept}'";
$result = mysqli_query($VisitorManagement, $sql);
$row = mysqli_fetch_array($result);
$name = $row["name"];
echo "<h2> $name </h2>"
?>
</div>
<div class="row">
<div class="medium-12 columns text-center" style="padding-top: 5%;">
<p>Please select the checkout button of the visitor you wish to checkout.</p>
<form id='checkout' method='post' name='checkout'>
<?php
$checkinTable = $dept . "_checkin";
$result = mysqli_query($VisitorManagement, "SELECT * FROM {$checkinTable} WHERE DATE(checkinDateTime) = CURDATE() AND checkoutDateTime IS NULL ORDER BY checkinDateTime DESC");
echo "<table class='checkin'>
<thead>
<tr>
<th>Student Name</th>
<th>SUID #</th>
<th>Student Email</th>
<th>Primary Affiliation</th>
<th>Program</th>
<th>Education Level</th>
<th>Staff Member</th>
<th>Reason for Visit</th>
<th>Check In Date/Time</th>
<th>Checkout</th>
<th aria-hidden='true' class='hide'>Hidden User ID</th>
</tr>
</thead>";
while($row = mysqli_fetch_array($result))
{
$phpdate = strtotime($row['checkinDateTime']);
$dateTime = date('F j, Y, g:i a', $phpdate);
echo "<tbody>";
echo "<tr>";
echo "<td>" . $row['studentName'] . "</td>";
echo "<td>" . $row['suid'] . "</td>";
echo "<td>" . $row['studentEmail'] . "</td>";
echo "<td>" . $row['studentAffiliation'] . "</td>";
echo "<td>" . $row['studentProgram'] . "</td>";
echo "<td>" . $row['studentEduLevel'] . "</td>";
echo "<td>" . $row['staffMember'] . "</td>";
echo "<td>" . $row['reasonForVisit'] . "</td>";
echo "<td>" . $dateTime . "</td>";
echo "<td><input type='submit' class='button' id='checkoutUser' name='checkoutUser' value='Checkout'></td>";
echo "<td><input type='hidden' aria-hidden='true' name='id' value='" . $row['id'] . "'></td>";
echo "</tr>";
}
echo "</tbody>";
echo "</table>";
echo "</form>";
mysqli_close($VisitorManagement);
?>
</div>
</div>
<script src="js/vendor/jquery.min.js"></script>
<script src="js/vendor/what-input.min.js"></script>
<script src="js/foundation.min.js"></script>
<script src="js/app.js"></script>
</body>
</html>
关于为什么会发生这种情况的任何想法?
答案 0 :(得分:0)
我已经发表了评论,但是在这里回答更容易。
您只能拥有一个唯一的id属性。输出方式将有多个表单具有相同的提交ID。您可以这样修改id =“ checkoutUser $ row ['id']”:
echo '<td><input type="submit" class="button" id="checkoutUser' . $row['id'] . '" name="checkoutUser" value="Checkout"></td>';