[英]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.