2012-02-05 13 views
0

PHPを使用してXMLにノードを追加しようとすると、PHPとImにとって本当に新しいです。フォームを使用してPHPを使用してXMLにノードを追加する

これは私のcomments.phpファイルです:

<?php 

$date = "http://jdrag.x10.mx/comments_file.xml"; 
$xml = simplexml_load_string($data); 
$commentt = $xml->addChild("comment"); 
$name = $_POST["cname"]; 
$email = $_POST["cemail"]; 
$comment = $_POST["comment"]; 
$commentt->addChild("name", $name); 
$commentt->addChild("email", $email); 
$commentt->addChild("commentInside", $comment); 

echo $xml->saveXML(); 

?> 

マイcomments.htmlは次のとおりです。

<form action="comments.php" method="post"> 
Name: <input type="text" name="cname" /> 
Email: <input type="text" name="cemail" /> 
Comment: <input type="text" name="comment" /> 
<input type="submit" /> 
</form> 

あなたは私のXMLファイルを見ることができるようにcommentsタグシンプルさ:http://jdrag.x10.mx/comments_file.xml

しかし、フォームを提出すると、私はこのエラーになります:

Fatal error: Call to a member function addChild() on a non-object in /home/jdragx10/public_html/comments.php on line 5

私はPHPに慣れていないので、どういう意味か、それをどう修正するのか分かりません。 私のコードを修正できる人には、事前に感謝します。

答えて

1

simplexml_load_file()を使用しているようです。

simplexml_load_string()関数はXMLドキュメントを文字列として受け取りますが、simplexml_load_file()はXMLを含むファイルにパスを持ちます。


変数名といくつかの問題を抱えているあなたは、変数$dataを使用してXMLをロードしようとするのに対し、あなたはまた、XMLファイルへのパスが$dateに保持されています。


最後に、コードの作成中にエラー報告をオンにしてください(最大レベルまで)。上記のコードは、致命的なエラーメッセージではなく、通知メッセージ("通知:未定義変数:データ...")を返します。

は、あなたのphp.iniファイルまたはini_set()のいずれかを使用して、それぞれの値display_errorsOn-1error_reportingを設定します。

+0

質問ノードを追加して実際のファイルに保存することは可能ですか?たとえば、フォームを送信すると、結果が表示されます。しかし、私はそれを編集したい:http://jdrag.x10.mx/comments_file.xml。あなたが見ることができるように私はデータベースを使用せずにコメントシステムを作成しようとしています。コメントをXMLファイルに送信し、AJAXを使用してそれぞれの「コメント」を受け取ります。しかし、今は私が欲しいことをやっていない。 – Shawn31313

+0

はい、閉鎖された他の質問と、ここでは数十件の質問があります。結果を「保存」するのは、 'saveXML()'の代わりに 'asXML(...)'を使うのと同じくらい簡単です。 [マニュアルを読む](http://php.net/simplexmlelement.asxml)を参照してください。 – salathe

関連する問題