新しいデータを既存の XML ファイルに挿入しようとしましたが、うまくいきません。これが私のxmlファイルです:
<list>
<activity>swimming</activity>
<activity>running</activity>
<list>
ここで、私のアイデアは 2 つのファイルを作成することでした。ファイルの内容を表示し、新しい要素を挿入するためのフィールドを提供するインデックス ページと、データを XML ファイルに挿入する php ページです。index.php のコードは次のとおりです。
<html>
<head><title>test</title></head>
</head>
<?php
$xmldoc = new DOMDocument();
$xmldoc->load('sample.xml', LIBXML_NOBLANKS);
$activities = = $xmldoc->firstChild->firstChild;
if($activities!=null){
while(activities!=null){
echo $activities->textContent.'<br/>';
activities = activities->nextSibling.
}
}
?>
<form name='input' action='insert.php' method='post'>
insert activity:
<input type='text' name='activity'/>
<input type='submit' value='send'/>
</form>
</body>
</html
insert.php のコードは次のとおりです。
<?php
header('Location:index.php');
$xmldoc = new DOMDocument();
$xmldoc->load('sample.xml');
$newAct = $_POST['activity'];
$root = $xmldoc->firstChild;
$newElement = $xmldoc->createElement('activity');
$root->appendChild($newElement);
$newText = $xmldoc->createTextNode($newAct);
$newElement->appendChild($newText);
$xmldoc->save('sample.xml');
?>
ユーザーが index.php にアクセスすると、XML ファイルに含まれる現在のアクティビティのリストが表示され、その下に新しいアクティビティを挿入できるテキスト フィールドが表示されます。送信ボタンをクリックすると、ページは insert.php を呼び出します。これには、DOM ツリーで XML ファイルを開くコードが含まれており、ルート ノードの下に新しいノードを挿入し、ユーザーがいるべき index.php ページを呼び出します。アクティビティのリストを見ることができます。彼の新しいアクティビティは他の人の下にあります。機能していません。ボタンをクリックして新しいエントリを送信すると、ページが更新され、明らかに何も起こらず、XML は以前と同じです。私は何を間違えましたか?また、何か良い方法があれば教えていただきたいです。