首頁  >  問答  >  主體

如何使用複選框刪除 php 和 mysql 的行

<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粉982009874P粉982009874386 天前521

全部回覆(1)我來回復

  • P粉006540600

    P粉0065406002023-09-02 18:45:55

    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>

    回覆
    0
  • 取消回覆