1

我有一些我手动更新的 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

4

2 回答 2

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

于 2013-06-03T02:20:29.837 回答
0

像 Backbone.js 这样的几个库提供了有用的方法来做到这一点。查看这个问题的答案(使用 Backbone.js 将表单输入序列化为 JSON),看看这是否适合您的需求。

也就是说,您是否考虑过正常发布表单,然后在 PHP 函数中将其保存到数据库中?除非您出于某种原因需要将其作为字符串化 JSON 放入数据库(通常不推荐),否则您可以继续通过正常的 INSERT 调用将数据保存到 MySQL 数据库中。(见本教程: http: //php.about.com/od/phpbasics/ss/mysql_files.htm

于 2013-06-03T02:23:07.833 回答