一次更新来自多个输入的表

时间:2017-04-26 07:18:35

标签: php mysql

<input type='text' class='inputmode' data-id=7 value = 'sky'>
<input type='text' class='inputmode' data-id=5 value = 'earth'>
<input type='text' class='inputmode' data-id=3 value = 'sea'>

js

var a = $('.inputmode').eq(0).data('id');
var b = $('.inputmode').eq(0).val();
$.ajax({
    url: 'pro.php',
    type: 'post',
    data: {'a': a, 'b': b},
    success: function(data) {
        console.log(data);
    }
});

PHP

$sql = "update mods set mode = :mode where id = :id";
$stmt = $db->prepare($sql);
    $stmt->execute(array(
        ":id" => $_POST['a'],
        ":mode" => $_POST['b']
    ));

这适用于第一个.inputmode 目前我为每个人重复这个程序 有没有办法解决所有问题 - 立刻?

2 个答案:

答案 0 :(得分:1)

使用表格序列化方法:

<form name="frmData" id="frmData" method="post">

    <input type='text' class='inputmode' name="inputmode[7]" data-id=7 value = 'sky'>
    <input type='text' class='inputmode' name="inputmode[5]" data-id=5 value = 'earth'>
    <input type='text' class='inputmode' name="inputmode[3]" data-id=3 value = 'sea'>

</form>

在提交时,您可以按以下方式拨打您的ajax:

$.ajax({
    url: 'pro.php',
    type: 'post',
    data: $('#frmData').serialize(),
    success: function(data) {
        console.log(data);
    }
});

在Php中,您将获得inputmode数组使用该数组在数据库中更新。

答案 1 :(得分:1)

您的代码存在一些逻辑问题,

你有3个输入,并且总是将一个输入的值发送到php端。

所以功能上你的代码工作正常。

并得到你想要的东西,

1)首先你需要推送所有输入值
2)在php端迭代这些值,然后用每个值更新你的数据库。

以下是一个快速示例:

<ins>

在你的php端,你将在关键元素'data'下接收一个数组 - 我们在ajax初始化中设置 - 你将需要遍历这个数组并按如下方式执行你的查询:

var inputmode = $('.inputmode');
var dataObj = []; // you data array
inputmode.each(function (k, v) {
    var obj = {}; // your input data object
    obj['id'] = $(this).data('id');
    obj['value'] = $(this).val();
    dataObj.push(obj); // pushing every input data object to your parent data array
});

$.ajax({
    url: 'pro.php',
    type: 'post',
    data: {'data': dataObj},
    success: function(data) {
        console.log(data);
    }
});