【发布时间】:2020-12-01 00:35:40
【问题描述】:
我觉得所有组件都快到了,我只是在组装过程中苦苦挣扎! 我正在尝试从 json 文件中检索数据,然后允许用户编辑数据,然后将新数据发送到另一个文件(覆盖此文件不是问题)该 json 文件。我离我有多远?我将引导您完成代码:
来自 url 的变量:
<?php
echo $_GET['species'];
echo $_GET['bone'];
echo $_GET['datasetID'];
从json文件中获取数据:
$data = json_decode(file_get_contents("../../json/data.json"), True);
过滤数据得到一条记录:
function myfilter($row){
return ($row['datasetID']== $_GET['datasetID']);
}
$result = array_filter($data, 'myfilter');
返回数据并以引导形式呈现:
我预计foreach 是矫枉过正,因为只返回了 1 条记录,是否先返回?
foreach($result as $elem) {
echo ("
<div class='col-12'>
将方法设置为发布,我假设action 可以是home.php 作为重定向?
<form action='' method='post' class='was-validated'>
<div class='row'>
一些文本输入,还有更多,但这适用于测试用例:
<div class='col-2 left'>
<div class='form-group'>
<label for='uname'>Data ID:</label>
<input class='form-control' type='text' value =".$elem['datasetID']." placeholder='".$elem['datasetID']."' readonly>
<div class='valid-feedback'>Valid.</div>
<div class='invalid-feedback'>Please fill out this field.</div>
</div>
</div>
<div class='col-2 left'>
<div class='form-group'>
<label for='uname'>Modified:</label>
<input type='text' class='form-control' value ='".$elem['modified']."' placeholder='".$elem['modified']."' readonly>
<div class='valid-feedback'>Valid.</div>
<div class='invalid-feedback'>Please fill out this field.</div>
</div>
</div>
<div class='col-2 left'>
<div class='form-group'>
<label for='uname'>Language</label>
<input type='text' class='form-control' value ='".$elem['language']."' placeholder='".$elem['language']."' >
<div class='valid-feedback'>Valid.</div>
<div class='invalid-feedback'>Please fill out this field.</div>
</div>
</div>
<div class='col-2 left'>
<div class='form-group'>
<label for='uname'>commonName</label>
<input type='text' class='form-control' value ='".$elem['commonName']."' placeholder='".$elem['commonName']."' required>
<div class='valid-feedback'>Valid.</div>
<div class='invalid-feedback'>Please fill out this field.</div>
</div>
</div>
<div class='col-2 left'>
<div class='form-group'>
<label for='uname'>elementName</label>
<input type='text' class='form-control' value ='".$elem['elementName']."' placeholder='".$elem['elementName']."' >
<div class='valid-feedback'>Valid.</div>
<div class='invalid-feedback'>Please fill out this field.</div>
</div>
</div>
<div class='col-2 left'>
<div class='form-group'>
<label for='uname'>commonElementName</label>
<input type='text' class='form-control' value ='".$elem['commonElementName']."' placeholder='".$elem['commonElementName']."' >
<div class='valid-feedback'>Valid.</div>
<div class='invalid-feedback'>Please fill out this field.</div>
</div>
</div>
"
);
}
foreach 循环结束。
创建一个新数组,使用POST 方法收集所有键和提交的数据。
$newdata=array();
foreach($_POST as $key=>$value) {
$newdata[$key]=$value;
}
$json_a['data'][]=$newdata;
$json_a=json_encode($json_a);
把数据放在某处
file_put_contents("test.json",$json_a);
使用提交按钮完成表单并以最终关闭 div 结束 html。
echo"
<button type='submit' class='btn btn-primary'>Submit</button>
</form>
";
echo '</div>';
?>
【问题讨论】:
-
那什么不起作用?
-
问题是什么?
-
我可以看到您没有在输入中添加任何
name=""道具,是这样吗? -
以上,在提交时会生成一个空的 json 文件,我会用谷歌搜索
name上次我使用 php 时使用的数据库不是 json。