I have a simple script that can store data in a json file. Every time you save the form it creates a new array. I just want to update goal and raised in the same array.
form:
JavaScript
x
<form action="process.php" method="POST">
Goal:<br>
<input type="text" name="goal">
<br><br/>
Raised:<br>
<input type="text" name="raised">
<br><br>
<input type="submit" value="Submit">
</form>
process.php
JavaScript
<?php
$myFile = "data.json";
$arr_data = array();
try
{
$formdata = array(
'goal'=> $_POST['goal'],
'raised'=> $_POST['raised']
);
$jsondata = file_get_contents($myFile);
$arr_data = json_decode($jsondata, true);
array_push($arr_data,$formdata);
$jsondata = json_encode($arr_data, JSON_PRETTY_PRINT);
if(file_put_contents($myFile, $jsondata)) {
echo 'Data successfully saved';
}
else
echo "error";
}
catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "n";
}
?>
Advertisement
Answer
array_push
appends. You want to replace existing, not add, right? So:
JavaScript
<?php
$myFile = "data.json";
try {
$arr_data = json_decode(file_get_contents($myFile), true);
// don't forget to validate first of course:
$arr_data['goal'] = $_POST['goal'];
$arr_data['raised'] = $_POST['raised'];
$jsondata = json_encode($arr_data, JSON_PRETTY_PRINT);