diff --git a/Admin/uni_manage.php b/Admin/uni_manage.php new file mode 100644 index 0000000000000000000000000000000000000000..4ff42f2b968c7334191fca6ad5b6e154d1d1e197 --- /dev/null +++ b/Admin/uni_manage.php @@ -0,0 +1,274 @@ +<?php +include_once '../Logic/config.php'; +// 准备SQL查询 +$stmt = DB->prepare("SELECT * FROM building"); +$stmt->execute(); +$buildings = $stmt->fetchAll(PDO::FETCH_ASSOC); + +function editBuildingInfo($openTime, $latitude, $longtitude, $description, $buildingName) +{ + $sql = "UPDATE building SET openTime = ?, `data-lat` = ?, `data-lng` = ?, description = ? WHERE name = ?"; + $stmt = DB->prepare($sql); + return $stmt->execute([$openTime, $latitude, $longtitude, $description, $buildingName]); +} + +function addBuilding($openTime, $latitude, $longtitude, $description, $buildingName) +{ + // 查询店铺数据库 + $stmt = DB->prepare("SELECT * FROM building WHERE name = ?"); + $stmt->execute([$buildingName]); + $building = $stmt->fetch(PDO::FETCH_ASSOC); + if ($building) { + // 店铺已存在 + echo "<script>alert('Already has this building!');</script>"; + echo "<script>window.location.href = window.location.href;</script>"; + exit; + } + + //在数据库中创建新用户 + $sql = "INSERT INTO building(openTime, `data-lat`, `data-lng`, description, name) VALUES (?, ?, ?, ?, ?)"; + $stmt = DB->prepare($sql); + return $stmt->execute([$openTime, $latitude, $longtitude, $description, $buildingName]); + +} + +function deleteBuilding($buildingName) +{ + $sql = "DELETE FROM building WHERE name = ?"; + $stmt = DB->prepare($sql); + return $stmt->execute([$buildingName]); +} + + +if ($_SERVER['REQUEST_METHOD'] === 'POST') { + + // 处理表单提交的数据 + if ($_POST["formType"] == "editInfoForm") { + $buildingName = $_POST['buildingName']; + $openTime = "Sun:" . $_POST['sun'] . "<br>" . "Mon:" . $_POST['mon'] . "<br>" . "Tue:" . $_POST['tue'] . "<br>" . "Wed:" . $_POST['wed'] . "<br>" . "Thu:" . $_POST['thu'] . "<br>" . "Fri:" . $_POST['fri'] . "<br>" . "Sat:" . $_POST['sat']; + $latitude = $_POST['latitude']; + $longtitude = $_POST['longtitude']; + $description = $_POST['description']; + + editBuildingInfo($openTime, $latitude, $longtitude, $description, $buildingName); + echo "<script>window.location.href = " . $_SERVER['PHP_SELF'] . ";</script>"; + } elseif ($_POST["formType"] == "addBuildingForm") { + // 接收表单数据 + $buildingName = $_POST['buildingName']; + $openTime = "Sun:" . $_POST['sun'] . "<br>" . "Mon:" . $_POST['mon'] . "<br>" . "Tue:" . $_POST['tue'] . "<br>" . "Wed:" . $_POST['wed'] . "<br>" . "Thu:" . $_POST['thu'] . "<br>" . "Fri:" . $_POST['fri'] . "<br>" . "Sat:" . $_POST['sat']; + $latitude = $_POST['latitude']; + $longtitude = $_POST['longtitude']; + $description = $_POST['description']; + + addBuilding($openTime, $latitude, $longtitude, $description, $buildingName); + echo "<script>window.location.href = " . $_SERVER['PHP_SELF'] . ";</script>"; + } elseif ($_POST["formType"] == "delBuildingForm") { + $buildingName = $_POST['buildingName']; + + deleteBuilding($buildingName); + echo "<script>window.location.href = " . $_SERVER['PHP_SELF'] . ";</script>"; + } + +} +?> +<!DOCTYPE html> +<html lang="zh-CN"> +<head> + <meta charset="UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <title>Uni-building Management</title> + <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet"> + <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css"> +</head> +<body class="bg-gray-100"> +<div class="container mx-auto p-4"> + <table class="min-w-full max-w-4xl mx-auto border-collapse"> + <thead class="bg-gray-800 text-white"> + <tr class="border-b"> + <th class="px-4 py-2 text-left rounded-tl-lg">Building Name</th> + <th class="px-4 py-2 text-left">Opening Time</th> + <th class="px-4 py-2 text-left">Details</th> + <th class="px-4 py-2 text-left">Latitude</th> + <th class="px-4 py-2 text-left">Longitude</th> + <th class="px-4 py-2 text-left rounded-tr-lg">Operations</th> + </tr> + </thead> + <tbody> + <?php foreach ($buildings as $building) { ?> + <tr class="border-b"> + <td class="px-4 py-2"><?php echo htmlspecialchars($building['name']) ?></td> + <td class="px-4 py-2"><?php echo $building['openTime'] ?></td> + <td class="px-4 py-2"><?php echo htmlspecialchars($building['description']) ?></td> + <td class="px-4 py-2"><?php echo htmlspecialchars($building['data-lat']) ?></td> + <td class="px-4 py-2"><?php echo htmlspecialchars($building['data-lng']) ?></td> + <td class="px-4 py-2 text-center"> + <!-- 编辑按钮 --> + <button class="edit-btn text-blue-500 hover:text-blue-700 mx-2" + data-id="<?php echo $building['name'] ?>" + data-type="edit"> + <i class="fas fa-edit"></i> + </button> + <!-- 删除按钮 --> + <form action="../Admin/uni_manage.php" method="post" class="inline-block"> + <input type="hidden" name="buildingName" + value="<?php echo htmlspecialchars($building['name']) ?>"> + <input type="hidden" name="formType" value="delBuildingForm"> + <button type="submit" class="text-red-500 hover:text-red-700 mx-2"> + <i class="fas fa-trash-alt"></i> + </button> + </form> + </td> + </tr> + <?php } ?> + <!-- 增加按钮 --> + <tr class="border-b"> + <td colspan="6" class="px-4 py-2 text-center"> + <button class="add-btn text-green-500 hover:text-green-700 mx-2" data-type="add"> + <i class="fas fa-plus-square"></i> + </button> + </td> + </tr> + </tbody> + </table> +</div> + +<!-- 弹出框,初始时隐藏 --> +<div id="modal" + class="hidden fixed inset-0 bg-gray-600 bg-opacity-50 overflow-y-auto h-full w-full flex items-center justify-center"> + <div class="bg-white p-10 rounded-lg shadow-lg max-w-2xl w-full mx-auto" id="modal-content"> + <!-- 弹出框内容 --> + </div> +</div> + +<div class="fixed bottom-0 right-0 p-4"> + <button onclick="window.location.reload()" + class="px-4 py-2 bg-gray-800 text-white rounded-md shadow-md hover:bg-gray-900 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-opacity-50"> + <i class="fas fa-sync-alt mr-2"></i> + </button> +</div> + +<script> + document.addEventListener("DOMContentLoaded", () => { + const editButtons = document.querySelectorAll('.edit-btn'); + const addButtons = document.querySelectorAll('.add-btn'); + const modal = document.getElementById('modal'); + const modalContent = document.getElementById('modal-content'); + + // 编辑按钮点击事件 + editButtons.forEach(button => { + button.addEventListener('click', function () { + const buildingName = this.getAttribute('data-id'); + + modalContent.innerHTML = ` + <h2 class="text-lg font-bold mb-4">Edit Building Info</h2> + <form id="editBuildingForm" class="space-y-4" action="../Admin/uni_manage.php" method="post"> + <input type="hidden" name="buildingName" value="${buildingName}"> + <input type="hidden" name="formType" value="editInfoForm"> + <div class="flex"> + <!-- Left side - Opening Times for each day --> + <div class="flex flex-col mr-4"> + <label class="block text-sm font-medium text-gray-700 mb-1">Opening Times</label> + <div class="space-y-2"> + <input type="text" name="sun" placeholder="Sunday" class="block w-full px-3 py-2 bg-white border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"> + <input type="text" name="mon" placeholder="Monday" class="block w-full px-3 py-2 bg-white border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"> + <input type="text" name="tue" placeholder="Tuesday" class="block w-full px-3 py-2 bg-white border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"> + <input type="text" name="wed" placeholder="Wednesday" class="block w-full px-3 py-2 bg-white border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"> + <input type="text" name="thu" placeholder="Thursday" class="block w-full px-3 py-2 bg-white border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"> + <input type="text" name="fri" placeholder="Friday" class="block w-full px-3 py-2 bg-white border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"> + <input type="text" name="sat" placeholder="Saturday" class="block w-full px-3 py-2 bg-white border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"> + </div> + </div> + <!-- Divider --> + <div class="self-center bg-gray-300 w-px h-40"></div> + <!-- Right side - Building Info --> + <div class="flex-grow ml-4"> + <div> + <label class="block text-sm font-medium text-gray-700" for="latitude">Latitude</label> + <input type="text" name="latitude" id="latitude" class="mt-1 block w-full px-3 py-2 bg-white border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"> + </div> + <div> + <label class="block text-sm font-medium text-gray-700" for="longitude">Longitude</label> + <input type="text" name="longtitude" id="longtitude" class="mt-1 block w-full px-3 py-2 bg-white border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"> + </div> + <div> + <label class="block text-sm font-medium text-gray-700" for="description">Details</label> + <textarea name="description" id="description" rows="8" class="mt-1 block w-full px-3 py-2 bg-white border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"></textarea> + </div> + </div> + </div> + <div class="flex justify-end mt-4"> + <button type="submit" class="inline-flex items-center px-4 py-2 bg-blue-500 border border-transparent rounded-md font-semibold text-xs text-white uppercase tracking-widest hover:bg-blue-700 active:bg-blue-900 focus:outline-none focus:border-blue-900 focus:ring focus:ring-blue-300 disabled:opacity-25 transition"> + Submit + </button> + </div> + </form> + `; + modal.classList.remove('hidden'); + }); + }); + + // 增加按钮点击事件 + addButtons.forEach(button => { + button.addEventListener('click', function () { + modalContent.innerHTML = ` + <h2 class="text-lg font-bold mb-4">Edit Building Info</h2> + <form id="addBuildingForm" class="space-y-4" action="../Admin/uni_manage.php" method="post"> + <input type="hidden" name="formType" value="addBuildingForm"> + <div class="flex"> + <!-- Left side - Opening Times for each day --> + <div class="flex flex-col mr-4"> + <label class="block text-sm font-medium text-gray-700 mb-1">Opening Times</label> + <div class="space-y-2"> + <input type="text" name="sun" placeholder="Sun" class="block w-full px-3 py-2 bg-white border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"> + <input type="text" name="mon" placeholder="Monday" class="block w-full px-3 py-2 bg-white border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"> + <input type="text" name="tue" placeholder="Tuesday" class="block w-full px-3 py-2 bg-white border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"> + <input type="text" name="wed" placeholder="Wednesday" class="block w-full px-3 py-2 bg-white border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"> + <input type="text" name="thu" placeholder="Thursday" class="block w-full px-3 py-2 bg-white border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"> + <input type="text" name="fri" placeholder="Friday" class="block w-full px-3 py-2 bg-white border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"> + <input type="text" name="sat" placeholder="Saturday" class="block w-full px-3 py-2 bg-white border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"> + </div> + </div> + <!-- Divider --> + <div class="self-center bg-gray-300 w-px h-40"></div> + <!-- Right side - Building Info --> + <div class="flex-grow ml-4"> + <div> + <label class="block text-sm font-medium text-gray-700" for="buildingName">Building Name</label> + <input type="text" name="buildingName" id="buildingName" class="mt-1 block w-full px-3 py-2 bg-white border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"> + </div> + <div> + <label class="block text-sm font-medium text-gray-700" for="latitude">Latitude</label> + <input type="text" name="latitude" id="latitude" class="mt-1 block w-full px-3 py-2 bg-white border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"> + </div> + <div> + <label class="block text-sm font-medium text-gray-700" for="longitude">Longitude</label> + <input type="text" name="longitude" id="longitude" class="mt-1 block w-full px-3 py-2 bg-white border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"> + </div> + <div> + <label class="block text-sm font-medium text-gray-700" for="description">Description</label> + <textarea name="description" id="description" rows="5" class="mt-1 block w-full px-3 py-2 bg-white border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"></textarea> + </div> + </div> + </div> + <div class="flex justify-end mt-4"> + <button type="submit" class="inline-flex items-center px-4 py-2 bg-blue-500 border border-transparent rounded-md font-semibold text-xs text-white uppercase tracking-widest hover:bg-blue-700 active:bg-blue-900 focus:outline-none focus:border-blue-900 focus:ring focus:ring-blue-300 disabled:opacity-25 transition"> + Submit + </button> + </div> + </form> + `; + modal.classList.remove('hidden'); + }); + }); + + // 点击模态框外区域关闭模态框 + modal.addEventListener('click', function (e) { + if (e.target === modal) { + modal.classList.add('hidden'); + } + }); + }); +</script> +</body> +</html> + diff --git a/Admin/user_manage.php b/Admin/user_manage.php index 267d0facddbbe4980959a22d323303d58ad81bc9..02b536163a603d556e8bb519e08580705ce02789 100644 --- a/Admin/user_manage.php +++ b/Admin/user_manage.php @@ -90,6 +90,8 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { } ?> + + <!DOCTYPE html> <html lang="zh-CN"> <head> @@ -128,25 +130,31 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { <td class="px-4 py-2"><?php echo htmlspecialchars($user['email']) ?></td> <td class="px-4 py-2 text-center"> <!-- 编辑按钮 --> - <button class="edit-btn text-blue-500 hover:text-blue-700" data-id="<?php echo $user['id'] ?>" + <button class="edit-btn text-blue-500 hover:text-blue-700 mx-2" + data-id="<?php echo htmlspecialchars($user['id']) ?>" data-type="edit"> <i class="fas fa-edit"></i> </button> <!-- 删除按钮 --> - <form action="user_manage.php" method="post"> - <input type="hidden" name="userId" value="<?php echo htmlspecialchars($user['id']) ?>"> - <input type="hidden" name="formType" value="delUserForm"> - <button type="submit" class="text-red-500 hover:text-red-700 ml-2"> + <form action="../Admin/uni_manage.php" method="post" class="inline-block"> + <input type="hidden" name="buildingName" + value="<?php echo htmlspecialchars($user['id']) ?>"> + <input type="hidden" name="formType" value="delBuildingForm"> + <button type="submit" class="text-red-500 hover:text-red-700 mx-2"> <i class="fas fa-trash-alt"></i> </button> </form> - <!-- 增加按钮 --> - <button class="add-btn text-green-500 hover:text-green-700 ml-2" data-type="add"> - <i class="fas fa-plus-circle"></i> - </button> </td> </tr> <?php } ?> + <!-- 增加按钮 --> + <tr class="border-b"> + <td colspan="6" class="px-4 py-2 text-center"> + <button class="add-btn text-green-500 hover:text-green-700 mx-2" data-type="add"> + <i class="fas fa-plus-square"></i> + </button> + </td> + </tr> </tbody> </table> </div> diff --git a/Logic/user_manage.js b/Logic/user_manage.js index 3fdcef9759adb8c6a0d69fc5be67d5bfa9805dea..fe49fa00da27de9ab41ac34e198f6e983bb6532e 100644 --- a/Logic/user_manage.js +++ b/Logic/user_manage.js @@ -11,7 +11,7 @@ document.addEventListener("DOMContentLoaded", () => { // 在此处根据userId获取用户数据,并填充到模态框内容中 modalContent.innerHTML = ` <h2 class="text-lg font-bold mb-4">Edit User Info</h2> - <form id="editUserForm" class="space-y-4" action="user_manage.php" method="post"> + <form id="editUserForm" class="space-y-4" action="../Admin/user_manage.php" method="post"> <input type="hidden" name="id" value="${userId}"> <input type="hidden" name="formType" value="editInfoForm"> <div> @@ -46,7 +46,7 @@ document.addEventListener("DOMContentLoaded", () => { button.addEventListener('click', function () { modalContent.innerHTML = ` <h2 class="text-lg font-bold mb-4">Add user</h2> - <form id="addUserForm" class="space-y-4" action="user_manage.php" method="post"> + <form id="addUserForm" class="space-y-4" action="../Admin/user_manage.php" method="post"> <input type="hidden" name="formType" value="addUserForm"> <div> <label class="block text-sm font-medium text-gray-700" for="account">Student ID</label> @@ -58,8 +58,8 @@ document.addEventListener("DOMContentLoaded", () => { </div> <div> <label class="block text-sm font-medium text-gray-700" for="password">Password</label> - <input type="password" name="password" id="password" class="mt-1 block w-full px-3 py-2 bg-white border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500" pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*\W).{8,}" - title="Password must be at least 8 characters long, including 1 uppercase letter, 1 special character." required> + <input type="password" name="password" id="password" class="mt-1 block w-full px-3 py-2 bg-white border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500" pattern=".{8,}" + title="Password must be at least 8 characters long, including 1 uppercase letter, 1 special character."> </div> <div> <label class="block text-sm font-medium text-gray-700" for="tele_Num">Telephone Number</label> @@ -86,7 +86,4 @@ document.addEventListener("DOMContentLoaded", () => { modal.classList.add('hidden'); } }); - - - });