PDO$_GET当用户单击任务的删除按钮时,删除数据库中特定任务的任务id



当用户在UI中单击某个任务的删除按钮时,我在获取该任务的id以删除该任务时遇到问题。我有两张桌子,一张是";待办任务";表,另一个是";已完成任务";桌子在代码中,我确实使用任务的id和表名询问用户他们想通过表单删除哪个表中的哪个任务。现在我不想使用该表单,但我希望在每个表中的每个任务旁边都有一个删除按钮,这样用户只需要单击该按钮即可删除任务。你能教我怎么做吗?谢谢

<?php
session_start();
require 'connect.php';
$owner = $_SESSION['name'];
//delete data in the table the user want based on id of the data
if (isset($_POST['delete'])) {
$section = $_POST['delete_com_in'];
$task_id=$_POST['delete_com_in_id'];
$deleteQuery="DELETE FROM $section WHERE id=:task_id";
$preparedDeleteStatement = $conn->prepare($deleteQuery);
$preparedDeleteStatement->bindValue(':task_id',$task_id);
$valueDelete=$preparedDeleteStatement->execute();
}
//fetch data into table (incomplete and complete)
$displayQuery="SELECT * FROM incomplete where owner=:owner";
$displayTask= $conn->prepare($displayQuery);
$displayTask->bindValue(':owner', $owner);
$displayTask->execute();
$allTask=$displayTask->fetchAll();
echo "<table  class="incomplete_table"><caption>To-do Tasks</caption><tr><th>ID</th><th>Title</th><th>Description</th><th>Due Date</th><th>Time</th></tr>";
if(count($allTask) > 0)
{
foreach ($allTask as $row) {
echo "<tr><td>".$row["id"]."</td><td>".$row["title"]."</td><td>".$row["description"]."</td><td>".$row["due_date"]."</td><td>".$row["time"]."</td></tr>";
}
}
$displayQueryComplete="SELECT * FROM complete where owner=:owner";
$displayTaskComplete= $conn->prepare($displayQueryComplete);
$displayTaskComplete->bindValue(':owner', $owner);
$displayTaskComplete->execute();
$allTaskComplete= $displayTaskComplete->fetchAll();
echo "<table  class="complete_table"><caption>Completed Tasks</caption><tr><th>ID</th><th>Title</th><th>Description</th><th>Due Date</th><th>Time</th></tr>";
if(count($allTaskComplete) > 0)
{
foreach ($allTaskComplete as $row) {
echo "<tr><td>".$row["id"]."</td><td>".$row["title"]."</td><td>".$row["description"]."</td><td>".$row["due_date"]."</td><td>".$row["time"]."</td></tr>";
}

}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="./main_list.css">
<link href="https://fonts.googleapis.com/css2?family=PT+Sans&display=swap" rel="stylesheet">
<script src="./add_task.js" defer></script>
<title>Main List</title>
</head>
<body>
<div id="container">
<button id="buttonMainList"><a href="./logout.php">Logout</a></button>
<p id="userNameHere"><?php echo $_SESSION['name']; ?></p>
</div>
<h1 id="inform">TO-DO LIST</h1>
<div id="menu">
<label for="action">Choose an action:</label>
<select id="action" name="action" onchange='onSelectChangeHandler()'>
<option value="delete">Delete</option>
</select>
</div>
<!--delete form-->
<div id="delete">
<div id="delete_task_form">
<p id="delete_task">Delete Task</p>
<form id="delete_form" name="delete_form" method="post">
<div id="delete_section">
<input type="radio" id="delete_com_complete" name="delete_com_in" value="complete">
<label for="delete_com_complete">Completed</label>
<input type="radio" id="delete_com_incomplete" name="delete_com_in" value="incomplete">
<label for="delete_com_incomplete">Incomplete</label>
</div>
<div id="delete_section_id">
<label for="delete_com_in_id">What ID?</label>
<input type="text" id="delete_com_in_id" name="delete_com_in_id"><br>
</div>

<input id="submit_delete_form" type="submit" name="delete" value="Delete">
</form>
<br>
</div>
</div>
</div>
</body>

好吧,这不是一种正确的工作方式,但如果没有表单,你可以使用标签来获取要删除的任务的id:

<html>
<a href="example.com?task=98">Delete button</a>
</html>

此外,你需要知道用户想要删除的表,所以你需要创建两个按钮,每个按钮代表一个表:

<html>
<a href="example.com?task=98&table=To-do Task">Delete button table 1</a>
<a href="example.com?task=98&table=Completed Task">Delete button table 2</a>
</html>

98是id的一个例子。当你通过任务的id时,你只需要通过$_GET:就可以收到它

<?php 
if(isset($_GET["task"])){
$Task=$_GET["task"];
}
?>

一旦你有了id,你就必须对表格做同样的事情:

<?php 
if(isset($_GET["table"])){
if($_GET["table"]=="To-do Task"){
$Table="To-do Task";
}else{
$Table="Completed Task";
}    
}
?>

最后,您只需要根据表删除任务:

<?php 
if($Table=="To-do Task"){
$deletetask= $con->prepare("DELETE FROM `To-do` Task WHERE ID=?;");
$deletetask->execute([$Task]);
}else{
$deletetask= $con->prepare("DELETE FROM Completed Task WHERE ID=?;");
$deletetask->execute([$Task]);
}
?>

请记住,始终对来自用户的输入或用户可以操作的值进行消毒和验证

最新更新