如何使用複選框刪除 php 和 mysql 的行
P粉982009874
P粉982009874 2023-09-01 22:02:23
0
1
617
<p>我創建了一個包含資料庫資訊的表,並嘗試建立複選框以便能夠更輕鬆地刪除行,但有些東西無法正常工作。 </p> <p>我有一個有表單的按鈕:</p> <pre class="brush:php;toolbar:false;"><form action="delete-register.php" method="post"> <button type="button" class="btn btn-primary"><span class="fe fe-file-plus fe-12 mr-2"></span>New<pan> button> <button type="submit" name="delete" class="btn btn-secondary"><span class="fe fe-trash fe-12 mr-2&quo;span class="fe fe-trash fe-12 mr-2"> ;Delete</button> </form></pre> <p>我有有複選框的行:</p> <pre class="brush:php;toolbar:false;"><form action="delete-register.php" method="post"> <td> <div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" id="<?php echo $row['id']; ?>" name="selected[]" value="<?php echo $row['id']; ?>"> <label class="custom-control-label" for="<?php echo $row['id']; ?>"></label> </div> </td> </form></pre> <p>還有delete-register.php:</p> <pre class="brush:php;toolbar:false;">if (isset($_POST['delete'])) { if (isset($_POST['selected'])) { foreach ($_POST['selected'] as $id) { $query = "DELETE FROM registers WHERE id = $id"; mysqli_query($conn, $query); } header('Location: registers.php'); exit; } }</pre> <p>問題是「selected」始終為空,因此不會從資料庫中刪除任何內容。 我該如何解決這個問題? </p>
P粉982009874
P粉982009874

全部回覆(1)
P粉006540600

Please note that the data submitted will be within the scope of <form>....</form>

由於您有兩個表單,當您點擊第一個表單中的提交按鈕時,它不會將第二個表單的資料傳送到伺服器。

因此,請將第二種形式變更為:

<form action="delete-register.php" method="post">

      <div class="custom-control custom-checkbox">
       <input type="checkbox" class="custom-control-input" id="<?php echo $row['id']; ?>" name="selected[]" value="<?php echo $row['id']; ?>">
       <label class="custom-control-label" for="<?php echo $row['id']; ?>"></label>
     </div>

<input type=submit name=delete>

</form>

[補充說明]

#如果您想堅持使用第一種形式來觸發刪除操作,那麼請:

  1. 在第一種表單中,將刪除從「提交」變更為「按鈕」
  2. 向此刪除按鈕新增 onclick 事件,以便觸發第二個表單的提交
  3. 確保在第二種形式中有一個名為「delete」的隱藏字段,因為您指定在 PHP 腳本中包含此字段
  4. you may have noticed that I have added id=form2 in the 2nd form so as to facilitate triggering of the submission by form1

這是修改後的程式碼:

<form method="post">
   <button type="button" class="btn btn-primary"><span class="fe fe-file-plus fe-12 mr-2"></span>New</button>

   <button type="button" name="delete" class="btn btn-secondary"
onclick='document.getElementById("form2").submit()';
   ><span class="fe fe-trash fe-12 mr-2"></span>Delete</button>

</form>



<form id=form2 action="delete-register.php" method="post">

   <div class="custom-control custom-checkbox">
       <input type="checkbox" class="custom-control-input" id="<?php echo $row['id']; ?>" name="selected[]" value="<?php echo $row['id']; ?>">
       <label class="custom-control-label" for="<?php echo $row['id']; ?>"></label>
     </div>

<input type=hidden name=delete value="delete">

</form>
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板