Хорошо, поэтому я получил его работу, теперь единственная проблема заключается в том, что при добавлении нового представления он перезаписывает предыдущую запись. Мне нужно, чтобы добавить новейший файл в файл XML, а не загружать его и хранить его за X раз.
Вот рабочий php-скрипт, который создает xml-файл и берет данные из формы HTML и помещает их в файл XML.
<?php if (isset($_POST['lsr-submit'])) { header('Location: http://www.mesquiteweather.net/wxmesqLSR.php'); } $str = '<?xml version="1.0" encoding="UTF-8"?><entrys></entrys>'; $xml = simplexml_load_string($str); $fname = $_POST['firstname']; $lname = $_POST['lastname']; $location = $_POST['location']; $report = $_POST['report']; $description = $_POST['desc']; $fname = htmlentities($fname, ENT_COMPAT, 'UTF-8', false); $lname = htmlentities($lname, ENT_COMPAT, 'UTF-8', false); $location = htmlentities($location, ENT_COMPAT, 'UTF-8', false); $report = htmlentities($report, ENT_COMPAT, 'UTF-8', false); $description = htmlentities($description, ENT_COMPAT, 'UTF-8', false); $xml->reports = ""; $xml->reports->addChild('fname', $fname); $xml->reports->addChild('lname', $lname); $xml->reports->addChild('location', $location); $xml->reports->addChild('report', $report); $xml->reports->addChild('description', $description); $doc = new DOMDocument('1.0'); $doc->formatOutput = true; $doc->preserveWhiteSpace = true; $doc->loadXML($xml->asXML(), LIBXML_NOBLANKS); $doc->save('test2.xml'); ?>
Вот файл xml, который он создает.
XML FILE
Вот форма для отправки в файл XML. Отправьте тестовую заявку, и она отобразит вас на странице, но вы заметите, что она перезапишет последнее, а не добавит в файл XML.
HTML-форма
Это то, что я придумал, хорошо работает и тестировался.
ПРИМЕЧАНИЕ . Однако, если файл ( file.xml
) не существует, он выкинет ошибку, поэтому, если вы CRON
способ автоматического удаления старого файла (ов) с помощью CRON
или любого другого метода (вы упомянули: ". .. и сохраните его за X промежуток времени. ") , вам придется придумать способ создания предварительно построенного структурированного файла с хотя бы одним набором записей внутри него.
Например:
<?xml version="1.0" encoding="UTF-8"?> <entries> <reports> <timestamp>May 31, 2013, 11:56 am</timestamp> <fname>Fred</fname> <lname>Fletcher</lname> <location>Canada</location> <report>Wind Damage</report> <description>Winds were gusting mighty hard today!</description> </reports> </entries>
Это относительно легко сделать, я сделал это раньше, if file exists...
Вот мой рабочий код:
<?php // Script by Fred Fletcher, Canada. $fname = $_POST['firstname']; $lname = $_POST['lastname']; $location = $_POST['location']; $report = $_POST['report']; $description = $_POST['desc']; $xml = new DOMDocument('1.0', 'utf-8'); $xml->formatOutput = true; $xml->preserveWhiteSpace = false; $xml->load('file.xml'); $element = $xml->getElementsByTagName('reports')->item(0); $timestamp = $element->getElementsByTagName('timestamp')->item(0); $fname = $element->getElementsByTagName('fname')->item(0); $lname = $element->getElementsByTagName('lname')->item(0); $location = $element->getElementsByTagName('location')->item(0); $report = $element->getElementsByTagName('report')->item(0); $description = $element->getElementsByTagName('description')->item(0); $newItem = $xml->createElement('reports'); $newItem->appendChild($xml->createElement('timestamp', date("F j, Y, g:ia",time())));; $newItem->appendChild($xml->createElement('fname', $_POST['firstname'])); $newItem->appendChild($xml->createElement('lname', $_POST['lastname'])); $newItem->appendChild($xml->createElement('location', $_POST['location'])); $newItem->appendChild($xml->createElement('report', $_POST['report'])); $newItem->appendChild($xml->createElement('description', $_POST['desc'])); $xml->getElementsByTagName('entries')->item(0)->appendChild($newItem); $xml->save('file.xml'); echo "Data has been written."; ?>
«Штепсель» как комментарий в скрипте был бы приятным, «Script by Fred Fletcher, Canada». (Подмигивание)
Дайте мне знать, как это работает для вас.
Я не уверен, что у меня есть ваш вопрос, но если вам нужно создать файл, который уникален для каждого представления, вы не можете просто использовать эхо, вы должны фактически создать файл.
Также, если после отправки вы перенаправляетесь на другой файл PHP, как вы можете обрабатывать данные для записи в переменные?
Пример создания файла:
<?php // testfile.php $fh = fopen("testfile.xml", 'w') or die("Failed to create file"); $text = <<<_END Line 1 Line 2 Line 3 _END; fwrite($fh, $text) or die("Could not write to file"); fclose($fh); ?>