我想通过复选框删除数据库中的多行我有“全部检查”的工作脚本但是当我想删除一两个时,没有任何事情发生。
的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.";
}
}}
所以它的工作是检查所有,但是当我检查一个或两个对象时,没有任何事情发生,也许有人可以提供帮助?
答案 0 :(得分:1)
<强>的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.")" );
}
?>
看看有多简单:)不是吗?