2016-12-19 1 views
0

와 XML의 노드를 만드는 나는 PHP로 비교적 새로운 그리고 난은 PHP 양식을 일부 노드를 추가하기 위해 노력하고있어하지만 난 그것을 할 수있는 방법에 대한 확신 유의하십시오. 내가 할 노력하고있어얻기 값이 PHP

각 값이 추가 될하기 위해 노드로 설정, 표준 양식에서 다른 요소의 값을 얻는 것입니다.

그것은 나에게 이름과 내 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

시도가의 요소를 생성 * nodeValue를 사용하기 전에 $ name *과 * $ comment *를 맨 위에 두십시오. – Parfait

+0

@ Parfait 그래, 내가 쓴 : $ name = $ _POST [ 'namanya']; $ comment = $ _POST [ 'commentnya']; –

+0

그러나 여전히 동일한 오류가 발생합니다. –

답변

0

몇 가지 문제가 현재 설정 발생할 :

  1. 참조하는 변수를 은 $ 결코 그$ 주석 이름을 초기화 됨, 따라서 정의되지 않은 변수 통지. $ comment_invenotr
  2. 맞춤법 오류.
  3. appendChild() 메서드는 값이 아닌 요소로 사용됩니다.

은 변수 참조와 코드도 순서를 조정하는 것이 좋습니다. 그리고 당신이 고려 텍스트를 노드에 $_POST 값을 할당 할 보이기 때문에 두 가지 방법 중 하나를

의 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

또한 다른 오류 로그를 삭제하기 위해 값 속성을 삭제하는 PHP 양식을 변경해야했습니다! 당신의 도움에 큰 감사드립니다. –