好了,這裏就是我想要做的(注:我還是老樣子新PHP):保存的表單數據使用PHP
我對電影/系列等登記表然後註冊填充表格中的數據(register.php)併發送到MySQL數據庫,該數據庫工作正常。這裏是but:我也想在同一個註冊文件(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數據(在data.xml中)而不是添加到它。 – khaansen
我以爲那是你想要的。對於這種新的情況,只有在data.xml文件不存在的情況下,才應該運行'simplexml_load_string'。如果存在'data.xml',則應該執行'simplexml_load_file'來代替data.xml的內容,然後將子代添加到您加載的內容中並將其寫回到文件中 – raidenace