我有一些json,我会手动更新,但随着数据通过电子邮件发送给我,数据越多,我花在写json上的时间就越多
有没有办法构建一个表单来获取一些数据(文本和上传),以及将JSON写入/输出到文件或数据库中? - 我尝试过使用Ajax,PHP,MySQL和其他没有运气的人,请指教(指出我正确的方向)
我的结构:
{
"FirstName": "John",
"LastName": "Doe",
"Photo": "http://ImageURL",
"PhoneNumber": [
{
"MobilePhone": "555-555-5555",
"Provider": "Verizon"
},
{
"HomePhone": "555-555-5555",
"Provider": "AT&T"
},
{
"WorkPhone": "555-555-5555",
"Provider": "SBC"
}
]
}
需要表格
名字:(文字输入)
姓氏:(文字输入)
照片:(文件上传)
(嵌套在“电话号码”下)
移动电话:(文字输入)
提供者:(文字输入)
家庭电话:(文字输入)
提供者:(文字输入)
工作电话:(文字输入)
提供者:(文字输入)
注意:这是虚拟数据,实际的JSON字典用于音乐专辑,文件的地址是http://www.godsgypsychristianchurch.net/music.json
答案 0 :(得分:2)
试试这个:
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
move_uploaded_file($_FILES["Photo"]["tmp_name"],"images/".$_POST['Photo']);
$filters=array(
"FirstName",
"LastName",
"Photo",
"MobilePhone",
"MobilePhoneProvider",
"HomePhone",
"HomePhoneProvider",
"WorkPhone",
"WorkPhoneProvider"
);
$final=array();
foreach ($filters as $filter) {
$final[$filter]=$_POST[$filter]?$_POST[$filter]:"";
}
$final["PhoneNumber"]=array(
array(
"MobilePhone"=>$final["MobilePhone"],
"Provider"=>$final["MobilePhoneProvider"],
),
array(
"HomePhone"=>$final["HomePhone"],
"Provider"=>$final["HomePhoneProvider"],
),
array(
"WorkPhone"=>$final["WorkPhone"],
"Provider"=>$final["WorkPhoneProvider"],
)
);
$unsets=array(
"MobilePhone",
"MobilePhoneProvider",
"HomePhone",
"HomePhoneProvider",
"WorkPhone",
"WorkPhoneProvider"
);
foreach ($unsets as $unset) {
unset($final[$unset]);
}
echo json_encode($final);
exit;
}
?><!DOCTYPE html>
<html>
<head>
<title>Contact</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
First Name: <input type="text" name="FirstName"><br>
Last Name: <input type="text" name="LastName"><br>
Photo: <input type="file" name="Photo"><br>
Mobile Phone: <input type="tel" name="MobilePhone"><br>
Mobile Phone Provider: <input type="text" name="MobilePhoneProvider"><br>
Home Phone: <input type="tel" name="HomePhone"><br>
Home Phone Provider: <input type="text" name="HomePhoneProvider"><br>
Work Phone: <input type="tel" name="WorkPhone"><br>
Work Phone Provider: <input type="text" name="WorkPhoneProvider"><br>
<input type="submit">
</form>
</body>
</html>
这只是一个起点,您需要进行图像检查和其他各种检查以确保用户输入有效。 (对于此测试,您应该创建一个名为images
)
答案 1 :(得分:0)
Backbone.js等几个库提供了有用的方法来完成此任务。查看此问题的答案(Serialize form inputs to JSON using Backbone.js),看看这是否适合您的需求。
那就是说,您是否考虑过正常POST表单,然后在PHP函数中将其保存到数据库中?除非您需要将其作为字符串化JSON放入数据库中,因为某些原因(通常不推荐),您可以继续通过正常的INSERT调用将数据保存到MySQL数据库。 (参见本教程:http://php.about.com/od/phpbasics/ss/mysql_files.htm)