繁体   English   中英

使用PHP编辑JSON文件

[英]Edit JSON file using PHP

我正在尝试使用php编辑JSON文件,我已经设置了一个带有表单元素的ReactJS应用程序。

我的JSON如下

[
    {
        "id": 1,
        "Client": "client 1",
        "Project": "project 1",
        "StartDate": "2018\/11\/02 16:57:35",
        "CompletedDate": "",
        "projectUrl": "project-1"
    },
    {
        "id": 2,
        "Client": "client 2",
        "Project": "project 2",
        "StartDate": "2018\/11\/02 16:57:35",
        "CompletedDate": "",
        "projectUrl": "project-2"
    },
    {
        "id": 3,
        "Client": "client 3",
        "Project": "project 3",
        "StartDate": "2018\/11\/02 16:57:35",
        "CompletedDate": "",
        "projectUrl": "project-3"
    }
]

到目前为止,我已经有代码在文件末尾创建一个新的“项目”。 我的PHP如下

if ($_SERVER["REQUEST_METHOD"] == "POST")
{

    try {

        $clientName =  $_POST['clientName'];
        $ProjectName =  $_POST['projectName'];
        $url =  strtolower($_POST['url']);
        $date = date('Y/m/d H:i:s');


        $message = "";
        $url = '../json/projects.json';

        if( file_exists($url) )

        if(file_exists('../json/projects.json'))
        {
            $current_data = file_get_contents('../json/projects.json');  
            $array_data = json_decode($current_data, true);  
            $extra = array(  
                'id' => count($array_data) + 1, 
                'Client' => $clientName, 
                'Project' => $ProjectName, 
                'StartDate' => $date, 
                'CompletedDate' => "",
                'projectUrl' => $projectFileName + ".json"
            );  
            $array_data[] = $extra;  
            $final_data = json_encode($array_data, JSON_PRETTY_PRINT);  
            if(file_put_contents('../json/projects.json', $final_data))  
            {  
                 $message = "sent";  
            }  
            else  
            {
                $message = "notSent";
            }
        }
        else
        {
            $message = "jsonFileNotFound";
        }


        $response = $message;

    } catch (Exception $e) {
        $response = $e->getMessage();
    }

    echo $response;

}

我能弄清楚的是如何编辑,然后单击按钮,说出“ CompletedDate”值到今天的日期。

我的页面上有一个隐藏的输入字段,其中包含项目ID,所以我要帮助的是获取该ID,将其与JSON匹配,然后编辑与ID匹配的完成日期。

此PHP将使用ajax触发,因此我可以轻松传递ID。

使用与已使用的代码相似的代码,可以通过使用ID作为已解码JSON文件的索引来更新相关数据。 因为ID 1将是数组的[0]元素,所以用日期更新[$id-1]元素。

if ($_SERVER["REQUEST_METHOD"] == "POST")
{
    try {

        $id = 2;   // Fetch as appropriate
        $date = date('Y/m/d H:i:s');
        $url = '../json/projects.json';

        if( file_exists($url) )
        {
            $current_data = file_get_contents($url);
            $array_data = json_decode($current_data, true);
            $array_data[$id-1]['CompletedDate'] = $date;
            $final_data = json_encode($array_data, JSON_PRETTY_PRINT);
            if(file_put_contents($url, $final_data))
            {
                $message = "updated";
            }
            else
            {
                $message = "notUpdated";
            }
        }
        else
        {
            $message = "jsonFileNotFound";
        }


        $response = $message;

    } catch (Exception $e) {
        $response = $e->getMessage();
    }

    echo $response;

}

您可能需要调整一些位,尤其是如何获取ID( $_GET ?)以及所需的任何消息。

我还更新了代码,以更加一致地使用$url ,而不是在一些地方进行硬编码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM