gpt4 book ai didi

php - 通过复选框从数据库中删除多行

转载 作者:行者123 更新时间:2023-11-29 13:46:37 26 4
gpt4 key购买 nike

我想通过复选框从数据库中删除多行,我有“全选”的工作脚本,但是当我想删除一两行时,什么也没有发生。

JavaScript

<script type="text/javascript">
jQuery(function($) {
$("form input[id='check_all']").click(function() { // triggred check

var inputs = $("form input[type='checkbox']"); // get the checkbox

for(var i = 0; i < inputs.length; i++) { // count input tag in the form
var type = inputs[i].getAttribute("type"); // get the type attribute
if(type == "checkbox") {
if(this.checked) {
inputs[i].checked = true; // checked
} else {
inputs[i].checked = false; // unchecked
}
}
}
});

$("form input[id='submit']").click(function() { // triggred submit

var count_checked = $("[name='data[]']:checked").length; // count the checked
if(count_checked == 0) {
alert("Please select a comment(s) to delete.");
return false;
}
if(count_checked == 1) {
return confirm("Are you sure you want to delete these comment?");
} else {
return confirm("Are you sure you want to delete these comments?");
}
});
});
</script>
<script type="text/javascript">

$(document).ready(function(){
$('.submit').click(function(){
var checkValues = $('input[name=data[]]:checked').map(function()
{
return $(this).val();
}).get();

$.ajax({
url: 'resources/ajax/ajax_delete_comment.php',
type: 'post',
data: { data: checkValues },
success:function(data){

}
});
});
});

</script>

HTML/PHP

<form method="post" id="form">
Check All <input type="checkbox" id="check_all" value="">

Here im displaying record from database and <input name=\"data[]\" type=\"checkbox\" id=\"data\" value=" . $row['id'] . ">

<input name="submit" class="submit" type="submit" value="Delete" id="submit">
</form>

删除脚本

if(isset($_POST['data'])) {
$id_array = $_POST['data']; // return array
$id_count = count($_POST['data']); // count array

for($i=0; $i < $id_count; $i++) {
$id = $id_array[$i];
$sql = $db->query("DELETE FROM comments WHERE `id` = '$id'");
if ($sql)
{
echo "success";
}
else
{
echo "Failed to delete the comment.";
}
}}

所以它可以检查所有,但是当我检查一两个对象时,什么也没有发生,也许有人可以帮忙?

最佳答案

Javascript
既然你使用的是 jquery 有更好的方法:)

<script type="text/javascript">
var is_activate = true; // we will track which input button was clicked :)

jQuery(function($) {
$("#form input#check_all").change(function() {
var inputs = $("#form input[type='checkbox']");
if ( $(this).is(":checked") ) {
inputs.prop( "checked", true );
// inputs.attr( "checked", true ); // if its not working
}
else {
inputs.removeAttr( "checked" );
}
});

// Track clicked button
$("#form input[type=submit]").on("click",function(e) {
is_activate = ( $(this).hasClass("activate_btn") ) ? true : false;
});

$("#form").submit(function(e) {
e.preventDefault();
var string = ( is_activate ) ? 'activate' : 'delete';
var data = $(this).serialize();
var checked = $(this).find("input[name='data[]']:checked").length;
if ( checked == 0 ) {
alert( "Please select a comment(s) to "+string+"." );
return false;
}
var text = "Are you sure you want to "+string+" these comment"+( ( checked == 1 ) ? "?" : "s?" );
if ( confirm( text ) ) {
$.ajax({
url: 'resources/ajax/'+( ( is_activate ) ? 'ajax_activate_comment.php' : 'ajax_delete_comment.php' ),
type: 'post',
data: data,
success: function( data ) {

}
});
}
});
});
</script>

HTML

<form method="post" id="form">
<label>Check All</label>
<input type="checkbox" id="check_all" value="">

<label>Here im displaying record from database and</label>
<input name="data[]" type="checkbox" id="data1" value="1">
<input name="data[]" type="checkbox" id="data2" value="2">

<!-- Activate Button -->
<input class="activate_btn" type="submit" name="activate" value="Activate" id="submit">
<!-- Delete Button -->
<input class="delete_btn" type="submit" name="delete" value="Delete" id="submit">
</form>

PHP
单个查询就足够了:)

<?php
if ( isset( $_POST['data'] ) ) {
$id_array = $_POST['data'];
if ( !empty( $id_array ) ) {
$id_array = implode( ",", $_POST['data'] ); // dont forget to sanitize
$sql = $db->query( "DELETE FROM comments WHERE `id` IN (".$id_array.")" );
}
}
?>

请记住,在客户端完成这一切并不好。
您可以对单个文件执行 POST 请求,因为每个 input 按钮都有唯一的名称。
因此,在您的 PHP 代码中,您可以像这样找到单击了哪个按钮。

<?php
if ( isset( $_POST["activate"] ) ) {
$sql = $db->query( "UPDATE comments SET status = '1' WHERE `id` IN (".$id_array.")" );
}
else {
$sql = $db->query( "DELETE FROM comments WHERE `id` IN (".$id_array.")" );
}
?>

看起来多么简单:)不是吗?

关于php - 通过复选框从数据库中删除多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17324498/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com