通过Ajax使用PHP MySQL更新可编辑:更新不同列的问题。

通过Ajax使用PHP MySQL更新可编辑:更新不同列的问题。,php,mysql,ajax,x-editable,Php,Mysql,Ajax,X Editable,我有多个数据库列,但为了得到两个有效的类别和产品,我现在只能使用两个 到目前为止,我可以更新category列,但我不确定如何实现我的php,因此它将考虑多个列 注意。我一次只能编辑一个数据库字段,这就是我的意图 下面是我的HTML/php的简化版本: echo '<td><span class="xedit" id="'.$propRow['id'].'">'.$propRow['category'].'</span></td>';

我有多个数据库列,但为了得到两个有效的类别和产品,我现在只能使用两个

到目前为止,我可以更新category列,但我不确定如何实现我的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中设置什么类型的条件才能使其正常工作?我玩弄过伊塞特和我的朋友!空空荡荡却没有多少运气


任何建议都将不胜感激。多谢各位

好吧,我想出了一个解决办法,虽然不是最漂亮的

首先,给每个列项一个单独的类,就像我刚刚使用.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>';
然后,获取每个类的值:

var valuesCat = $(".cat").val();
var valuesProd = $(".prod").val();
设置一个obj myObj,该对象每次都具有相同的id,但在本例中具有不同的第二个键:myObj.category和myObj.product

将其放入数据中:

最后,在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);
 }
无论如何都不是最优雅的,而且重复性很强,但现在已经完成了任务

任何关于如何重构的意见都是非常感谢的

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