对于此示例,我有一个HTML表,其中包含2行(可能更多)。中间列是可编辑的,HTML表中的每一行都是数据库中的不同列。当我编辑第1行并刷新页面时,第2行现在具有与第1行相同的值。我不希望这样。每行的用户ID(pk)相同。关于creating a new record的文档说这可以与现有版本一起使用,但对我没有帮助。我正在寻找尽可能多的帮助。

这是我桌子的图片:


如何获取每一行以保持其值而不更新其他所有行?

例如,如果我更新第1行中的列,则只希望更新第1行的列。

请帮忙!

这是我的代码:

HTML代码:

<td><a class="myeditable" data-name="fb_url"  data-type="text" data-pk="<?php echo ($userid);?>" title="Edit"><?php echo ($result['fb_url']);?></a></td>
<td><a class="myeditable" data-name="tw_url" data-type="text" data-pk="<?php echo ($userid);?>" title="Edit"><?php echo ($result['tw_url']);?></a></td>


Post.php代码

require("config.php");

$pk = $_POST['pk'];
$name = $_POST['name'];
$value = $_POST['value'];

    if(!empty($value)) {
            try // save user selection to the database
              {
                $stmt = $db->prepare("UPDATE social_preferences SET fb_url = :fburl, tw_url = :twurl WHERE user_id = :userID AND ");
                $stmt->bindParam(":userID", $pk, PDO::PARAM_INT);
                $stmt->bindParam(':twurl', $value);
                $stmt->bindParam(':fburl', $value);
                $stmt->execute();
               }  catch(PDOException $e) { echo 'Connection failed: ' . $e->getMessage(); }
    }else {
        echo 'No value...';
    }


JS代码:

$(document).ready(function() {
//toggle `popup` / `inline` mode
$.fn.editable.defaults.mode = 'inline';


    $('.myeditable').editable({
            url: 'post.php',
            ajaxOptions: {
                type: 'post',
            },
            success: function(data, config) {
                if(data && data.id) {
                     //set pk
                    $(this).editable('option', 'pk', data.id);
                }
            }
    });
});


当我在Chrome开发工具中检查“网络”标签时,会看到以下内容:
方法:开机自检
状态:302暂时移动

最佳答案

OP在谈论行,但实际上它是列。

$accepted_names = array('fb_url', 'tw_url');
if (in_array($_POST['name'], $accepted_names)) {
    if(!empty($_POST['value'])) {
        $value = $_POST['value'];
        $id = $_POST['pk'];
        try {
            $stmt = $db->prepare('UPDATE social_preferences SET ' . $_POST['name'] . ' = :value
                                  WHERE user_id = :id');
            $stmt->bindParam(':id', $id, PDO::PARAM_INT);
            $stmt->bindParam(':value',$value);
            $stmt->execute();
        }
        catch (PDOExeption $e) {
            echo json_encode(array('status' => 'failed', 'msg' => $e->getMessage()));
            exit;
        }
        echo json_encode(array('id' => $id, 'status' => 'oké', 'msg' => $value));
    }
    else {
         echo jsonencode(array('status' => 'failed', 'msg' => 'No value ....'));
    }
}
else {
    header($_SERVER['SERVER_PROTOCOL'] . ' 422 Unprocessable entity');
}

关于php - 一次更新1行,当对同一用户使用x-editable时,每行具有不同的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25942273/

10-12 05:16