I am new to DOMDocument and intensive PHP. Please forgive my ignorance. I just cant seem to get the Process.php to write to the XML. Ive seen other posts about the same topic, but they didnt help me resolve my issue. Just cant find what I did wrong. Any help would be much appreciated!
Here is the HTML form, form.html.
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title></title>
</head>
<body>
<form name="digitalsignage" action="process.php" onsubmit="return defaultagree(this)" method="post">
<table align="center" cellpadding="2" cellspacing="0" width="50%">
<tbody><tr>
<td> Event1:</td><td>
<input name="event1" value="Unknown" type="text"> </td>
<td> Event2:</td><td>
<input name="event2" value="Unknown" type="text"> </td>
<td> Event3:</td><td>
<input name="event3" value="Unknown" type="text"> </td>
<td> Event4:</td><td>
<input name="event4" value="Unknown" type="text"> </td>
<td> Event5:</td><td>
<input name="event5" value="Unknown" type="text"> </td>
</tr>
<tr>
<td colspan="4" style="text-align:center;">
<input name="lsr-submit" value="Submit" type="submit"></td>
</tr>
</tbody></table>
</form>
</body>
</html>
The XML File, file.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<atom:link href="http://www.SERVER-URL-OF-FEED" rel="self" type="application/rss+xml" />
<title>Todays Events</title>
<item>
<description>
<event1>Event 1</event1>
<event2>Event 2</event2>
<event3>Event 3</event3>
<event4>Event 4</event4>
<event5>Event 5</event5>
</reports>
</item>
</channel>
</rss>
The PHP, process.php
<?php
$event1 = $_POST['event1'];
$event2 = $_POST['event2'];
$event3 = $_POST['event3'];
$event4 = $_POST['event4'];
$event5 = $_POST['event5'];
$xml = new DOMDocument();
$xml->load('file.xml');
$xml->formatOutput = true;
$xml->preserveWhiteSpace = false;
$element = $xml->getElementsByTagName('description')->item(0);
if ($element->length > 0) {
$event1 = $element->getElementsByTagName('event1')->item(0);
$event2 = $element->getElementsByTagName('event2')->item(0);
$event3 = $element->getElementsByTagName('event3')->item(0);
$event4 = $element->getElementsByTagName('event4')->item(0);
$event5 = $element->getElementsByTagName('event5')->item(0);
$newItem = $xml->createElement('description');
$newItem->appendChild($xml->createElement('event1', $_POST['event1']));
$newItem->appendChild($xml->createElement('event2', $_POST['event2']));
$newItem->appendChild($xml->createElement('event3', $_POST['event3']));
$newItem->appendChild($xml->createElement('event4', $_POST['event4']));
$newItem->appendChild($xml->createElement('event5', $_POST['event5']));
$xml->getElementsByTagName('item')->item(0)->appendChild($newItem);
}
$xml->save('file.xml');
echo "Data has been written.";
?>
Some more basic issues to spot with your code:
$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";
Imagine as many possibilities as possible to make visible and "proof" your code working, showing errors as early as possible.
You could...
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.