簡體   English   中英

使用 php 從 mysql 中刪除選定的復選框行

[英]Delete selected checkbox rows from mysql using php

我無法使用 php 代碼從 mysql 中刪除選定的復選框行。 我嘗試在這里搜索相同的問題並在我的實踐項目中實現邏輯,但它似乎不起作用。 一旦我 select 要刪除的復選框,它會加載空白頁並且沒有任何內容被刪除。

插入新值和通過鍵入 ID 刪除行的前兩部分工作正常。

這是我的代碼。

<?php

if (isset( $_POST["create"])){
    
    $conn= mysqli_connect("localhost","root","" );
    mysqli_select_db($conn, "phonebook_assignement");
    $phonenumber= $_POST["number"];
    $textname= $_POST["name"];
   
    $sql = "INSERT INTO contacts(name, number) VALUES ('$textname', $phonenumber)";
    //exit($sql);
    $rs= mysqli_query($conn,$sql);
   // exit($rs);
  
    if ($rs) {
       echo "Record inserted";
    }
   
    mysqli_close($conn);
    die();
}

elseif (isset($_POST["delete"])){
    $conn= mysqli_connect("localhost","root","" );
    mysqli_select_db($conn, "phonebook_assignement");
    $id= $_POST["id"];
    $delete = "DELETE FROM contacts WHERE id=$id";
    $sqlDelete= mysqli_query($conn, $delete);
enter code here

    if ($sqlDelete){
        echo "Record deleted";
    }

    mysqli_close($conn);    
    die();
}




elseif (isset($_POST["delete"])){
    $conn= mysqli_connect("localhost","root","" );
    mysqli_select_db($conn, "phonebook_assignement");
    $checkbox= $_POST["checkbox"];
    for($i=0;$i<count($checkbox);$i++){

        $del_id = $checkbox[$i];
        $deleteBox = "DELETE FROM contacts WHERE id=$del_id";      
        $boxDelete= mysqli_query($conn, $deleteBox);
    }

    if ($boxDelete){
        echo "Record deleted";
    }

    mysqli_close($conn);    
    die();
}
    
?>

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8"> 
    <title> Phonebook assignement</title> 
</head>   

<body>    

<?php

$conn= mysqli_connect("localhost","root","" );
mysqli_select_db($conn, "phonebook_assignement");

$result= mysqli_query($conn, "SELECT * FROM contacts");

while ($rw=mysqli_fetch_row($result))
    echo  '<form method="POST" action="dbassignment_testcheckbox.php"><input type="checkbox" name="checkbox[]" id="checkbox" value="<?php echo $rw["id"]; ?></form>' . "ID: ". $rw[0]. "- Name: ". $rw[1]. "- Phone Number: ". $rw[2]. "<br>";
?>

<br>
<fieldset>
<form method="POST" action="dbassignment_testcheckbox.php" name="createUser">
    
        <label for="name">Insert new name : </label>
        <input type="text" name= "name" id="name">

        <label for="number">Insert new phone number : </label>
        <input type="text" name="number" id="number">


        <input type="submit" name="create" value="Insert"><br><br>

    
        <label for="delete">Delete row number : </label>
        <input type="number" name= "id" id="delete">
        <input type="submit" name="delete" value="Delete">
</form>
</fieldset>
<?php   

?>

</body>
</html>

謝謝你。

就刪除過程而言,您的代碼沒有多大意義。

您似乎同時有兩個並行進程,但其中只有一個會做任何事情。 您需要完全刪除有關按 ID 刪除的位,然后還確保復選框是刪除表單的 output,而不是單獨的、單獨的、不相關的 forms。 您一次只能提交一個 HTML 表單,並且要提交的字段必須在該表單內(或在 HTML5 中,通過屬性與表單關聯)。

您還需要擺脫處理單 ID 刪除過程的 PHP 表單處理位,因為它會阻止復選框處理代碼由於elseif邏輯而運行。

從邏輯上講,將插入和刪除數據放在單獨的 forms 中也是有意義的,然后您只提交每個過程實際需要的內容,並且數據驗證等沒有問題。

更改您的表單代碼如下:

<?php
$conn= mysqli_connect("localhost","root","" );
mysqli_select_db($conn, "phonebook_assignement");

$result = mysqli_query($conn, "SELECT * FROM contacts");
$checkboxes = "";

while ($rw=mysqli_fetch_row($result))
  $checkboxes .= '<input type="checkbox" name="checkbox[]" id="checkbox" value="<?php echo $rw["id"]; ?>'."ID: ".$rw[0]."- Name: ". $rw[1]."- Phone Number: ".$rw[2]."<br>";
}
?>
<form method="POST" action="dbassignment_testcheckbox.php">
  <label for="name">Insert new name : </label>
  <input type="text" name= "name" id="name">
  <label for="number">Insert new phone number : </label>
  <input type="text" name="number" id="number">
  <input type="submit" name="create" value="Insert"><br><br>
</form>

<form method="POST" action="dbassignment_testcheckbox.php">
  <label for="delete">Delete row numbers: </label>
  <?php
  echo $checkboxes;
  ?>
  <input type="submit" name="delete" value="Delete">
</form>

然后還刪除以elseif (isset($_POST["delete"])){開頭的第一個代碼塊,以及其中的所有內容。


PS 您需要緊急檢查您編寫 SQL 查詢的方式,根據我上面的評論,並學習使用准備好的語句和參數,以便以安全可靠的方式將用戶輸入包含到您的查詢中。

暫無
暫無

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

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