Html表单到PHP XML文档-不更新XML

Html表单到PHP XML文档-不更新XML,php,html,xml,domdocument,Php,Html,Xml,Domdocument,我不熟悉DOMDocument和密集型PHP。请原谅我的无知。我似乎无法让Process.php写入XML。我看过其他关于同一主题的帖子,但它们没有帮助我解决我的问题。只是找不到我做错了什么。任何帮助都将不胜感激 这是HTML表单form.HTML 事件1: 事件2: 事件3: 事件4: 事件5: XML文件File.XML: 今日活动 事件1 事件2 事件3 事件4 事件5 PHP,process.PHP 代码中还有一些更基本的问题需要解决: 没有错误处理。这才是真正需要照顾的。您的代

我不熟悉DOMDocument和密集型PHP。请原谅我的无知。我似乎无法让Process.php写入XML。我看过其他关于同一主题的帖子,但它们没有帮助我解决我的问题。只是找不到我做错了什么。任何帮助都将不胜感激

这是HTML表单form.HTML


事件1:
事件2:
事件3:
事件4:
事件5:
XML文件File.XML:


今日活动
事件1
事件2
事件3
事件4
事件5
PHP,process.PHP


代码中还有一些更基本的问题需要解决:

  • 没有错误处理。这才是真正需要照顾的。您的代码是用“最好的祝愿”编写的,希望一切正常。实际上,这是什么时候?所以,是的,生产代码需要错误处理。请注意,当您发现代码示例时,这些示例通常都是示例,并不关注错误处理,因此您需要自己添加它。尽早添加错误处理()
  • 代码重复。如果你看一看你的例子,很明显有很多冗余。举个简单的例子,如果有一个字段,或者有五个字段,则没有区别。在Stackoverflow上发布要求您尽可能少地使用示例来询问问题。你违反了那个合同。但这并不是让你更难问一个关于Stackoverflow的问题,最好从你自己的代码中删除冗余。在这里花点时间问一个问题,作为从不同角度审查代码的机会,因为您需要制定一个更独立的问题。你甚至可以自己解决这个问题。这是个好兆头

  • $result=$xml->save('file.xml');
    如果(!$result){
    抛出新的UnexpectedValueException异常(
    '无法写入文件“file.xml”'
    );
    }
    echo“\n
    \n已写入以下文件:\n
    \n”; echo nl2br(htmlspecialchars($xml->saveXML()),“\n
    \n”;
    想象尽可能多的可能性使代码可见并“证明”代码工作,尽早显示错误

    你可以

    • 。。。在写入文件之前,测试文件是否可作为可写文件访问
    • 。。。验证写入磁盘的XML格式是否正确
    • 。。。验证HTTP POST请求是否包含所有预期变量
    • 。。。验证变量是否包含可以处理的值
    • 。。。检查是否确实有请求


    到底是什么问题?你没有描述它。请阅读我们关于如何创建MCVE()的帮助部分,并将其添加到您的问题中。通过这种方式,您将从社区获得更快、更好的帮助。我的服务器管理员更新了权限。现在它保存了一个空文件,除了第一行XML。我被难住了。@ochi,我不太确定我是否需要帮助创建MCVE,因为我在下面的后续评论中写道:“我的服务器管理员更新了权限。现在它保存了,但它保存了一个空文件,除了第一行XML。我被难住了。”我不确定如何解释得更清楚,但我会尝试。上面的文件,一旦被授权写入服务器,就只使用第一行更新XML文件,而不使用其他内容在PHP文件的开头,使用这个
    $newItem->appendChild($xml->createElement('event1',$\u POST['event1'])有意义吗在构建xml时再次执行?或者应该是
    $newItem->appendChild($xml->createElement($event1',$event1))而不是?
    
    $result = $xml->save('file.xml');
    if (!$result) {
        throw new UnexepectedValueException(
           'Failed to write file "file.xml"'
        );
    }
    
    echo "\n<hr>\nthe following file has been written:\n<hr>\n";
    echo nl2br(htmlspecialchars($xml->saveXML())), "\n<hr>\n";