Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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 通过表单更新JSON?_Php_Javascript_Mysql_Ajax_Json - Fatal编程技术网

Php 通过表单更新JSON?

Php 通过表单更新JSON?,php,javascript,mysql,ajax,json,Php,Javascript,Mysql,Ajax,Json,我有一些手动更新的json,但由于数据是通过电子邮件发送给我的,所以我花在编写json上的时间越多,收到的数据就越多 是否有一种方法可以构建一个表单,该表单将接收一些数据(文本和上传),并将JSON写入/输出到文件或数据库中我尝试过使用Ajax、PHP、MySQL和其他工具进行研究,但运气不佳,请给出建议(给我指出正确的方向) 我的结构: { "FirstName": "John", "LastName": "Doe", "Photo": "http://Imag

我有一些手动更新的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字典用于音乐专辑,文件地址为

<?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
)的文件夹。

几个库(如Backbone.js)提供了有用的方法。查看此问题()的答案,看看这是否符合您的需要


也就是说,您是否考虑过正常发布表单,然后用PHP函数将其保存到数据库中?除非出于某种原因(通常不推荐)需要将其作为字符串化JSON放入数据库,否则您可以通过正常的INSERT调用将数据保存到MySQL数据库中。(请参阅本教程:)

如果您有一个数据库,为什么要将其保存为JSON格式?将每个表单字段保存到相应的数据库列中。但是,如果要保存到平面文件,只需将所有表单数据写入数组并将
json_encode()
写入该文件即可。您已经提供了在数据库中创建表所需的几乎所有字段。对于不断更新/增长的数据,数据库总是更好。将值存储在JSON或XML中时,最好将其保存在不会发生太大变化的静态数据中。@francisco.preller我如何构建表单将数据输入到数据库中,并且我需要JSON从该数据库输出,因为我的网站和我正在使用的移动应用程序依赖于该数据(JSON)您可以将PHP数组数据转换为JSON,如所选答案所示。您不需要检索数据,只需查询数据库,然后将结果转换为JSON。表单工作正常,但如何将上传的文件保存到服务器并输入到JSON,以及如何将JSON文件保存到服务器(但所有数据都需要收集到一个.JSON文件中)你是说多个用户将被放置在一个json中?这是可能的,但您是否尝试过数据库方法?