【问题标题】:XEditable using PHP MySQL Update via Ajax: issue with updating different columns.XEditable using PHP MySQL Update via Ajax:更新不同列的问题。
【发布时间】:2015-02-10 21:22:17
【问题描述】:

我有多个数据库列,但现在坚持使用两个只是为了让两个工作(类别和产品)。

截至目前,我可以更新类别列,但我不确定如何实现我的 php,因此它将占多个列。

注意。我一次只能编辑一个数据库字段,这是我的意图。

这是我的 HTML/php 的简化版本:

    echo '<td><span class="xedit" id="'.$propRow['id'].'">'.$propRow['category'].'</span></td>';
    echo '<td><span class="xedit xedit-product" id="'.$propRow['id'].'">'.$propRow['product'].'</span></td>';
    echo "</tr>";
    $rows []= array(
        'id' => $propRow['id']
    );

这是我的 JS:

        var rowData = <?php echo json_encode($rows); ?>;
        for (i = 0; i < rowData.length; i++){
            var rd = rowData[i].id;

            jQuery(document).ready(function() {
                $('.xedit').editable({
                    tpl: '<input type="text" name="category" id="' + rd + '" class="test form-control input-sm" style="padding-right: 24px;">'
                });
                $(document).on('click','.editable-submit',function(){
                    var num = $(this).closest('td').children('span').attr('id');
                    $.fn.editable.defaults.mode = 'inline';
                    $.fn.editable.defaults.send = "always";
                    var values = $(".test").val();
                    var myObj = { id: num, category: values };
                    $.ajax({
                        url: 'post.php',
                        type: 'post',
                        data: myObj,
                        success: {}
                    }); 
                });
            });

        }

我的 post.php 文件在这里(我认为这就是问题所在。请不要评论 mysql_* 函数的用法):

<?php
    include '../config/database.php';
    $category = $_POST['category'];
    $product = $_POST['category'];
    $id = $_POST['id'];
    $query = "UPDATE " . $usoc_table . " SET category='" . $category . "', product='" . $product . "' WHERE id='" . $id . "';";
    mysql_query($query);
?>

我需要在 post.php 中设置什么类型的条件才能使其正常工作?我玩弄了 isset 和 !empty 但运气不佳。

感谢任何建议。谢谢你。

【问题讨论】:

    标签: php mysql ajax x-editable


    【解决方案1】:

    好吧,我想出了一个解决方案,虽然不是最漂亮的。

    首先,给每个列项一个单独的类,就像这样(在我只使用 .xedit 之前)。

    echo '<td><span class="xedit-category" id="'.$propRow['id'].'">'.$propRow['category'].'</span></td>';
    echo '<td><span class="xedit-product" id="'.$propRow['id'].'">'.$propRow['product'].'</span></td>';
    

    接下来,每个班级单独使用.edtiable({}),每个班级使用tpl。如您所见,每个人都有不同的name=

    $('.xedit-category').editable({
        tpl: '<input type="text" name="category" id="' + rd + '" class="cat form-control input-sm" style="padding-right: 24px;">'
    });
    $('.xedit-product').editable({
        tpl: '<input type="text" name="product" id="' + rd + '" class="prod form-control input-sm" style="padding-right: 24px;">'
    });
    

    然后,获取每个类的值:

    var valuesCat = $(".cat").val();
    var valuesProd = $(".prod").val();
    

    设置一个 obj myObj,它每次都具有相同的 id,但第二个键不同(在本例中为 myObj.categorymyObj.product

    var myObj = {};
    myObj.id = num;
    
    if ($("input").hasClass("prod")){
        myObj.product = valuesProd;
    }
    if ($("input").hasClass("cat")){
        myObj.category = valuesCat;
    }
    

    把它扔到data:

    $.ajax({
        url: 'post.php',
        type: 'post',
        data: myObj,
        success:...
    

    最后在 post.php 中,有两个独立的更新查询:

     if (isset($_POST['category'])) {
            $category = $_POST['category'];
            $id = $_POST['id'];
            $query = "UPDATE " . $usoc_table . " SET category='" . $category . "' WHERE id='" . $id . "';";
            mysql_query($query);
     }
    
     if (isset($_POST['product'])) {
            $product = $_POST['product'];
            $id = $_POST['id'];
            $query = "UPDATE " . $usoc_table . " SET product='" . $product . "' WHERE id='" . $id . "';";
            mysql_query($query);
     }
    

    无论如何都不是最优雅的并且相当重复,但现在完成了工作。

    非常感谢任何有关如何重构它的输入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-15
      • 1970-01-01
      • 2014-03-20
      • 2014-07-19
      • 1970-01-01
      • 2014-06-15
      • 2014-07-26
      相关资源
      最近更新 更多