php - XEditable 使用 PHP MySQL 通过 Ajax 更新 : issue with updating different columns.

标签 php mysql ajax x-editable

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

到目前为止,我可以更新类别列,但我不确定如何实现我的 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 但运气不佳。

如有任何建议,我们将不胜感激。谢谢。

最佳答案

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

首先,为每个列项指定一个单独的类,如下所示(在我只使用 .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();

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

var myObj = {};
myObj.id = num;

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

将其放入数据中:

$.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);
 }

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

非常感谢任何有关如何重构此问题的意见。

关于php - XEditable 使用 PHP MySQL 通过 Ajax 更新 : issue with updating different columns.,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28442036/

相关文章:

php - PHP 5.4 之前使用 PHP_QUERY_RFC3986 的 HTTP 构建查询

php - 如何从多个表中选择数据

php - 如果我使用一个浏览器/ session 多次请求我的 Web 应用程序 (WAMP),为什么它会很慢?

c# - 如何使用C#连接mysql并获取json数据?

ajax - Wordpress - 将搜索字符串输入 AJAX 搜索字段时触发脚本?

php - ZEND 获取邮件正文

php - Symfony3 错误命名空间不包含任何映射实体

java - 使用 Mysql 的 Java Web 应用程序中的增补字符支持

javascript - 如何存储来自ajax请求的信息

ajax - Web 套接字会让 ajax/CORS 过时吗?