2010-07-29 55 views
0

我试图插入数据到XML使用PHP domdocument。然而,当我按下输入时,它只显示一个空白页面显示没有错误。我究竟做错了什么?插入到XML显示空白页

更新:

<?php 

error_reporting(E_ALL); 
ini_set("display_errors", 1); 


    $xmldoc = new DOMDocument(); 
    if(file_exists('test.xml')){ 
    $xmldoc->load('test.xml'); 
    } else { 
    $xmldoc->loadXML('<root/>'); 
    } 

    /*get the values of the html: */ 
    $title_ar = $_POST["title_ar"]; 
    $title_en = $_POST["title_en"]; 

    $intro = $_POST["intro"]; 

    $v_ar = $_POST["v_ar"]; 
    $v_en = $_POST["v_en"]; 
    $v_tren = $_POST["v_tren"]; 

    /*get the values of the html: */ 

    $root = $xmldoc->firstChild; 

    if ($xmldoc->getElementsByTagName("title")->length == 0) { 
    /* Arabic */ 
    $el_title_ar = $xmldoc->createElement('title'); 
    $root->appendChild($el_title_ar); 

    $text_title_ar = $xmldoc->createTextNode($title_ar); 
    $el_title_ar->appendChild($text_title_ar); 
    /* Arabic */ 

    /* English */ 
    $el_title_en = $xmldoc->createElement('title'); 
    $root->appendChild($el_title_en); 

    $text_title_en = $xmldoc->createTextNode($title_en); 
    $el_title_en->appendChild($text_title_en); 
    /* English */ 
    } 
    else if ($xmldoc->getElementsByTagName("introduction")->length == 0) { 
    $el_intro = $xmldoc->createElement('introduction'); 
    $root->appendChild($el_intro); 

    $el_intro_para = $xmldoc->createElement('para'); 
    $el_intro->appendChild($el_intro_para); 

    $text_intro = $xmldoc->createTextNode($intro); 
    $el_intro_para->appendChild($text_intro); 
    } 

    $verse = $xmldoc->createElement('verse'); 
    $root->appendChild($verse); 


    /* Arabic */ 
    $verse_p = $xmldoc->createElement('p'); 
    $verse->appendChild($verse_p); 

    $v_ar_p = $xmldoc->createTextNode($v_ar); 
    $verse_p->appendChild($v_ar_p); 
    /* Arabic */ 


    /* English Translation*/ 
    $verse_trans = $xmldoc->createElement('trla'); 
    $verse->appendChild($verse_trans); 

    $v_en_trans = $xmldoc->createTextNode($v_en); 
    $verse_trans->appendChild($v_en_trans); 
    /* English Translation*/ 


    /* English Transliteration*/*/ 
    $verse_translit = $xmldoc->createElement('trli'); 
    $verse->appendChild($verse_translit); 

    $v_en_translit = $xmldoc->createTextNode($v_tren); 
    $verse_translit->appendChild($v_en_translit); 
    /* English Transliteration*/ 

    /*Save the XML File*/ 
    $xml->formatOutput = true; 
    $xmldoc->save('test.xml'); 

    header("Location: index.php"); 
?> 
+0

打开错误报告,并检查错误日志。这里没有'@'错误抑制,所以如果发生错误,它应该被记录... – ircmaxell 2010-07-29 18:53:24

回答

3

$title-ar是非法的变量名。这意味着'变量$title减去常数ar,这将使其成为一个表达式,并且您不能将任何东西指派给表达式(=)。如果在开发时打开display_errors,它会告诉你关于分析错误的信息。

+0

我确实打开了显示错误,但不知何故,它没有显示任何内容,只是一个空白页。无论如何,我纠正了这些错误,但它只显示空白页面。 – input 2010-07-29 19:09:44

+0

您无法在脚本中启用显示分析错误。它应该在php.ini或.htaccess中执行,因为在解析错误时,脚本中的任何内容都不会被处理,包括更改'display_errors'的设置。接下来的错误是'$ xmldoc-> createElement('title xml:lang =“ar”');'会导致一个未捕获的异常,因为它是一个非法的标记名(对属性使用 - > setAtttribute)。看到我们的问题:在继续这条路线之前,您应该**修正**显示错误,我们不是您的语法/皮棉跳棋。 – Wrikken 2010-07-29 19:17:28

+0

好的,谢谢。我检查了错误日志。在我纠正title-ar错误之前,错误是'[Thu Jul 29 21:45:37 2010] [error] [client 127.0.0.1] PHP解析错误:语法错误,意外的'='in [文件夹] /insert.php在第13行,referer:http:// localhost/index.php。在我纠正它后,错误是[[Thu Jul 29 21:56:33 2010] [错误] [客户端127.0.0.1] PHP解析错误:语法错误,意外'='在[文件夹] \\ insert.php上第15行,referer:http:// localhost/index.php第15行是'$ title_ar = $ _POST [“title_ar”];'。我无法弄清楚这条线还有什么问题。 – input 2010-07-29 19:21:49