2016-06-29 15 views
1

json、php、javascriptでim new。フォームデータをjsonファイルに保存したい。私はhtmlとjavascriptの両方を使用してフォームを作成し、phpをポストするajaxリクエストを作成しました。私のPHPファイルで私はファイルにそれを書くことを計画しています。今では私のコードは動作しますが、私はそれをjson配列にしたいと思います。これは今私が持っているものです。json配列を作成してファイルに書き込む

{ 
"Brand": "Ferrari", 
"Model": "458 Italia", 
"Year": "2010 - 2015", 
"body": "2-seat Berlinetta, 2-seat Spider", 
"engine": "4.5L Ferrari F136F V8", 
"power": "562bhp @9000rpm", 
"torque": "540nm @6000rpm", 
"transmission": "7-speed dual clutch", 
"topSpeed": "325kph", 
"acceleration": "3.3 sec" 
} 

しかし、私はこのようにそれをやってみたいです。

{ 
"cars": [ 
    "Brand": "Ferrari", 
    "Model": "458 Italia", 
    "Year": "2010 - 2015", 
    "body": "2-seat Berlinetta, 2-seat Spider", 
    "engine": "4.5L Ferrari F136F V8", 
    "power": "562bhp @9000rpm", 
    "torque": "540nm @6000rpm", 
    "transmission": "7-speed dual clutch", 
    "topSpeed": "325kph", 
    "acceleration": "3.3 sec"] 
} 

私は私のPHPファイルで行う必要がありますか?どのような方法で私はそれを行う必要がありますか?あなたは私は.txtファイルを使用しています見ることができるように、これは私のPHPファイル

<?php 
$json = $_POST['json']; 
$info = json_encode($json, JSON_PRETTY_PRINT); 

$file = fopen('cars.txt', 'a'); 
fwrite($file, "\n". $info); 
fclose($file); 
?> 

と最後の質問としてあることを通知するために、私はそれがファイルを.jsonすることができますか?それは何かを変えますか?皆さんありがとうございました。何をしたい

+1

ほとんどがベースのデータベースの代わりに、独自のファイルをロールに格納します1 – charlietfl

+0

* cars.txt *ファイルの目的は何ですか?どのように使用するかを示すことで、良い解決策を見出すのに役立つかもしれません。別のJSONを追加すると、完成したファイルは有効なJSONではなくなります。したがって、毎回同じファイルに書き込むことは、有用な結果をもたらさないようです。 – trincot

+0

作成しようとしているJSONが有効ではないと思います。 –

答えて

1

あなたが使用する必要があります。また、json_decode

<?php 
    $json = $_POST["json"]; 
    $decode = json_decode($json); 

    if (!$decode) { 
     exit(); // invalid JSON. 
    } 

    $final = array(
     "cars" => $decode 
    ); 

    file_put_contents("filename.json", json_encode($final, JSON_PRETTY_PRINT)); 
?> 
+0

私はこれを試したときに何も変わっていません。あなたは理由を推測できますか?私のjavascriptコードはjsonの作成に苦労していますか? –

0

はprobabblyこれです:

<?php 
function read_cars_from_file_and_decode($file) { 
    // write a function that reads the content of the file 
    // and writes it in decoded form into $cars 

    if (!$cars) { 
     $cars = array('cars' => array()) 
    } 
    return $cars 
} 

// depending on the structure of the json POST variable you might 
// need to decode $_POST['json'] as user123123123 pointed out 
$new_car = $_POST['json']; 

// read existing cars from file by calling the function defined above 
$file_name = 'cars.json'; 
$cars = read_cars_from_file_and_decode($file_name) 

// append the new car to the array 
$cars['car'][] = $new_car; 

// write $cars to file again. This needs to be improved to make sure 
// the file is completely overwritten. But I leave that to you. 
// append definitly doesn't work here so I changed that already. 
$info = json_encode($cars, JSON_PRETTY_PRINT); 

$file = fopen($file_name, 'w'); 
fwrite($file, "\n". $info); 
fclose($file); 
?> 

の$ jsonの変数は、内部の車の列を持つという名前の配列です。あなたは1台の車を送るので、我々は単に車をアレイに入れます。

.jsonファイルも基本的にテキストファイルです。だから、それをjsonファイルに変更することができます。

EDIT:コードサンプルを編集して、ファイル内の既存の車に車を追加しました。この場合

+0

これはほぼ似ていますが、私がリクエストを送るたびに、それを「car」:[]部分に追加したいのです。私は何を意味するのですか? –

+0

私の答えにそれを加えました。書き込みプロセスのための関数を作成するような改良も可能です。また、ファイルの代わりにデータベースを考慮する必要があります(ファイルベースのデータベースもあります)。それはあなたに多くのトラブルを避け、多くのスピードをもたらすでしょう。これが進んでいるところでは、まだ車の削除、車の編集を書き留めておかなければならず、車のファイルが成長し始めるとスピードの問題に直面します。あなたが変更を加えたり、1台の車を追加したり削除したりするたびに、ファイルを読み書きする必要があります。 – TehSphinX

関連する問題