【问题标题】:How do I delete multiple MySQL entries via check boxes?如何通过复选框删除多个 MySQL 条目?
【发布时间】:2013-11-21 06:04:53
【问题描述】:

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

echo '<td><input type="checkbox" name="ticked[]"></td>';

当用户勾选了他们希望删除条目的许多框时,他们点击这个删除按钮(前端是 zurb 基础框架):

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

当这个按钮被按下时,会触发 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;
    }

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>';

【问题讨论】:

  • 您应该先看到发布的内容。我会使用 Mozilla FF 和 fireBug 来查看请求和响应。当我看到您的代码时,它不会发送要删除的数组。您只需发送到您的 PHP '删除 url'

标签: php ajax checkbox sql-delete


【解决方案1】:

你可以试试这个,

1 步骤 - 在 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>

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();

    ?>

4 步 - 将 id/属性行值分配给复选框

      <?php 
        echo '<td><input type="checkbox" name="ticked[]" value="'.$row['id'].'" ></td>';            
      ?>

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

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

【讨论】:

  • 我尝试了这种方法,不幸的是以同样的结果结束。浏览器控制台没有错误,但数据没有被删除。
  • 嗨 Chinnu R,我和一个朋友今天下午查看了这段代码,在做了一些小改动后,我们得到了使用复选框的删除功能。感谢您的助手!
【解决方案2】:

Corey,这只是建议,而不是您查询的确切答案。您应该尝试按照以下步骤对代码进行一些更正。

首先,您需要将值分配给复选框,例如

echo '<td><input type="checkbox" name="ticked[]" value="'.$id.'"></td>';// $id it would different in your case

比通过函数调用传递复选框值

onClick="deleteUrl('deleteUrl',checkboxvalue);

并相应地修改函数

function deleteUrl(str,checkboxvalue)

比传递复选框值删除url

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

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

【讨论】:

  • 感谢您的帮助。我可以看到我的代码哪里出错了。关于“复选框值”,我仍然有些困惑。我认为这意味着为每行数据分配的复选框的值(在我的情况下,它将是我的主键 . $row['url'] 。)。但是我不确定使用什么语法来实现这个。
  • 是的,你是对的,但我建议你使用 id 而不是 url,因为 url 可能有特殊字符并且它们与 db 值不匹配。
  • 您好,很抱歉让您感到痛苦,但我仍然遇到问题。该过程正在运行且编辑后的代码没有错误(请参阅上面的原始帖子以获取我当前的代码以及您的建议),但没有任何内容被删除。我编辑了数据库表,现在有主键 ID。再次抱歉,我很痛苦!
  • Corey,我建议你通过这个davidwalsh.name/animated-ajax-jquery 并在你的代码中添加 jquery,因为你的代码仍然缺少很多东西。也看看这个stackoverflow.com/questions/17324498/…
猜你喜欢
  • 2010-11-20
  • 2014-09-18
  • 2016-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-05
  • 2022-01-04
  • 1970-01-01
相关资源
最近更新 更多