3

わかりましたので、機能しました。唯一の問題は、新しい提出物が追加されたときに以前のエントリが上書きされることです。最新の送信を XML ファイルに追加し、それを上書きして X 時間保存しないようにする必要があります。

以下は、xml ファイルを作成し、HTML フォームからデータを取得して XML ファイルに配置する、実際に動作する php スクリプトです。

<?php

if (isset($_POST['lsr-submit']))
    {
        header('Location: http://www.mesquiteweather.net/wxmesqLSR.php');
    }

$str = '<?xml version="1.0" encoding="UTF-8"?><entrys></entrys>';
$xml = simplexml_load_string($str);

$fname = $_POST['firstname'];
$lname = $_POST['lastname'];
$location = $_POST['location'];
$report = $_POST['report'];
$description = $_POST['desc'];

$fname = htmlentities($fname, ENT_COMPAT, 'UTF-8', false);
$lname = htmlentities($lname, ENT_COMPAT, 'UTF-8', false);
$location = htmlentities($location, ENT_COMPAT, 'UTF-8', false);
$report = htmlentities($report, ENT_COMPAT, 'UTF-8', false);
$description = htmlentities($description, ENT_COMPAT, 'UTF-8', false);

$xml->reports = "";
$xml->reports->addChild('fname', $fname);
$xml->reports->addChild('lname', $lname);
$xml->reports->addChild('location', $location);
$xml->reports->addChild('report', $report);
$xml->reports->addChild('description', $description);

$doc = new DOMDocument('1.0');
$doc->formatOutput = true;
$doc->preserveWhiteSpace = true;
$doc->loadXML($xml->asXML(), LIBXML_NOBLANKS);
$doc->save('test2.xml');

?>

これが作成するxmlファイルです。

XML ファイル

XML ファイルに送信するフォームは次のとおりです。テスト送信を送信すると、表示するページに移動しますが、XML ファイルに追加するのではなく、最後のページを上書きすることに気付くでしょう。

HTMLフォーム

4

2 に答える 2

1

これは私が思いつき、うまく機能し、テストしたものです。

:ただし、ファイル(file.xml)が存在しない場合はエラーが発生するため、CRONまたは他の方法で古いファイルを自動的に削除する方法を見つけた場合(あなたが言及した:「...そして保存する」それを X 時間の間.")の場合、少なくとも 1 つのエントリ セットを内部に含む事前構築済みの構造化ファイルを作成する方法を考え出す必要があります。

例えば:

<?xml version="1.0" encoding="UTF-8"?>
<entries>
  <reports>
    <timestamp>May 31, 2013, 11:56 am</timestamp>
    <fname>Fred</fname>
    <lname>Fletcher</lname>
    <location>Canada</location>
    <report>Wind Damage</report>
    <description>Winds were gusting mighty hard today!</description>
  </reports>
</entries>

これは比較的簡単に行うことができます。以前にif file exists....

ここに私の作業コードがあります:

<?php

// Script by Fred Fletcher, Canada.

$fname = $_POST['firstname'];
$lname = $_POST['lastname'];
$location = $_POST['location'];
$report = $_POST['report'];
$description = $_POST['desc'];

$xml = new DOMDocument('1.0', 'utf-8');
$xml->formatOutput = true;
$xml->preserveWhiteSpace = false;
$xml->load('file.xml');

$element = $xml->getElementsByTagName('reports')->item(0);

$timestamp = $element->getElementsByTagName('timestamp')->item(0);
$fname = $element->getElementsByTagName('fname')->item(0);
$lname = $element->getElementsByTagName('lname')->item(0);
$location = $element->getElementsByTagName('location')->item(0);
$report = $element->getElementsByTagName('report')->item(0);
$description = $element->getElementsByTagName('description')->item(0);

$newItem = $xml->createElement('reports');

$newItem->appendChild($xml->createElement('timestamp', date("F j, Y, g:i a",time())));;

$newItem->appendChild($xml->createElement('fname', $_POST['firstname']));
$newItem->appendChild($xml->createElement('lname', $_POST['lastname']));
$newItem->appendChild($xml->createElement('location', $_POST['location']));
$newItem->appendChild($xml->createElement('report', $_POST['report']));
$newItem->appendChild($xml->createElement('description', $_POST['desc']));

$xml->getElementsByTagName('entries')->item(0)->appendChild($newItem);

$xml->save('file.xml');

echo "Data has been written.";

?>

スクリプト内のコメントとしての「プラグ」は、「カナダのフレッド フレッチャーによるスクリプト」のようにするとよいでしょう。(ウィンク)

これがどのように機能するか教えてください。

于 2013-05-31T22:45:17.443 に答える