У меня есть код PHP и JSON, как показано ниже:
PHP Код:
<?php if (!empty($_POST) && isset($_POST['savechanges']) && $_POST['savechanges'] == 1 && isset($_SESSION['pageadmin'])) {
$output = array();
$output['en_desc']=$_POST['en_desc'];
$output['code']=$_POST['code'];
$fp = fopen('../feeds/ptp-ess_landing_scommittees.json', 'w');
fwrite($fp, json_encode($output));
fclose($fp);
}
if(file_exists('../feeds/ptp-ess_landing_scommittees.json')){
$data = json_decode(file_get_contents('../feeds/ptp-ess_landing_scommittees.json'));
}
?>
<?php if($data) { ?>
<form method="post" id="myform" style="text-align:left;">
<input type="hidden" id="savechanges" name="savechanges" value="1">
<div style="text-align:center; margin-right:9px; margin-bottom:24.703px;">
<button type="submit">Save</button>
</div>
<?php foreach ($data->code as $key => $value) { ?>
<div class="house-senate-committee" style="text-align:center; margin-top:15px;">
<button type="button" onclick="removeRow(this)" style="margin-right:10px;">Delete</button>
<input type="text" name="code[]" style="margin-right:10px;" value="<?= $data->code[$key] ?>">
<input type="text" name="en_desc[]" value="<?= $data->en_desc[$key] ?>">
</div>
<?php } ?>
</form>
<?php } else { echo 'Cannot read JSON settings file'; }?>
JSON :
{"code":["AEFA","AGFO"], "en_desc":["Foreign Affairs and International Trade","Agriculture and Forestry"]}
Следующий код DOM генерируется с помощью приведенного выше кода PHP / JSON:
DOM (HTML):
<div class="house-senate-committee" style="text-align:center; margin-top:15px;">
<button type="button" onclick="removeRow(this)" style="margin-right:10px;">Delete</button>
<input type="text" name="code[]" style="margin-right:10px;" value="AEFA">
<input type="text" name="en_desc[]" value="Foreign Affairs and International Trade">
</div>
<div class="house-senate-committee" style="text-align:center; margin-top:15px;">
<button type="button" onclick="removeRow(this)" style="margin-right:10px;">Delete</button>
<input type="text" name="code[]" style="margin-right:10px;" value="AGFO">
<input type="text" name="en_desc[]" value="Agriculture and Forestry">
</div>
Следующий код JS удаляет строку из DOM по нажатию кнопки удаления. При обновлении страницы удаленная строка возвращается снова, поскольку все отображается через JSON.
JS код:
<script>
function removeRow(el) {
el.parentNode.remove();
}
</script>
Описание проблемы:
Приведенный выше код JS удаляет строка (по нажатию кнопки удаления) из DOM, но при обновлении страницы все отображается снова.
Мне интересно, какой PHP код мне нужно добавить, чтобы он удалял значения из JSON при сохранении формы при удалении строки из DOM через JS.
Шаг 1: Пользователь удаляет строку из DOM по нажатию кнопки удаления.
Шаг 2: При сохранении формы и отрисовке страницы эта удаленная строка не должна присутствовать.
Я знаю, что должен использовать функцию unset для удаления значений из JSON, но я не уверен, как интегрировать ее в форму.
unset($data->code);
unset($data->en_desc);