-1

フォーム データを XML 形式にエクスポートするための一般的なルーチンを考え出そうとしています。目標は、フォーム要素 ID が XML ノードとして機能し、フォーム値が明らかにノード コンテンツになるように、十分に一般的なものにすることです。これが私がこれまでに持っているものです:

if(isset($_POST['submit'])) {
 $doc = new DOMDocument('1.0');
 $doc->formatOutput = true;
 $post = $_POST;
 unset($post['submit']);
 $data = array_values($post);
 $headers = array_keys($post);
 /* TODO - wrap next two lines with if clause */
 /* to check for existing root node */
 $root = $doc->createElement('student');
 $root = $doc->appendChild($root);

 for ($i = 0; count($headers) - 1; $i++)    {
    /* Create and append node for each form element to root */
    $theNode = $doc->createElement($headers[$i]);
    $theNode = $root->appendChild($theNode);

    /* Add content to node */
    $theValue = $doc->createTextNode($data[$i]);
    $theValue = $theNode->appendChild($theValue);
 }
 $fh = fopen($file, 'w') or die("Can't open the XML file.");
 fwrite($fh, $doc->saveXML());
 fclose($fh);
 header('Location: thanks.php'); 
}

そして、要求に応じて、ここにフォームコードがありますが、それは無関係だと思います:

          <form name="form1" method="post" action="">
        <p>
          <label for="name">Name: </label>
          <input type="text" name="name" id="name" placeholder="Your full name" autofocus required>
        </p>
        <p>
          <label for="email">Email: </label>
          <input type="email" name="email" id="email">
        </p>
        <p>
          <label for="cell">Cell: </label>
          <input type="tel" name="cell" id="cell">
        </p>
        <p>
          <label for="dob">Date of birth: </label>
          <input type="date" name="dob" id="dob">
        </p>
        <p>
          <label for="study">Years of art study: </label>
          0 <input type="range" name="study" id="study" min="0" max="16"> 16
        </p>
        <p style="text-align: center;">
          <input type="submit" name="submit" id="submit" value="Submit">
        </p>
      </form>

残念ながら、このコードは HTTP エラー 500 になります。

ああ、TODO に記載されているように、ファイルに既にデータ (ルート ノードが存在する) があるかどうかも確認する必要があります。追加するだけで、ルート ノードを再挿入しないでください。XML ファイルのルート ノードをテストするにはどうすればよいですか?

助けてくれてどうもありがとう - ジョー

4

1 に答える 1