2014-12-09 4 views
0

내 웹 사이트에 대해 매우 간단한 CMS 패널을 만드는 중입니다. (여전히 배우고 있습니다.) 그리고 몇 가지 문제가 있습니다. 나는 Flash-AS3에 패널을 만들었습니다. php 파일을로드하면 xml data이 열리고 저장됩니다.AS3의 PHP를 통해 xml 파일에 텍스트를 추가하십시오.

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없이 잘 작동하지만 그것은을 작동하지 않습니다 나는하고 싶어.

text fieldsdata/"strings"을 입력하면 모두 xml data이 삭제되고 작성한 텍스트가 다시 저장됩니다. 하지만 파일에 다음 줄을 추가하고 싶습니다. "<NEWS ID="1" IMG="galerry/1b.jpg" TITLE="Let's begin!" DATE="23-11-2014" CONTENT="This is the content"/>".

나는 $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); 

    } 

?> 

액션 코드 : 즉,이 코드를 가지고 들어 물론

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

고마워요. 그것은 내 문제를 도왔고 해결했습니다. 나는'php'에서 매우 새로 왔으며'xml database' 함수에서'add/edit/delete'를 사용하여'php'를 사용하여'cms'를 만들려고합니다. 플래시 웹에서 사용하고 싶습니다. 모든 뉴스를 추가, 편집, 삭제 및 표시하는 것과 같은 것입니다. 훌륭한 튜토리얼을 발견했지만 'mySQL 데이터베이스'를 사용하지만'XML'을 사용하고 싶습니다. 다음은 데모입니다 : http://falkencreative.com/forum/records/view.php 이제 편집 및 삭제 기능에 문제가 있습니다 ... 나머지 해결 방법도 표시하는 데 문제가 있습니까? –

+0

데모는 괜찮아 보입니다. 모든 작업이 정상적으로 작동합니다. 당신은 당신의 프로젝트에서 MySQL DB를 사용할 수 있으며 XML로 데이터를 플래시로 보낼 수 있습니다. 이것은 xml보다 낫습니다. – akmozo

+0

그것은 내 데모가 아니에요, 튜토리얼에서 왔습니다 : http://www.killersites.com/community/index.php?/topic/1969-basic-php-system-vieweditdeleteadd-records/ 나는 ecsactly 같은 것을 만들고 싶습니다. 'xml database' 만 사용하십시오. 나는 또한'MySQL'을 사용할 것이지만 결코 사용하지 않았다. –

관련 문제