Php 使用html表单创建和更新json信息
我有一个简单的html表单,它调用php脚本来创建或更新包含json脚本的文件 我的html代码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
<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"}