Я пытаюсь обновить индивидуально загруженные файлы .json
в зависимости от того, какой вариант в <select>
выбран. Он загружает файл .json
, а затем обновляет индивидуальный файл до тех пор, пока я определяю $myFile
как конкретный файл .json
, например $myFile = "data/data.json";
Но когда я пытаюсь передать опцию select в качестве имени файла, ничего не сохраняется. Где я это испортил?
Вот выбор HTML:
<form action="/server/php/data/process.php" method="post">
<select class="ui mini fluid search dropdown" id="templateSelection" type="text" name="selectTemplate" onchange="loadTemplate()">
<option value="" selected="selected">Select Template</option>
<?php
foreach(glob(dirname(__FILE__) . '/server/php/data/*') as $filename){
$filename = basename($filename);
echo "<option value='" . $filename . "'>".$filename."</option>";
}
?>
</select>
</form>
Вот параметры, которые заполняются:
<option value="data.json">data.json</option>
<option value="data2.json">data2.json</option>
<option value="data3.json">data3.json</option>
И вот process.php:
<?php
//$myFile = "data/data.json";
$filename = $_POST['selectTemplate'];
$myFile = "data/" . $filename;
$arr_data = array(); // create empty array
try
{
//Get form data
$formdata = array(
'ID'=> $_POST['ID'],
'attributeName'=> $_POST['attributeName'],
'valueX'=> $_POST['valueX']
);
//Get data from existing json file
$jsondata = file_get_contents($myFile);
// converts json data into array
$arr_data = json_decode($jsondata, true);
$updateKey = null;
foreach ($arr_data as $k => $v) {
if ($v['ID'] == $formdata['ID']) {
$updateKey = $k;
}
}
if ($updateKey === null) {
array_push($arr_data,$formdata);
} else {
$arr_data[$updateKey] = $formdata;
}
$jsondata = json_encode($arr_data);
//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";
}
?>
EDIT: я отправляю его (с кнопкой отправки) через другую форму на той же странице с тем же действием. Эта другая форма позволяет мне изменить некоторые значения json, которые загружаются при выборе опции в первой форме. Вот как выглядит эта вторая форма:
<form class="ui form" action="server/php/process.php" method="POST" target="frame">
....
<input type="submit" value="Save">
</form>
Возможно, именно здесь и возникает проблема? Я решил, что подача на эту вторую форму подберет выбранную опцию в первой форме и сохранит опцию в переменной.