[英]How to add item to list and delete item from list?
I have a problem with adding a new item via HTML form and PHP to a PHP file data.json
, after clicking submit
on my button, my table is reloaded but my item is not saved into JSON file, can somebody tell me why?
PHP:
$jsonData = file_get_contents("data.json");
$data = json_decode($jsonData, true);
function addToList() {
$file = "data.json";
$arr = array(
'id' => count($data) + 1,
'name' => $_GET['name'],
'price' => $_GET['price'],
'buyer' => $_GET['buyer']
);
$json_string = json_encode($arr);
file_put_contents($file, $json_string);
}
if(array_key_exists('button1', $_POST)) {
addToList();
}
HTML:
<form method="get">
<div id="form_page">
<div id="form_body">
<input id="name" type="text" Placeholder="Nazwa" name="name" required>
<input type="number" placeholder="Cena" name="price" required>
<input id="buyer" type="text" name="buyer" placeholder="Kupujący">
<input type="submit" value="Wyślij">
</div>
</div>
<div class="modal-footer">
<button type="button" name="button1" class="btn btn-secondary" data-dismiss="modal">Zamknij</button>
</div>
</form>
我还有一个问题,如何从 JSON 中删除(取消设置)项目?
谢谢你的帮助
您的 PHP 和 HTML 代码是否在同一个文件中?
您的 PHP 代码似乎“足够正确”,可以将某些内容写入data.json
文件。 这似乎表明您的 PHP 和 HTML 代码不在同一个文件中。 如果是这种情况,请更新您的 HTML <form>
表单并添加指向 PHP 文件/代码的action
属性。
此外,您的 PHP 代码中存在几个问题。
addToList()
function 外部和内部的$data
变量是两个不同的变量。
如果$data
仅在 function 内部引用,则将分配移动到 function 内部,例如:
function addToList() {
$file = "data.json";
$jsonData = file_get_contents($file);
$data = json_decode($jsonData, true);
...
}
如果$data
也在 function 之外访问,则将其作为参数传递,例如:
$jsonData = file_get_contents("data.json");
$data = json_decode($jsonData, true);
...
function addToList(array $data) {
...
}
...
if (array_key_exists('button1', $_POST)) {
addToList($data);
}
如果你的 function 是一个闭包,你可以通过use
让闭包访问$data
,例如:
$jsonData = file_get_contents("data.json");
$data = json_decode($jsonData, true);
...
$addToList = function () use ($data) {
...
}
...
if (array_key_exists('button1', $_POST)) {
$addToList($data);
}
另一个问题是,您似乎打算将 append 新数据添加到数据中data.json
( id
是基于元素的数量,加一),但是您的代码将 Z0ECD11C1D7A2874201D148A23BBD7 文件的内容替换为新的 A23BBD7 数据。 也许你的意思是:
...
function addToList(array $data) {
$data[] = [
'id' => count($data) + 1,
'name' => $_GET['name'],
'price' => $_GET['price'],
'buyer' => $_GET['buyer']
];
file_put_contents("data.json", json_encode($data));
}
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.