Php 如何通过复选框删除多个MySQL条目?

Php 如何通过复选框删除多个MySQL条目?,php,ajax,checkbox,sql-delete,Php,Ajax,Checkbox,Sql Delete,在我的应用程序中,我在一个表中显示数据库内容。对于显示的每一行,我在行的末尾添加一个复选框: echo '<td><input type="checkbox" name="ticked[]"></td>'; echo'; 当用户检查了许多想要删除条目的框时,他们点击这个删除按钮(前端是Zurb Foundation框架): 按下此按钮时,将触发deleteUrl ajax功能: function deleteUrl(str) { doc

在我的应用程序中,我在一个表中显示数据库内容。对于显示的每一行,我在行的末尾添加一个复选框:

echo '<td><input type="checkbox" name="ticked[]"></td>';
echo';
<>当用户检查了许多想要删除条目的框时,他们点击这个删除按钮(前端是Zurb Foundation框架):


按下此按钮时,将触发deleteUrl ajax功能:

function deleteUrl(str)
    {
    document.getElementById("content01").innerHTML="";
    if (str=="")
    {
    document.getElementById("content01").innerHTML="";
    return;
    } 
    if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
    }
    else
    {// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function()
    {
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("content01").innerHTML = xmlhttp.responseText;
    }
    }
    xmlhttp.open("GET","deleteUrl.php?deleteUrl="+str,true);
    xmlhttp.send();
    document.getElementById("content02").innerHTML = 'Your URL was successfully deleted!<br/><br/>';
    xmlhttp.onreadystatechange = urlRefresh;
    return;
    }
函数deleteUrl(str)
{
document.getElementById(“content01”).innerHTML=“”;
如果(str==“”)
{
document.getElementById(“content01”).innerHTML=“”;
返回;
} 
if(window.XMLHttpRequest)
{//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
其他的
{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
document.getElementById(“content01”).innerHTML=xmlhttp.responseText;
}
}
open(“GET”,“deleteUrl.php?deleteUrl=“+str,true”);
xmlhttp.send();
document.getElementById(“content02”).innerHTML='您的URL已成功删除!

; xmlhttp.onreadystatechange=urlRefresh; 返回; }
ajax函数将进程定向到我的deleteUrl.php文件:

<!--Include Database connections info-->
<?php include('config.php'); ?>

<?php

    $deleteUrl = $_GET ['$deleteUrl'];

    if(isset($_GET['delete']))  {
        if(is_array($_GET['url']))  {
            foreach($_GET['url'] as $id)    {
                $query = "DELETE FROM contact WHERE url=". $url;
                mysql_query($query)or die(mysql_error());    
            }
        }  
    }

mysql_close();

?>

到目前为止,整个过程没有出错。但是,在此过程中不会删除选中的条目

问题:要使用复选框使删除过程正常工作,我需要做什么

编辑代码:

function runDelete(str, id)

xmlhttp.open("GET","deleteUrl.php?deleteUrl="+str+"&ticked="+id,true);

<a href="#" class="button radius expand" id="deleteUrl" name="deleteUrl" onClick="runDelete('deleteUrl', id);return false;">Delete URL</a>

echo '<td><input type="checkbox" name="ticked[]" value="'.$row['id'].'"></td>';
函数runDelete(str,id)
open(“GET”、“deleteUrl.php?deleteUrl=“+str+”&ticked=“+id,true”);
回声';

科里,这只是建议,不是你问题的确切答案。您应该尝试在代码中进行一些更正,如下面的步骤

首先,您需要将值指定给复选框,如

echo '<td><input type="checkbox" name="ticked[]" value="'.$id.'"></td>';// $id it would different in your case
并相应地修改函数

function deleteUrl(str,checkboxvalue)
然后传递复选框值以删除url

xmlhttp.open("GET","deleteUrl.php?deleteUrl="+str+"&ticked="+checkboxvalue,true);

