【问题标题】:php bootstrap from json file into form and output to json filephp 从 json 文件引导到表单并输出到 json 文件
【发布时间】: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。

标签: php json forms


【解决方案1】:

添加了 name 元素并将 php 代码替换为: 请发布任何改进。

if ($_SERVER['REQUEST_METHOD'] == 'POST') {

    function get_data() {
        $datae = array();
        $datae[] = array(
          'type' => $_POST['type'],
          'modified' => $_POST['modified'],
          'language' => $_POST['language'],
           ...

           ...


        );
        return json_encode($datae);
    }

增加了一些内部文件排列代码

    if (!file_exists("../../json/data/".$_POST['kingdom']."")) {
        mkdir("../../json/data/".$_POST['kingdom']."", 0777, true);
    }
    if (!file_exists("../../json/data/".$_POST['kingdom']."/".$_POST['phylum']."")) {
        mkdir("../../json/data/".$_POST['kingdom']."/".$_POST['phylum']."", 0777, true);
    }
    if (!file_exists("../../json/data/".$_POST['kingdom']."/".$_POST['phylum']."/".$_POST['class']."")) {
        mkdir("../../json/data/".$_POST['kingdom']."/".$_POST['phylum']."/".$_POST['class']."", 0777, true);
    }
    if (!file_exists("../../json/data/".$_POST['kingdom']."/".$_POST['phylum']."/".$_POST['class']."/".$_POST['order']."")) {
        mkdir("../../json/data/".$_POST['kingdom']."/".$_POST['phylum']."/".$_POST['class']."/".$_POST['order']."", 0777, true);
    }
    if (!file_exists("../../json/data/".$_POST['kingdom']."/".$_POST['phylum']."/".$_POST['class']."/".$_POST['order']."/".$_POST['family']."")) {
        mkdir("../../json/data/".$_POST['kingdom']."/".$_POST['phylum']."/".$_POST['class']."/".$_POST['order']."/".$_POST['family']."", 0777, true);
    }

并将文件放在正确的位置

    $name = $_POST['genus'];
    $file_name = $name . '.json';

    if(file_put_contents(
        "../../json/data/".$_POST['kingdom']."/".$_POST['phylum']."/".$_POST['class']."/".$_POST['order']."/".$_POST['family']."/$file_name", get_data())) {
            echo $file_name .' file created';
        }
    else {
        echo 'There is some error';
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多