Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用html表单创建和更新json信息_Php_Html_Json - Fatal编程技术网

Php 使用html表单创建和更新json信息

Php 使用html表单创建和更新json信息,php,html,json,Php,Html,Json,我有一个简单的html表单,它调用php脚本来创建或更新包含json脚本的文件 我的html代码 <form name="inputs" method="post" action="parameters.php"> Provide template name: <input type="text" name="templatename"><br> Which type? <select name="type"> &l

我有一个简单的html表单,它调用php脚本来创建或更新包含json脚本的文件

我的html代码

<form name="inputs" method="post" action="parameters.php">
        Provide template name: <input type="text" name="templatename"><br>
        Which type? <select name="type"> <option value="abc">abc</option> <option value="def">def</option> <option value="ghi">ghi</option> </select><br>
        What name? <input type="text" name="name"><br>
        <input type="submit" name="Submit" value="submit">
</form>

由此产生的json语法是错误的。如何向先前存在的json元素添加新的json元素,以及在没有以前的json元素时如何添加新的json元素?

您需要将文件中已经存在的信息读入内存,
json\u decode()
it,然后将新对象添加到对象数组,
json\u encode()
it,并覆盖该文件

在这种情况下,您的数据结构可能是一个对象数组

目前,您的代码只尝试将一系列json编码的对象添加到文件中,从而使整个文件没有有效的json


我想说,如果您希望JSON表示显著增长,那么这是一种非常低效的处理方法。您可能需要考虑不同类型的持久性。

1。我已经更新了我的php代码,这次我得到了一个空的users.txt。2.虽然我不希望我的JSON表示会显著增长,但您能提出替代方案吗?@user2887201我关心的只是您拥有数千或数十万项的情况。您必须将它们全部从文件读入内存,反序列化,添加一个新项,序列化,然后写回文件。添加一个项目需要做很多工作。例如,如果您在数据库中有这些项,您只需一次添加一个项,然后根据需要从数据库序列化为JSON即可。您应该在原始问题中显示更新的代码
    <?php
            class Templates {
                    public $templatename = "";
                    public $type = "";
                    public $name = "";
            }

            $mytemplate = new Templates();
            $mytemplate->templatename = $_POST['templatename'];
            $mytemplate->type = $_POST['type'];
            $mytemplate->name = $_POST['name'];

            $data = json_encode($mytemplate);

            $templates = file_get_contents('users.txt');
            $templates = json_decode($templates);

            array_push($templates, $data);

            $fh = fopen("users.txt", "a");

            fwrite($fh, $templates);

            fclose($fh);
    ?>
{"templatename":"1","type":"abc","name":"abc123"}{"templatename":"2","type":"def","name":"def123"}