2016-12-19 10 views
0

私はPHPをかなり使い慣れていて、いくつかのノードにPHPフォームを追加しようとしていますが、その方法については十分に注意しています。フォームから値を取得してPHPでXMLでノードを作成する

私がしようとしているのは、標準フォームからさまざまな要素の値を取得することです。各値は、追加するためにノードとして設定されます。

私のXMLに名前とコメントのある人を(私の例では)作成することができます。

MAMPのエラーログは私にこれらのエラーを言っている:

[19-Dec-2016 16:11:10 Europe/Berlin] PHP Notice: Undefined variable: name in /Applications/MAMP/htdocs/test-php/form.php on line 30 
[19-Dec-2016 16:11:10 Europe/Berlin] PHP Notice: Trying to get property of non-object in /Applications/MAMP/htdocs/test-php/form.php on line 30 
[19-Dec-2016 16:11:10 Europe/Berlin] PHP Notice: Undefined variable: comment in /Applications/MAMP/htdocs/test-php/form.php on line 31 
[19-Dec-2016 16:11:10 Europe/Berlin] PHP Notice: Trying to get property of non-object in /Applications/MAMP/htdocs/test-php/form.php on line 31 
[19-Dec-2016 16:11:15 Europe/Berlin] PHP Warning: Creating default object from empty value in /Applications/MAMP/htdocs/test-php/form.php on line 5 
[19-Dec-2016 16:11:15 Europe/Berlin] PHP Warning: Creating default object from empty value in /Applications/MAMP/htdocs/test-php/form.php on line 6 
[19-Dec-2016 16:11:15 Europe/Berlin] PHP Fatal error: Uncaught TypeError: Argument 1 passed to DOMNode::appendChild() must be an instance of DOMNode, instance of stdClass given in /Applications/MAMP/htdocs/test-php/form.php:16 

私が私のフォームの値を取得しようとしている道が動作していないようです。私は間違って何をしていますか?

ご協力いただきありがとうございます。

マイPHP

<?php 
if (isset($_POST['submit'])){ 


    $name->nodeValue = $_POST['namanya']; 
    $comment->nodeValue = $_POST['commentnya']; 

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

    $inventors = $xml->getElementsByTagName('inventors')->item(0); 
    $person_inventor = $xml->createElement('person'); 
    $name_inventor = $xml->createElement('name'); 
    $name_inventor->appendChild($name); 
    $comment_inventor = $xml->createElement('comment'); 
    $comment_invenotr->appendChild($comment); 
    $person_inventor->appendChild($name_inventor); 
    $person_inventor->appendChild($comment_inventor); 
    $inventors->appendChild($person_inventor); 

    htmlentities($xml->save('examples.xml')); 

} 

?> 

<form method="POST" action=''> 
    name <input type="text-name" value="<?php echo $name->nodeValue?>" name="namanya" /> 
    comment <input type="text-comment" value="<?php echo $comment->nodeValue?>" name="commentnya"/> 
    <input name="submit" type="submit"/> 
</form> 

マイXML

<?xml version="1.0" encoding="UTF-8"?> 
<inventors> 
<person> 
    <name>anie</name> 
    <comment>good</comment> 
</person> 
</inventors> 
+0

試してみてください。それはあなたがテキストをノードAに$_POST値を割り当てるようですので、次のいずれかの方法を考えます* nodeValueを使う前に* $ name *と* $ comment *を一番上に置きます。 – Parfait

+0

@パールトええ、私は書きました: $ name = $ _POST ['namanya']; $ comment = $ _POST ['commentnya']; –

+0

しかし、私はまだ同じエラーが発生しています。 –

答えて

0

いくつかの問題は、現在の設定で発生する:

ことはありません、変数、 $名$コメントを参照
  1. 初期化されているため、未定義の変数通知。
  2. のスペルミス$ comment_invenotr
  3. メソッドappendChild()は、値ではなく要素として使用されます。

このような変数参照およびコード内での順序さえ調整することを検討してください。の要素を作成

のcreateElement引数

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

$inventors = $xml->getElementsByTagName('inventors')->item(0); 
$person_inventor = $xml->createElement('person'); 

$name_inventor = $xml->createElement('name', $_POST['namanya']);  
$comment_inventor = $xml->createElement('comment', $_POST['commentnya']); 

$person_inventor->appendChild($name_inventor); 
$person_inventor->appendChild($comment_inventor); 
$inventors->appendChild($person_inventor); 

htmlentities($xml->save('examples.xml')); 

のnodeValue割り当て

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

$inventors = $xml->getElementsByTagName('inventors')->item(0); 
$person_inventor = $xml->createElement('person'); 

$name_inventor = $xml->createElement('name');  
$name_inventor->nodeValue = $_POST['namanya']; 

$comment_inventor = $xml->createElement('comment'); 
$comment_inventor->nodeValue = $_POST['commentnya']; 

$person_inventor->appendChild($name_inventor); 
$person_inventor->appendChild($comment_inventor); 
$inventors->appendChild($person_inventor); 

htmlentities($xml->save('examples.xml')); 
+0

また、他のエラーログを削除するためにvalue属性を削除するためにPHPフォームを変更しなければなりませんでした!あなたの助けに大変感謝します。 –

関連する問題