使用jquery将多个复选框中的值添加到数据库中的同一行

时间:2013-02-15 18:10:24

标签: php javascript jquery mysql

我已经研究了2天,但尚未找到适合我的问题的解决方案。本质上我试图使用jQuery基于多个复选框按ID“链接”数据库行,但这里有点棘手:

背景

  • 我有一个数据库表(positions)显示为HTML表格(#ct),每行旁边都有复选框。
  • 一次最多可以检查四(4)行并且彼此“链接”(但不要担心可以检查的盒子数量限制)
  • 关联positions中的行应该在covered_positions中创建一个新行,其中列id(PK),linked_id1linked_id2,{{1} },linked_id3

已完成的工作:

  • 每个复选框的值已分配给linked_id4
  • 中的相应行id
  • 下拉选择框已经触发Javascript函数positions

我需要认为

  • 使用以下内容在 ctActions() 的复选框值中创建数组:

    ctActions()
  • 编码并将数据发送给PHP:

    var linked_ids = [];
    
    $("#ct input[type='checkbox']:checked").each(function() {
        linked_ids.push(this.value);
    });
    

  • 在我的 var linked_ids_json = JSON.stringify(linked_ids); $.post('link-positions.php', { linked_ids_json: linked_ids_json } );

    link-positions.php

但毕竟这一切都没有发生。我确信我的代码中有一些明显的错误,所以我想我会把它发布给一些更有经验的人。

更新

  • 修正// Get & explode array $array = json_decode($_POST['linked_ids_json']); // Test whether each value is set -- Not sure if needed $linked_id1 = (isset($array[0]) ? $array[0] : ""); $linked_id2 = (isset($array[1]) ? $array[1] : ""); $linked_id3 = (isset($array[2]) ? $array[2] : ""); $linked_id4 = (isset($array[3]) ? $array[3] : ""); include('../mysqli-connect.php'); $conn = dbConnect(); $sql = "INSERT INTO `covered_positions` ( linked_id1, linked_id2, linked_id3, linked_id4) VALUES (?, ?, ?, ?)"; $stmt = $conn->prepare($sql); $stmt->bind_param('iiii', $linked_id1, $linked_id2, $linked_id3, $linked_id4); $stmt->execute(); $conn->close(); $stmt->execute,但仍未解决问题。

3 个答案:

答案 0 :(得分:0)

检查FireBug是否成功完成AJAX请求,或者出现任何错误。

接下来,通过print_r($_POST);

检查您在服务器上获得的数据

考虑您的HTML就像

<form id="form1">
    <input class="cb" type="checkbox" value="a" name="cbTest[]" />
    <input class="cb" type="checkbox" value="b" name="cbTest[]" />
    <input class="cb" type="checkbox" value="c" name="cbTest[]" />
    <input class="cb" type="checkbox" value="d" name="cbTest[]" />
</form>

我建议您使用

获取选中的值
// if the form only contains checkboxes
var linked_ids_json = $('#form1').serialize();

// Or
var linked_ids_json = $('.cb').serialize();
$.ajax({
    type: 'post',
    url: 'link-positions.php',
    data: linked_ids_json,
    success: function () {
        // callback
    }
});

在PHP中使用,

$array = $_POST['linked_ids_json'];

您将能够访问$linked_id[0];

等值

答案 1 :(得分:0)

由OP解决。这最初被编入问题正文:

  

我发现link-positions.php文件位于错误的目录中!下面的代码工作正常。

答案 2 :(得分:0)

我设法解决了这个问题。代码工作正常,只是link-positions.php在错误的目录中。希望代码可以帮助其他人完成类似的任务。