然后修改删除页面,根据您的复选框值(而不是url)删除记录,并确保您正在从ajax传递正确的值,并在删除页面上获得正确的值。

您可以尝试一下吗

第一步-在head标记中包含jquery url

第2步-在jquery url之后包含此代码

<script type="text/javascript">
   $(function(){

        $("#deleteUrl").click(function(){
            $('#content02').html('');
                var tickedItems = $('input:checkbox[name="ticked[]"]:checked')
                   .map(function() { return $(this).val() })
                   .get()
                   .join(",");

                   $.ajax({
                        type: "POST",
                        url: "deleteUrl.php",   
                        data: "ids=" + tickedItems,                                        
                        success: function(msg) {

                             $('#content02').html('Your URL was successfully deleted!');

                          }             

                    });

                    return false;
        });
    });

    </script>

$(函数(){
$(“#删除URL”)。单击(函数(){
$('#content02').html('');
var ticketItems=$('input:checkbox[name=“ticked[]”]:checked')
.map(函数(){return$(this.val()})
.get()
.加入(“,”);
$.ajax({
类型:“POST”,
url:“deleteUrl.php”,
数据:“ids=“+ticketItems,
成功:功能(msg){
$('#content02').html('您的URL已成功删除!');
}             
});
返回false;
});
});
第3步-在deleteUrl.php中替换此代码

   <!--Include Database connections info-->
    <?php include('config.php'); ?>

    <?php

        $deleteUrl = $_GET ['$deleteUrl'];

        if(isset($_POST['ids']))  {

           $idsArray = @explode(',', $_POST['ids']);               
                foreach($idsArray as $id)    {
                    $query = "DELETE FROM contact WHERE url='".$id."' ";
                    mysql_query($query)or die(mysql_error());    
                }

        }

    mysql_close();

    ?>

5步骤-添加此按钮以执行删除操作

<button class="button radius expand" id="deleteUrl" name="deleteUrl" >Delete URL</button>
删除URL

您应该先查看发布的内容。我将使用Mozilla FF和fireBug来查看请求和响应。正如我看到的代码,它不会发送数组进行删除。您只需向PHP发送“删除url”,感谢您的帮助。我可以看出我的代码哪里出了问题。关于“checkboxvalue”,我仍然有点困惑。我认为这意味着每行数据分配的复选框的值(在我的情况下,它将是我的主键,.$row['url'])。但是我不确定要用什么语法来实现这一点。是的,你是对的,但我建议你使用id而不是url,因为url可能有特殊字符,并且它们与db值不匹配。嗨,很抱歉,我很痛苦,但我仍然有麻烦。该进程正在运行,编辑后的代码没有错误(请参阅上面的原始文章,了解我当前的代码,以及您的建议),但没有删除任何内容。我编辑了DB表,现在有一个和ID,它是主键。再一次,很抱歉让你感到痛苦!Corey,我建议您完成这项工作,并在代码中添加jquery,因为您的代码仍然缺少很多东西。再看看这个,我尝试了这个方法,但不幸的是结果也是一样的。浏览器控制台中没有错误,但数据没有被删除。嗨,Chinnu R,我和一个朋友今天下午查看了这段代码,在做了一些小的更改后,我们使用了删除功能,并使用了复选框。谢谢你的助手!
   <!--Include Database connections info-->
    <?php include('config.php'); ?>

    <?php

        $deleteUrl = $_GET ['$deleteUrl'];

        if(isset($_POST['ids']))  {

           $idsArray = @explode(',', $_POST['ids']);               
                foreach($idsArray as $id)    {
                    $query = "DELETE FROM contact WHERE url='".$id."' ";
                    mysql_query($query)or die(mysql_error());    
                }

        }

    mysql_close();

    ?>
      <?php 
        echo '<td><input type="checkbox" name="ticked[]" value="'.$row['id'].'" ></td>';            
      ?>
<button class="button radius expand" id="deleteUrl" name="deleteUrl" >Delete URL</button>