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

时间:2014-05-01 22:49:54

标签: 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"> <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>

这是parameters.php,

    <?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"}

生成的json语法错误。如何将新的json元素添加到预先存在的json元素中,如何在没有以前的json元素时添加新的json元素?

1 个答案:

答案 0 :(得分:0)

您需要将文件中已存在的信息读入内存json_decode(),然后将新对象添加到对象数组json_encode(),并覆盖该文件。

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

目前,您的代码只会尝试将一系列json编码的对象添加到文件中,使其无法获得整个文件的有效JSON。

我想说如果你希望你的JSON表示能够显着增长,那么处理这个问题的方法效率很低。您可能想要考虑不同类型的持久性。