2017-04-02 4 views
0

PHPファイルに問題があります。 HTMLフォームのデータを外部のJSONファイル "data.json"に保存します。ボタンを押して保存すると、すべてが正常でデータが追加されたというメッセージが返されます。 Unfortunetaly、私は私のdata.jsonファイルをチェックすると、フォームのデータの代わりにnullが含まれています。ここに私のコードは次のとおりです。PHPは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

デバッグを開始 - すべての変数をvar_dumpします。 –

答えて

4

この行は、おそらく問題を引き起こしている:$arr_data = json_decode($jsondata, true);

あなたはそれで作業を開始する前に、それは空ではありません確認してください。あなたはあなたが期待どおりに配列していることを確認するだけでなくその後別のチェックを実行することがあります$arr_data = !empty($jsondata) ? json_decode($jsondata, true) : array();

あなたのようなチェックを追加することができます。

+0

はい!できます。ありがとうございます:)私はあなたの答えを受け入れるよ –

関連する問題