使用PHP将表单数据保存到现有XML文件
好的,所以这就是我想要做的事情(注意:我不熟悉
PHP):
我有一个电影/系列等的注册表格.填写表格中的数据然后被注册(register.php)并发送到MySQL数据库,这是正常的.接下来是:我还希望在相同的寄存器文件(register.php)中将数据存储在现有的XML文件(data.xml)中.这里重要的是每个成功提交的表单都存储在同一个XML文件(data.xml)中. 我通过while循环在HTML表中显示所有已注册的“电影”,它现在从我的数据库中收集数据.我也在寻求帮助,在表格之外的某个地方,添加一个按钮,在新标签(?)中生成/显示XML文件的内容.没有右键单击查看源,因为表数据是从MySQL收集的,这是不可能的. 这是我到目前为止所做的事情(这可以设法在data.xml中保存每个提交,但如果另外提交则替换 – 我想添加NOT替换): 首先,index.php: <form enctype="multipart/form-data" action="core/register.php" method="post" autocomplete="true"> <p><input type="text" name="name" placeholder="Program name" /></p> <p><input type="date" name="date" placeholder="Program date" /></p> <p><input type="time" name="time" placeholder="Program time" /></p> <p><input type="text" name="bline" placeholder="B-line" /></textarea></p> <p><textarea name="synopsis" placeholder="Program synopsis" /></textarea></p> <p><textarea name="leadtext" placeholder="Lead text" /></textarea></p> <p><input type="url" name="url" placeholder="URL" /></p> <p><input type="submit" value="Register" name="register" /></p> </form> 接下来,data.xml: <?xml version="1.0" encoding="UTF-8"?> <programs> <program> <name></name> <date></date> <start_time></start_time> <b-line></b-line> <synopsis></synopsis> <leadtext></leadtext> <url></url> </program> </programs> 最后,register.php: require_once('db.php'); $str = '<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="xsl.xsl"?><programs></programs>'; $xml = simplexml_load_string($str); $name = $_POST['name']; $date = $_POST['date']; $time = $_POST['time']; $bline = $_POST['bline']; $synopsis = $_POST['synopsis']; $leadtext = $_POST['leadtext']; $url = $_POST['url']; $name = htmlentities($name,ENT_COMPAT,'UTF-8',false); $date = htmlentities($date,false); $time = htmlentities($time,false); $bline = htmlentities($bline,false); $synopsis = htmlentities($synopsis,false); $leadtext = htmlentities($leadtext,false); $url = htmlentities($url,false); $xml->program->addChild('name',$name); $xml->program->addChild('date',$date); $xml->program->addChild('start_time',$time); $xml->program->addChild('b-line',$bline); $xml->program->addChild('synopsis',$synopsis); $xml->program->addChild('leadtext',$leadtext); $xml->program->addChild('url',$url); $doc = new DOMDocument('1.0'); $doc->formatOutput = true; $doc->preserveWhiteSpace = true; $doc->loadXML($xml->asXML(),LIBXML_NOBLANKS); $doc->save('data.xml'); 我已经搜索了几个小时而没有找到我正在寻找的确切内容.我也尽力尝试自己的“非工作解决方案”.另外,我选择了与此问题相关的代码部分. 解决方法
您需要为程序节点赋予永久性,方法是为其分配如下值:
$xml->program = ""; 在向子节点添加子节点之前添加该行: $xml->program = ""; $xml->program->addChild('name',$date); .... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |