php - 使用 PHP 将表单数据保存到现有的 XML 文件

标签 php sql xml file submit

好的,这就是我想要做的(注意:我还是 PHP 的新手):

我有一个电影/连续剧等的注册表。填写的表单中的数据随后被注册 (register.php) 并发送到 MySQL 数据库,该数据库工作正常。问题来了:我还希望在同一个寄存器文件 (register.php) 中,将数据存储在现有的 XML 文件 (data.xml) 中。这里重要的是,每个成功提交的表单都存储在同一个 XML 文件 (data.xml) 中。

我通过 while 循环在 HTML 表中显示所有注册的“电影”,它现在从我的数据库中收集数据。我还请求帮助,在表格外的某个地方添加一个按钮,该按钮在新选项卡(?)中生成/显示 XML 文件的内容。不能右键查看源码,因为表数据是从 MySQL 中收集的,这是不可能的。

这是我到目前为止所拥有的(这设法将每个提交保存在 data.xml 中,但如果进行了另一个提交则替换 - 我想添加而不是替换):

首先,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, ENT_COMPAT, 'UTF-8', false);
$time = htmlentities($time, ENT_COMPAT, 'UTF-8', false);
$bline = htmlentities($bline, ENT_COMPAT, 'UTF-8', false);
$synopsis = htmlentities($synopsis, ENT_COMPAT, 'UTF-8', false);
$leadtext = htmlentities($leadtext, ENT_COMPAT, 'UTF-8', false);
$url = htmlentities($url, ENT_COMPAT, 'UTF-8', 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', $name);
$xml->program->addChild('date', $date);
....

关于php - 使用 PHP 将表单数据保存到现有的 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12135467/

相关文章:

sql - 使用 SQL 清理相同的行

sql - 如何在 Postgres 中的一个表中划分行

xml - 正则表达式oracle sql 11g解析XML

xml - 为什么我们需要 targetNamespace?

android - 如何在android XML中将复选框(复选框)颜色更改为白色

php - 用于查找嵌套元素的 Xpath 查询

php - 使用 PHP 将 latin1_swedish_ci 转换为 utf8

sql - 将所有选定的列转换为_char

php - MongoDB和PHP可以添加同名字段吗?

php - fatal error : Call to undefined function mysqli_connect()