簡體   English   中英

PDO $_GET 任務id,當用戶點擊某個任務的刪除按鈕時,在數據庫中刪除該任務

[英]PDO $_GET the id of a task to delete a specific task in the database when the user click the delete button of that task

當用戶單擊 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]);
      }
?>

請記住,始終清理和驗證來自用戶的輸入或用戶無法操縱的值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM