当前位置: 首页 > 知识库问答 >
问题:

使用php将表单数据附加到json文件

徐皓君
2023-03-14

这比我找到的或者我自己能想到的其他答案要具体一点。

我的json文件完全包含

[ "box", "tube" ]

不多也不少。使用这种格式的json数据,我可以得到所需的确切结果。

我想做的是能够使用PHP向json文件追加更多内容。我见过:

<?php
    session_start();
    if(isset($_POST['add'])){
        $data = file_get_contents('members.json');
        $data_array = json_decode($data);
        //data in our POST
        $input = array(
            'id' => $_POST['id'],
            'firstname' => $_POST['firstname'],
            'lastname' => $_POST['lastname'],
            'address' => $_POST['address'],
            'gender' => $_POST['gender']
        );
        //append the POST data
        $data_array[] = $input;
        //return to json and put contents to our file
        $data_array = json_encode($data_array, JSON_PRETTY_PRINT);
        file_put_contents('members.json', $data_array);
        $_SESSION['message'] = 'Data successfully appended';
    }
    else{
        $_SESSION['message'] = 'Fill up add form first';
    }
    header('location:index.php');
?>

我的问题是,我不明白如何在我的示例中使用这个示例,因为我的json数据没有为其单个数组使用键。我是否必须放弃并找到一种使用命名键来获得我想要的结果的方法,或者有没有一种方法可以让我的json数据保持我想要的格式,并且能够向其中添加更多数据?

共有3个答案

杨研
2023-03-14

要添加到RiggsFolly answer,只需创建一个JSON对象数组,并通过以下方式附加到该数组:

array_push($data_array, 'newDataToAdd');
file_put_contents('members.json', $data_array);
高展
2023-03-14

上面的代码意味着成员。json包含一个json数组——就像您想要的那样。它获取该数组,对其进行解码,创建一个新的复杂对象,将该对象分配给$input,然后将其附加到数组的末尾。

除了对象内,没有涉及任何键。幸运的是,该对象是您不需要的位。您可以将其替换为简单的字符串值,并将其附加到数组中:

$data = file_get_contents('members.json');
$data_array = json_decode($data); 
$input = $_POST["newvalue"]; //replace the complex object with a single value
$data_array[] = $input;

...等等。

在我的示例中,$\u POST[“newvalue”]将包含一个从浏览器中名为“newvalue”的文本字段发回的字符串。

这是一个有效的演示(使用硬编码值而不是文件名和POST值,但它演示了原理):http://sandbox.onlinephpfunctions.com/code/68456544d8004b941f7d6603f64de6e0abf02d4e

山寒
2023-03-14

如果你真的相信这就是你想要的,那么这对你有好处吗

<?php
    session_start();
    if(isset($_POST['add'])){
        $data = file_get_contents('members.json');
        $data_array = json_decode($data);
        //data in our POST

        $data_array[] = $_POST['id'];
        $data_array[] = $_POST['firstname'];
        $data_array[] = $_POST['lastname'];
        $data_array[] = $_POST['address'];
        $data_array[] = $_POST['gender'];

        $data_array = json_encode($data_array, JSON_PRETTY_PRINT);

        file_put_contents('members.json', $data_array);
        $_SESSION['message'] = 'Data successfully appended';
    }
    else{
        $_SESSION['message'] = 'Fill up add form first';
    }
    header('location:index.php');
?>

假设你想要像这样的_POST美元的所有数据项,你可以稍微性感一点。

<?php
    session_start();
    if(isset($_POST['add'])){
        $data = file_get_contents('members.json');
        $data_array = json_decode($data);
        //data in our POST

        foreach ($_POST as $v) {
            $data_array[] = $v;
        }

        $data_array = json_encode($data_array, JSON_PRETTY_PRINT);

        file_put_contents('members.json', $data_array);
        $_SESSION['message'] = 'Data successfully appended';
    }
    else{
        $_SESSION['message'] = 'Fill up add form first';
    }
    header('location:index.php');
?>
 类似资料:
  • 问题内容: 我有这个.json文件: 这是我的PHP代码: 问题是,我不确定如何实现它。每次提交表单时,我都会在上面调用此代码,因此我需要ID递增,并且还要使用和保持有效的JSON结构,这可能吗? 问题答案:

  • 问题内容: 我正在尝试创建一个将条目添加到json文件的函数。最终,我想要一个看起来像 等。这就是我所拥有的: 这确实会创建一个条目,例如。但是,如果我再次使用此函数(使用不同的名称和网址),第一个函数将被覆盖。我需要怎么做才能将第二个(第三个…)条目附加到第一个? 编辑 :对此问题的第一个答案和评论已经指出了我在写块中未使用的明显事实。不过,我看不出该怎么做。例如,以下内容显然不会起作用: 问题

  • 问题内容: 我将如何继续追加数据?我有这个: 我想向它添加另一个对象,例如: 这是我使用的代码: 我真的不知道如何继续添加它,但是也许其他人知道吗? 问题答案: 您将无法使用文件追加操作来执行此操作。文件追加操作只能在末尾添加文本,而不能在中间插入文本。这使得不可能使用file-append来保持JSON有效。 我可以想到两种选择: 将整个文件读入一个对象,添加您的对象,然后重写整个文件(性能不佳

  • 我正在使用下面的代码。然而,当我运行代码时,我想在同一个TXT文件中一个接一个地添加新的XML。这是否可以使用JDOM。请帮帮我。。 xmlOutput。输出(文档,新FileWriter(“c:\updated.txt”));是否需要修改?

  • 问题内容: 如何将表单数据保存在文件或本地db(也许使用AJAX)中,该文件或数据通过表单操作将数据发送到外部db? 我的表单的源代码在这里:http : //jsbin.com/ojUjEKa/1/edit 我应该对代码进行哪些更改(如果有)? 对。因此,我能够使用AJAX将数据存储到localStorage中,并希望将存储的数据发送到名为backend.php的文件中。这是我的html文件:

  • 问题内容: 该阿帕奇共享的I /函数O覆盖以前的文本文件。我想将数据附加到我的文件中。有什么我可以使用Commons I / O的方法吗?我可以使用Java的normal来做到这一点,但我对使用Commons I / O的情况感到好奇。 问题答案: 它已在Apache IO的2.1版本中实现。要将字符串追加到文件,只需在函数中传递 true 作为附加参数即可: FileUtils.writeStr