Сохранение данных формы в существующий XML-файл с помощью PHP



Итак, вот что я хочу сделать (примечание: Я все еще новичок в PHP):



У меня есть регистрационная форма для фильмов / сериалов и т. д. Затем данные из заполненной формы регистрируются (register.php) и отправляется в базу данных MySQL, которая работает нормально. Тут приходит но: я тоже хочу, в том же файле реестра (register.php), данные для хранения в существующем XML-файле (data.XML). Важно, что каждая успешно отправленная форма хранится в одном и том же XML-файле (data.XML).



I отображение всех зарегистрированных "фильмов" в HTML-таблице через цикл while, который теперь собирает данные из моей базы данных. Я также прошу помощи, чтобы где-то вне таблицы добавить кнопку, которая генерирует / отображает содержимое XML-файла в новой вкладке(?). Не щелкая Правой Кнопкой Мыши для просмотра источника, так как данные таблицы собираются из MySQL это невозможно.



Вот что у меня есть до сих пор (это позволяет сохранять каждую отправку в данных.xml, но заменяет, если будет сделано другое представление - я хочу добавить, а не заменить):



Во-первых, индекс.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>


Далее, Дейта.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>


Наконец, зарегистрируйтесь.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');


Я искал в течение нескольких часов, но не нашел именно то, что искал. Также я старался изо всех сил, чтобы попробовать много моих собственных "не-рабочих-решений". Кроме того, я выбрал те части своего кода, которые имеют отношение к ответам на этот вопрос.
687   1  

1 ответ:

Вам нужно сделать program узел постоянным, присвоив ему значение типа:

$xml->program = "";

Добавьте эту строку непосредственно перед добавлением дочерних узлов:

$xml->program = "";
$xml->program->addChild('name', $name);
$xml->program->addChild('date', $date);
....

Comments

    Ничего не найдено.