在按钮上单击更新具有用户标识的行和列

时间:2014-04-08 19:32:46

标签: php jquery mysql ajax

我建立了一个清单系统,管理人员可以在其中创建产品清单,员工在完成这些产品时需要能够签署这些产品。创建时,每种产品或材料都会附加到修订号。你可以看到它的布局如下。 Imgur

http://i.imgur.com/MjSc4sA.jpg

因此,当用户点击签收时,它会在那里附加他们的名字并更新表格。

表格结构:

Imgur

我的表单看起来像这样(我使用twig模板引擎)

 {% for item in component %}

    <tr>
        <td>{{ item.wo_num_and_date }}</td>
        <td>{{ item.comp_name_and_number }}</td>
        <td>{{ item.finish_sizes }}</td>
        <td>{{ item.material }}</td>
        <td>{{ item.total_num_pieces }}</td>
        <td>{{ item.workorder_num_one }}</td>
        <td>{{ item.notes_one }}</td>
        <td id='signoff_userone'><input type='button' id='signoff_user_one' data-rowid={{ item.id }} value='Signoff' /> {{ item.signoff_user_one.firstname }} {{ item.signoff_user_one.lastname }}</td>
        <td>{{ item.workorder_num_two }}</td>
        <td>{{ item.notes_two }}</td>
        <td><input type='button' id='signoff_user_two' value='Signoff' /> {{ item.signoff_user_two.firstname }} {{ item.signoff_user_two.lastname }}</td>
        <td>{{ item.workorder_num_three }}</td>
        <td>{{ item.notes_three }}</td>
        <td><input type='button' id='signoff_user_three' value='Signoff' /> {{ item.signoff_user_three.firstname }} {{ item.signoff_user_three.lastname }}</td>
    </tr>

    {% endfor %}
  

data-rowid = {{item.id}}

显示该特定行的ID。所以每一行都有自己的id。

我有一个看起来像这样的脚本,如果我使用jQuery + AJAX动态注销并且我使用此更新语句,我认为我需要调用它。

$sql = "UPDATE checklist_component_stock SET signoff_user_one = $user_id WHERE id = " . $row['id'];
mysqli_query($dbc3, $sql);

我将如何使用jQuery + AJAX进行此操作?

我正在玩弄并尝试过类似的东西,但显然它不起作用,可能非常错误。

  $('#signoff_user_one').click(function(){
        $.post('phplib/job_checklist_signoff.php', { rowid: {{ item.id }} }, function(data){
            console.log(data);
            $('#signoff_userone').append("<li>" + data.user.name + " (" + data.date + ")</li>");
        }, 'json');
    });

job_checklist_signoff.php

<?php
    require_once('../includes/config.php');

    $user = getuserinfo($loggedin_id);
    $row_id = mysqli_escape_string($dbc3, $_POST['rowid']);

    $sql = "UPDATE checklist_component_stock SET signoff_user_one = $user WHERE id = " . $row_id;
    mysqli_query($dbc3, $sql);


    $ret = array('rowid' => $row_id, 'user' => $user, 'date' => date('M d, Y'));
    echo json_encode($ret);
?>

2 个答案:

答案 0 :(得分:1)

// Assuming "tableElement" is the id of the table owning those rows
// This will handle clicks on any button having an id starting with "signoff_user_"
$('#tableElement').on('click', 'input[id^="signoff_user_"]', function (e) {
    var $t = $(this);
    $.ajax({
        type: "POST",
        url: "phplib/job_checklist_signoff.php",
        data: {
            rowid: $t.data('rowid')
        },
        success: function (data) {
            console.log(data);
            var list = $t.siblings('ul');
            if (!list.length) {
                list = $t.after($('<ul>')).next();
            }
            list.append("<li>" + data.user.name + " (" + data.date + ")</li>");
        },
        dataType: 'json'
    });
});
没有ajax调用的

jsfiddle here

答案 1 :(得分:0)

$.ajax({

    url: "phplib/job_checklist_signoff.php",
    type: "POST",
    data: "rowid={{item.id}}"

}).done(function(response){

       console.log(response);

});

现在你所要做的就是确保在“phplib / job_checklist_signoff.php”中回到那里,你实际上将$_POST['rowid']处理到查询中,而不是$row

在MySQL语句通过报告回复给你之后,根据UPDATE语句的失败/成功打印任何你想要的东西会很好。您在php文件中打印/回显的所有内容都将通过我登录到控制台的response变量传递到JS中。您可以利用它并通知用户他的行为。