PHP 增加特定的行值

标签 php ajax

我有一个名为 abFormStats.txt 的文件,目前看起来是这样的:

A|0
B|0

我有一个 AJAX 调用触发到具有当前“拆分”类型(A 或 B)的处理页面。我知道如何打开文件并写入文件,但我目前不确定如何根据使用的“拆分”来增加特定行的值。

这是我用来写入文件的代码,就像我说的那样,这只是覆盖了文件中当前的内容,这根本不是我想要的:

$fp = fopen('abFormStats.txt', 'c+');
flock($fp, LOCK_EX);

$count = (int)fread($fp, filesize('abFormStats.txt'));
ftruncate($fp, 0);
fseek($fp, 0);
fwrite($fp, $count + 1);

flock($fp, LOCK_UN);
fclose($fp);

不确定你们是否需要它,但这是当前的 AJAX 调用:

var split = 'A';
$.ajax({
    type: 'POST',
    url: "updateStats.php",
    data: {
        "splitType": split
    },
    success: function(result){
        console.log(result);
    }
});

最佳答案

这样的事情怎么样:

$filename = 'abFormStats.txt';
$lines = file($filename, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

foreach ($lines as &$line) {
    list($type, $count) = explode('|', $line, 2);

    if ($type == $_POST['splitType']) {
        $count++;
    }

    $line = "$type|$count";
}

if (file_put_contents($filename, implode("\n", $lines), LOCK_EX)) {
    // Success!
} else {
    // Error (lock, file permissions etc)
    http_response_code(503);
}

如何将失败发送回客户端取决于您(正文中的错误消息、HTTP 状态代码等),但如果您使用上述 HTTP 状态代码,则可以使用 jQuery 的成功/错误回调来区分.

关于PHP 增加特定的行值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32475087/

相关文章:

php - MYSQL&PHP : running an INSERT INTO SELECT query within a PHP while loop, 运行缓慢

c# - 如何创建向数据库提交信息的单页 ASP.NET 应用程序?

javascript - 同一域(localhost)上的XHR跨域错误

javascript - 如何确保我的 Google 图表数据在 Javascript 中从内存中删除?

php - 如何使用ajax和php在没有表单的情况下使用复选框将数据插入数据库

php - 未捕获的异常 'PDOException',消息为“SQLSTATE[HY000] [2002] 没有这样的文件或目录

php - 统计mysql表中的数据出现次数

PHP输出带有变量的字符串?

php - 将视频从网站后端上传到YouTube

javascript - 如何使用 Jquery 创建自动完成功能?