gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 23:22:31 25 4
gpt4 key购买 nike

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

背景:

  • 我有一个显示为 HTML 表 (#ct) 的数据库表 (positions),每行旁边都有复选框。
  • 一次最多可以检查四 (4) 行并相互“链接”(但不要担心可以检查的框数限制)
  • positions 链接行应该在 covered_positions 中创建一个新行,列为 id(PK),linked_id1, linked_id2, linked_id3, linked_id4

已经完成的事情:

  • 每个复选框已经已将其值分配给位置中的相应行id
  • 下拉选择框已经触发了 Javascript 函数 ctActions()

认为需要什么:

  • 使用如下方式在复选框值的 ctActions() 中创建一个数组:

    var linked_ids = [];

    $("#ct input[type='checkbox']:checked").each(function() {
    linked_ids.push(this.value);
    });
  • 编码并将数据发送到 PHP:

    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 修复为 $stmt->execute() 但仍未解决问题。

最佳答案

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

接下来,通过 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]; 这样的值

关于php - 使用 jquery 将多个复选框的值添加到数据库中的同一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14900778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com