Добавить текст в XML-файл через php в AS3

я создаю очень простой CMS Панель для моего сайта (я все еще lerning).
И у меня есть некоторые проблемы. Я создал панель в Flash-AS3, который загружает php файл, который открывается и сохраняет xml data, Вот коды:

Код AS3:

function onClicked(e:MouseEvent):void
{
var myXmlString:String = "<?xml version=\"1.0\" encoding=\"utf-8\"?><NEWSCONTENT><NEWS ID=\"" + idTxt.text + "\" IMG=\"" + sourceTxt.text +"\" TITLE=\"" + titleTxt.text + "\" DATE=\"" +   dateTxt.text + "\" CONTENT=\"" + contentTxt.text + "\"/></NEWSCONTENT>";

trace(myXmlString);

var myXml:XML = new XML(myXmlString);

var req:URLRequest = new URLRequest("phpXML.php");
req.data = myXml;
req.contentType = "text/xml";
req.method = URLRequestMethod.POST;

var loader:URLLoader = new URLLoader();

function onPHPLoaded(e:Event):void
{
statusTxt.text = "Dane zostaly zaktualizowane!";
}
loader.load(req);
loader.addEventListener(Event.COMPLETE, onPHPLoaded);
}

send_btn.addEventListener(MouseEvent.CLICK, onClicked);

Код PHP:

<?php

if (isset($GLOBALS["HTTP_RAW_POST_DATA"])) {
$xml = $GLOBALS["HTTP_RAW_POST_DATA"];
$file = fopen("www.xml", "w");
fwrite($file, $xml);
fclose($file);
echo ($GLOBALS["HTTP_RAW_POST_DATA"]);
}

?>

XML-код:

<?xml version="1.0" encoding="utf-8"?>
<NEWSCONTENT>

<NEWS ID="1" IMG="galerry/1b.jpg" TITLE="Let's begin!" DATE="23-11-2014" CONTENT="This is the content"/>

</NEWSCONTENT>

Все отлично работает без errors, но это не работает так, как я хочу.

Теперь, когда я положил data/"strings" к text fields это удаляет все xml data и сохраняет его снова с текстом, который я написал. Но я хочу добавить следующую строку "<NEWS ID="1" IMG="galerry/1b.jpg" TITLE="Let's begin!" DATE="23-11-2014" CONTENT="This is the content"/>" к xml файл.

Я пытался изменить: $file = fopen("www.xml", "w"); в $file = fopen("www.xml", "a");, но это добавило целое xml Снова код для первого.

Кто-нибудь может помочь?

0

Решение

Если я понял вашу проблему, у вас есть XML-файл для сохранения новостей и каждый раз, когда вы хотите добавить новый. Если да, вам не нужно каждый раз отправлять весь контент XML, вы можете просто отправить новые атрибуты новостей и добавить их в существующий файл. Для этого возьмите этот код:

PHP-код:

<?php

if(count($_POST) == 5){

$xml_path = 'news.xml';

if(!file_exists($xml_path)){

// if our xml file didn't exist, create it
$xml = new DOMDocument('1.0', 'UTF-8');
$xml->preserveWhiteSpace = FALSE;
$root = $xml->createElement('NEWSCONTENT');
$xml->appendChild($root);

} else {

// if our xml file exists, load it
$xml = new DOMDocument();
$xml->preserveWhiteSpace = FALSE;
$xml->load($xml_path);

// get our root element : NEWSCONTENT
$root = $xml->documentElement;

}

// create our news element
$news = $xml->createElement('NEWS');

// add atributes : ID, IMG, TITLE, DATE and CONTENT
$attr_id = $xml->createAttribute('ID');
$attr_id->value = $_POST['id'];

$attr_img = $xml->createAttribute('IMG');
$attr_img->value = $_POST['img'];

$attr_title = $xml->createAttribute('TITLE');
$attr_title->value = $_POST['title'];

$attr_date = $xml->createAttribute('DATE');
$attr_date->value = $_POST['date'];

$attr_content = $xml->createAttribute('CONTENT');
$attr_content->value = $_POST['content'];

$news->appendChild($attr_id);
$news->appendChild($attr_img);
$news->appendChild($attr_title);
$news->appendChild($attr_date);
$news->appendChild($attr_content);

$root->appendChild($news);

$xml->formatOutput = true;

// save our new xml file
$xml->save($xml_path);

}

?>

Код ActionScript:

var btn:Btn = new Btn();
btn.addEventListener(MouseEvent.CLICK, onClicked);
addChild(btn);

function onClicked(e:MouseEvent):void {

var url:String = 'phpXML.php';
var variables:URLVariables = new URLVariables();
variables.id = idTxt.text;
variables.img = sourceTxt.text;
variables.title = titleTxt.text;
variables.date = dateTxt.text;
variables.content = contentTxt.text;

var request:URLRequest = new URLRequest(url);
request.data = variables;
request.method = URLRequestMethod.POST;

var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, onPHPLoaded);
loader.load(request);

function onPHPLoaded(e:Event):void {

statusTxt.text = "Dane zostaly zaktualizowane!"
}

}

Конечно, этот минималистский рабочий код выполняет свою работу, он каждый раз отправляет новости и сохраняет их в news.xml но вы должны добавить элементы управления …

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector