我的PHP文件有问题。我想将数据从我的HTML表单保存到外部JSON文件" data.json"。当我触发按钮保存它时,它会返回一切正常并添加数据的消息。不幸的是,当我检查我的data.json文件时,它包含null而不是表单中的数据。这是我的代码:
HTML:
<form class="form form-group" action="save.php" method="POST">
<label class="control-label" for="focusedInput">Nazwa knajpy</label>
<input name="name" class="input form-control" id="focusedInput" type="text" value="Wpisz nazwę knajpy">
<label class="control-label" for="focusedInput">Kategoria knajpy</label>
<input name="category" class="input form-control" id="focusedInput" type="text" value="Bar/restauracja">
<label class="control-label" for="focusedInput">Adres</label>
<input name="addres" class="input form-control" id="focusedInput" type="text" value="Wpisz adres knajpy">
<label class="control-label" for="focusedInput">Nazwa zdjęcia</label>
<input name="img" class="input form-control" id="focusedInput" type="text" value="Wpisz nazwę zdjęcia jpg">
<label class="control-label" for="focusedInput">Cena</label>
<input name="price" class="input form-control" id="focusedInput" type="text" value="Wpisz cenę piwa">
<input type="submit" class="btn btn-primary" value="Dodaj knajpę">
</form>
save.php:
<?php
$myFile = "data/data.json";
$arr_data = array(); // create empty array
try
{
//Get form data
$formdata = array(
'name'=> $_POST['name'],
'category'=> $_POST['category'],
'address'=>$_POST['address'],
'img'=> $_POST['img'],
'price'=> $_POST['price']
);
//Get data from existing json file
$jsondata = file_get_contents($myFile);
// converts json data into array
$arr_data = json_decode($jsondata, true);
// Push user data to array
array_push($arr_data,$formdata);
//Convert updated array to JSON
$jsondata = json_encode($arr_data, JSON_PRETTY_PRINT);
//write json data into data.json file
if(file_put_contents($myFile, $jsondata)) {
echo 'Data successfully saved';
}
else
echo "error";
}
catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
?>
感谢您的帮助!
答案 0 :(得分:4)
此行可能会导致问题:$arr_data = json_decode($jsondata, true);
在开始使用之前,您应该确保它不是空的。
您可以添加以下支票:$arr_data = !empty($jsondata) ? json_decode($jsondata, true) : array();
您可能希望在此之后再执行一次检查,以确保您拥有预期的阵列。