Хорошо, так вот что я хочу сделать (ПРИМЕЧАНИЕ: я новый для PHP):
У меня есть регистрационная форма для фильмов / сериалов и т. Д. Затем данные из заполненной формы регистрируются (register.php) и отправляются в базу данных MySQL, которая работает нормально. Здесь приходит, но: Я также хочу, в том же файле register (register.php), данные, которые будут храниться в существующем XML-файле (data.xml). Важно отметить, что каждая успешно поданная форма хранится в том же XML-файле (data.xml).
Я показываю все зарегистрированные «фильмы» в HTML-таблице через цикл while, который теперь собирает данные из моей базы данных. Я также прошу помочь, где-то за пределами таблицы, добавить кнопку, которая генерирует / отображает содержимое XML-файла на новой вкладке (?). Не щелкните правой кнопкой мыши, чтобы просмотреть источник, поскольку данные таблицы собираются из MySQL, это невозможно.
Вот то, что у меня есть до сих пор (это удается сохранить каждую подачу в data.xml, но заменяет, если сделано другое представление – я хочу добавить NOT replace):
Прежде всего, 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');
Я искал часы, не найдя точно, что я ищу. Также попытался изо всех сил попробовать множество собственных «нерабочих решений». Кроме того, я выбрал части моего кода, которые подходят для ответов на этот вопрос.
Вам нужно сделать постоянный узел program
, присвоив ему значение так:
$xml->program = "";
Добавьте эту строку непосредственно перед добавлением к ней дочерних узлов:
$xml->program = ""; $xml->program->addChild('name', $name); $xml->program->addChild('date', $date); ....