it does not work properly please help me to get the correct json file?
in particular when I inserted it in the site in php I got this array so the Json file creates it correctly
this is the first array I generate via submit of my form. this array I add it to the end of the Json file, but I get an unwanted result.
JavaScript
x
// CODE ---------------------------
$_arr_POST = array();
$_arr_POST = $_POST; // POST from FORM
foreach ($_arr_POST as $key => $element) {
$arr_index_POST[$key] = $element;
}
$data_path = "path/file.json";
$_GET_JSON = file_get_contents($data_path);
$_array_GET_Json = json_decode($_GET_JSON,true);
if (count($_array_GET_Json) != 0 ){
foreach ($_array_GET_Json as $key => $element) {
$_array_element_GET = $element;
}
$_json_PUT[] = array_merge ($_array_index_GET , $arr_index_POST);
} else {
$_json_PUT[] = $arr_index_POST;
}
file_put_contents($data_path, json_encode($_json_PUT));
get such a formatted array and that’s no good!
JavaScript
Array
(
[0] => Array
(
[id] => 1
[datetime] => 2021-08-05 05:11:34
[product] => farfalle pink
[code] => ff01pink
[company_name] => Rome Capitale
[status] => active
(
[0] => Array
(
[0] => Array
(
[id] => 2
[datetime] => 2021-08-05 05:11:34
[product] => farfalle pink
[code] => ff01pink
[company_name] => Rome Capitale
[status] => active
)
[id] => 3
[datetime] => 2021-08-05 05:11:34
[product] => farfalle pink
[code] => ff01pink
[company_name] => Rome Capitale
[status] => active
)
[id] => 0
[datetime] => 2021-08-05 05:11:34
[product] => farfalle pink
[code] => ff01pink
[company_name] => Rome Capitale
[status] => active
)
)
)
This is the result I have to get a simple json file like the one below
JavaScript
[
{
"id": "0",
"datetime": "2021-08-03 05:00:34",
"product": "farfalle pink",
"code": "ff01pink",
"company_name": "Rome Capitale",
"status": "active"
},
{
"id": "1",
"datetime": "2021-08-04 05:11:34",
"product": "farfalle blue",
"code": "ff01blue",
"company_name": "Rome Capitale",
"status": "active"
},
{
"id": "100",
"datetime": "2021-08-05 05:11:34",
"product": "farfalle white",
"code": "ff01white",
"company_name": "Rome Capitale",
"status": "active"
}
]
Advertisement
Answer
I’m not sure why you are over-complicating things in your code like that. If you just want to append the posted data you could use the following snippet
JavaScript
<?php
$file = "path/file.json";
if (!empty($_POST)) {
$data = file_exists($file) ? json_decode(file_get_contents($file), true) : [];
if (!$data) $data = []; // Test if json_decode returned false or null (due to an invalid json string)
$data[] = $_POST;
file_put_contents($file, json_encode($data));
}
I’d strongly suggest you to verify the submitted data first before saving/appending to the JSON file