如何将复选框附加到提交

时间:2015-11-12 19:00:26

标签: javascript php jquery forms checkbox

我在基于sql数据库中的行创建的页面上有未知数量的复选框输入。

复选框如下所示:

<input type="checkbox" class="deletefunc" value="<? echo $mid; ?>">

选中并提交复选框时,要根据$ mid

的值从数据库中删除一行。

复选框可以是松散的(不包含在任何表单中),也可以以自己的形式包含每个复选框(没有提交按钮)。但是,无法在一个表单中包含所有复选框。

原因是它显示在一个循环中,输出如下:

<tr>
<td><input type="checkbox" class="deletefunc" value="<? echo $mid; ?>"></td>
<td><input type="checkbox" class="star" value="1"> <!-- jquery/ajax onclick function --></td>
<td><a href></td>
<td><form name....><input type="submit" value="something"></form></td>
<tr>

所以我需要帮助理解的是,如何根据类名收集所有复选框,并将它们附加到提交按钮....

此外,我将如何编写循环函数,以便知道要执行多少次删除?我的意思是,我如何编写一个循环来获取未知数量的输入值。通常情况下,我知道有多少输入和名称是什么,所以它是为每个输入分配一个变量的问题....我从来没有用未知数量的输入做到这一点。

1 个答案:

答案 0 :(得分:1)

我会这样做:

HTML:

<input type="checkbox" class="deletefunc" value="<? echo $mid; ?>">
<button id="delete-them">Delete Them</button>

JS:

$(function() {
    $('#delete-them').on('click', function() {
        var data = $('.deletefunc').attr('name', 'delete[]').serialize();
        $.ajax('delete-them.php', { 
            method: 'POST',
            data: data, 
            success: function() {
                alert('deleted!');
            }
         });
     });
});

PHP:

<?php
    $ids = $_POST['delete'];
    $params = array_fill(0, count($ids), "?");
    $sql = "DELETE FROM some_table WHERE id IN (" . implode(",", $params) . ")";
    //DELETE FROM some_table WHERE id IN(?,?,?,?);
    $pdo = new PDO('mysql:host=localhost;dbname=mydb', 'user', 'pass');
    $stmt = $pdo->prepare($sql);
    $stmt->execute($ids);
?>

所以我们基本上听一下我们的按钮,当它发生时,我们设置名称(最后用[],所以它变成一个数组),用于我们关心的所有类的项目,因此,当我们序列化这些项目时,我们知道如何在PHP中引用它。

然后我们将这些数据发送到服务器,在那里我们读取我们刚刚发送的数组,查看有多少数据,然后创建一个查询来删除这些项目。