PHP将null保存到JSON文件

时间:2017-04-02 15:39:13

标签: php json forms

我的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";
   }

?>

感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

此行可能会导致问题:$arr_data = json_decode($jsondata, true);

在开始使用之前,您应该确保它不是空的。

您可以添加以下支票:$arr_data = !empty($jsondata) ? json_decode($jsondata, true) : array();

您可能希望在此之后再执行一次检查,以确保您拥有预期的阵列。