PEAR XML_Query2XMLを利用したPHPからFlash(AS3)へのXMLデータの渡し方について

このQ&Aのポイント
  • PHPからFlashへのデータ受け渡しについて、XML形式が最適であることが分かった。しかし、XMLの操作方法についてわからず戸惑っている。
  • PHPのプログラムでは、XML/Query2XMLとMDB2を利用してデータベースのデータをXMLに整形している。
  • Flashのプログラムでは、URLLoaderを使用して外部のXMLファイルを読み込み、名前と価格の情報を表示している。
回答を見る
  • ベストアンサー

PEAR XML_Query2XMLを利用したPHPからFlash(AS3)へのXMLデータの渡し方について。

毎度お世話になっております。 前回させていただいた質問で、PHPからFlashへのデータ受け渡しをしたいと考えていたところ、XML形式がいいと教えていただき、試していました。 FlashのただのXMLファイルの読み込みはでき、PHPのPEAR XML_Query2XMLを利用してデータベースのデータをXMLに整形することも出来ました。 しかし、その後の連結的な操作が分からず戸惑っております。 お時間があるときでよろしいので、何を使ったらよいかなどアドバイス等を頂ければと思います。 よろしくお願いします。 環境 Flash CS3(AS3) PHP5.2.6 MySQL5.1.29 Apache2.2.10 ・PHPの今のところのプログラム <?php // include required files include 'XML/Query2XML.php'; include 'MDB2.php'; try { // initialize Query2XML object $q2x = XML_Query2XML::factory(MDB2::factory('mysql://ユーザ名:パスワード@localhost/データベース名')); // generate SQL query // get results as XML $sql = "SELECT * FROM table名"; $xml = $q2x->getFlatXML($sql); // send output to browser header('Content-Type: text/xml'); $xml->formatOutput = true; echo $xml->saveXML(); } catch (Exception $e) { echo $e->getMessage(); } ?> ・AS3の今のところのプログラム System.useCodePage = true; // 外部XMLはURLLoaderで読み込む var myLoader:URLLoader = new URLLoader(); myLoader.addEventListener(Event.COMPLETE, completeData); myLoader.load(new URLRequest("test.xml")); // 読み込み完了後の処理 function completeData(event:Event):void { // 読み込んだ文字列をmyXMLに入れる var myXML:XML = new XML(myLoader.data); // データのnameとpriceの値をリストアップ表示 trace(myXML.drink[1].name); for (var i = 0; i < myXML.drink.length(); i++) {; //ダイナミックテキストでi番目を表示 db.text = myXML.drink[i].name trace(myXML.drink[i].name); trace(myXML.drink[i].@price); } } よろしくお願いします^^

noname#131718
noname#131718
  • PHP
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

1.phpからの出力を確認してtest.xmlと同様になっているのを確認 2.FLASH側でphpを呼び出す   myLoader.load(new URLRequest("http://hoge/hoge.php")); 以上でよいです、ちゃんとwebサーバーないとだめですけど

noname#131718
質問者

お礼

おかげさまで完成させることが出来ました^^ 本当にありがとうございました。

関連するQ&A

  • [as3]flashで外部phpの読み込み

    外部phpを読み込みechoで表示した値をFlash上のダイナミックテキストに表示させたいのですが、どうしても上手くいきません。 ■現状は以下のようになっています。 ・外部phpファイルにはechoにて、contents=******************** という出力結果がでます。 ・ダイナミックテキストを作りダイナミックテキスト名がname_strになっています。 ・as3のルートの1フレーム目に以下のようにasを書いています。 import flash.net.URLLoader; import flash.net.URLRequest; import flash.net.URLVariables; import flash.events.Event; // [2] URLLoaderとURLRequestインスタンスの生成 var myLoader:URLLoader = new URLLoader(); var myRequest:URLRequest = new URLRequest("http://localhost.*******.php"); // [3] ロード完了時の処理をイベントリスナーに登録 myLoader.addEventListener(Event.COMPLETE, onComplete); // [4] 外部テキストファイルのロード実行 myLoader.load(myRequest); // [5] リスナー関数の定義 function onComplete (eventObject:Event) { var my_str:String = eventObject.target.data var myVars:URLVariables = new URLVariables(my_str); for (var name_str:String in myVars){ trace([name_str, myVars[name_str]]); } } ・環境はxamppにてローカルで作業をしています。 初心者でとんちんかんなことをしていまっているかもしれませんが、何卒よろしくお願い致します。

    • ベストアンサー
    • Flash
  • as3 変数のスコープについて

    xmlの読み込みをしていますが、 最後のtraceで内容が表示されません。nullになります。 var myXML:XML; var imgSrc:String ; var url:URLRequest = new URLRequest("test.xml"); var xmlLoader:URLLoader = new URLLoader(); xmlLoader.dataFormat = URLLoaderDataFormat.TEXT; xmlLoader.load(url); xmlLoader.addEventListener(Event.COMPLETE, comp); function comp(event:Event):void { myXML = XML(xmlLoader.data); imgSrc = myXML.img[0]; } trace(imgSrc);←ここがnullです。 function内でtraceすると問題なく表示されるのですが、 一体どうしてでしょうか。 ご教授お願いいたします。

    • ベストアンサー
    • Flash
  • PHPからFlashにXMLをそのまま渡す方法

    こんにちは PHPでXMLファイルを読み込み、それをそのままFlashに渡しFlash側でXMLをパーサしようと、このように書きました ------------------------------------------------------- (PHP) <?php $url = 'test.xml'; $h = fopen($url, "r"); $result_xml= ''; while(!feof($h)) { $result_xml.= fread($h, 4096); } fclose($h); echo "&data=$result_xml&"; ?> ------------------------------------------------------- (Flash) var xml:XML = new XML(); xml.load("work.php"); xml.onLoad = function(success:Boolean):Void { if (success) { trace(this.data); } }; ------------------------------------------------------- するとtraceの結果はundefinedでした。 PHPの出力結果が文字列型だということが原因のような気がするのですが、PHP側から文字列で出力するのではなく、XMLで出力するにはどうしたらよいでしょうか? リファレンスを探してみたのですが、なかなかそういった関数が見つかりませんでした。 よろしくお願いします。

  • XMLでFlashの変数を管理できませんか?

    XMLでFlashの変数を管理できませんか? ただいまFlashの変数(例えば、リンク先、読込む画像のURLや変数の数値など)をXMLで管理できたらいいなぁと思いサンプルを作成したのですがXMLに記述したテキストを変数に代入するとこまではできたのですが、その変数をFlash内で自由に扱えません。 どうしたらよいでしょうか?作成環境はActionScript3、Flash CS4です。 ■XML:var_xml.xml内は以下のように記述しています。 <?xml version="1.0" encoding="UTF-8"?> <move>  <id ex="Slow Speed" speed="1" />  <id ex="Normal Speed" speed="3" />  <id ex="Fast Speed" speed="5" />  <id ex="Very Fast Speed" speed="8" /> </move> ■Flash(w:700xh:100)内は ルートの1フレーム目に stop(); XML.ignoreComments=true; XML.ignoreWhitespace=true; XML.ignoreProcessingInstructions=true; var myRequest:URLRequest=new URLRequest("./var_xml.xml"); var myLoader:URLLoader=new URLLoader(); myLoader.load(myRequest); myLoader.addEventListener(Event.COMPLETE, xSetText); function xSetText(eventObject:Event):void { var varXML:XML=XML(myLoader.data); var speed:int=int(varXML.id[2].@speed);←ここで変数作る gotoAndPlay(2); } ルートの2フレーム目はStop();を記述して ステージにはMovieClip(BaseMC)が1個置いてあります。そのMovieClip(BaseMC)の1フレーム目には以下のようにASを記述しています。 var MC:MovieClip = new moveMC();←適当な図形が一つ置いてあるMC MC.x=0; MC.y=5; addChild(MC); addEventListener(Event.ENTER_FRAME, MoveFunc); function MoveFunc(event:Event):void { MC.x+=speed;←ここにさっきのXMLから引っ張って代入した変数を使いたい if (MC.x>700) { MC.x=0; } } 上記のようなFlashを作成したのですが、エラーがでてしまいます。もしこんな感じでXMLを利用して変数を管理できたら便利だと思うのですが、できるのでしょうか? 検索してもギャラリーをXMLで管理するとかでるのですが、XMLの読込完了に実行される関数内で変数にURLを代入とかtrace(~);で出力してとか、知りたい情報が手に入らないのでどなたか教えていただけませんか?お願いします。

    • ベストアンサー
    • Flash
  • actionscript3.0、XMLのリンク集

    actionscript3.0、XMLのリンク集 Flash、XMLともに初心者です。 Flashに外部XMLを読み込んで、更新のしやすいリンク集を制作したいと思います。 調べながら作っているのですが行き詰っております。。 やりたい事としては、 「swf内のテキストエリアに外部から読み込んだXMLを表示させリンクを張る」です。 例として ■A社 http://www.○○○.com ■B社 http://www.△△△.com ■C社 http://www.□□□.com のようなものです。 「■A社」の部分までは表示させることができたのですが、 その後URLを表示させリンクを張るという処理のしかたが分かりません。 あとなぜかXMLには複数行入っているのですがswfには1行目しか表示されません。。 制作したXMLとactionscriptは下記のようなものです。 <?xml version="1.0" encoding="utf-8"?> <data> <list name="■A社" /><url>http://www.○○○.com</url> <list name="■B社" /><url>http://www.△△△.com</url> <list name="■C社" /><url>http://www.□□□.com</url> </data> var xmlURL:URLRequest = new URLRequest("link.xml"); var xmlLoader:URLLoader = new URLLoader(); xmlLoader.load(xmlURL); var myXML:XML = new XML(); xmlLoader.addEventListener(Event.COMPLETE, xmlLoadStart); function xmlLoadStart(e:Event):void { myXML = XML(xmlLoader.data); trace(); link_txt.text = myXML.list[0].@name; } 環境はWin XP、Flash CS3、as3、flash player9です。 何卒お願い致します。

    • ベストアンサー
    • Flash
  • flashでPHPファイル(実際は該当するxmlを呼ぶ)を読み込む方法について

    FLASH(AS2.0)でPHPファイル(実際は該当するxmlを呼ぶ)を読み込むようにするにはどのようにしたらいいのですか? 現状では、ローカルのxmlファイルを読み込むように、 下記のように書いてあります。 var objXML:XML = new XML(); objXML.ignoreWhite = true; objXML.onLoad = function(success:Boolean):Void { if(success) { loadXML(this); } } var menuArray:Array = new Array(); // function loadXML(objXML:XML):Void { var dataNode:XMLNode = objXML.firstChild; var menuNodes:Array = dataNode.childNodes; for(var i:Number = 1; i <= menuNodes.length; i++) { var menuNode:XMLNode = menuNodes[i-1].childNodes; var Name:String = menuNode[0].firstChild.nodeValue; menuArray[i] = { title:Name}; } myVars(menuArray); } objXML.load("sample.xml"); この状態から、外部<http://aaaa/sample.php>URLに アクセスして、PHPファイルを読み込むにはどのようにしたら よいのか全くわかりません。 objXML.load("sample.xml"); 上記の()の中に直接URLを挿入すると、 ローカルでは確認できるのですが、 ファイルをアップすると、まったく読み込めてはいません。 ActionScriptは全くわからないので、ご教授よろしくお願いいたします。

  • FLASH,AS3.0 クリック後、xmlからファイルを取り出す方法

    as3.0初心者です。 恐れ入りますが、現在製作中のプログラミングに関することで教えていただきたいことがあります。 外部xmlより写真データを読み込み、ステージに並べるプログラムを作っています。参考書等のサンプルからステージに並べるまではわかったのですが、ボタン【インスタンス名:btn_a】をクリックした後に写真がステージに現れるようにアレンジしたいのですが…色々ためしてもエラーが出てしまいうまくいきません。どなたか教えていただけないでしょうか? 出来れば現在のプログラムをアレンジして使いたいと思っています。 初歩的な質問で申し訳ありませんがご教授いただけないでしょうか? ★xnlloader package { import flash.display.DisplayObjectContainer; import flash.system.System; import flash.net.URLLoader; import flash.net.URLRequest; import flash.events.Event; public class PhotoXMLLoader { private var container:DisplayObjectContainer; private var xmlLoader:URLLoader; private var urlReq:URLRequest; //コンストラクタ public function PhotoXMLLoader(container:DisplayObjectContainer) { this.container=container; //URLLoaderのインスタンスを作る xmlLoader=new URLLoader(); //リスナーを登録する xmlLoader.addEventListener(Event.COMPLETE,onLoaded); //URLRequest urlReq=new URLRequest(); } //XMLファイルの読み込み public function loadXML(xmlurl:String,isUnicode:Boolean=true):void { //XMLファイルのURL urlReq.url=xmlurl; //unicodeでなければtrueに設定する System.useCodePage=! isUnicode; //読み込み開始 xmlLoader.load(urlReq); } //読み込み完了〜写真を並べる protected function onLoaded(eventObj:Event):void { //受信したxmlから値を取り出す var xmlObj:XML=new XML(xmlLoader.data); var photos:XMLList=xmlObj.photolist.photo; var w:int=290+10; var h:int=40+10; var row:int=1; for (var i:int=0; i<photos.length(); i++) { var photo:XML=photos[i]; //写真のURLを調べる var url:String="img/"+photo.@fname; //写真を読み込んで並べる var photoLoader:GoodLoader=new GoodLoader(url); photoLoader.x=w*(i%row); photoLoader.y=h*int(i/row)+200; ; container.addChild(photoLoader); } } } } ★goodloader package { import flash.display.Loader; import flash.net.URLRequest; import flash.events.Event; import fl.transitions.Tween; import fl.transitions.easing.*; import flash.events.IOErrorEvent; public class GoodLoader extends Loader { var urlReq:URLRequest; var tw:Tween; public function GoodLoader(url:String) { //読み完了イベントのリスナーを登録する this.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded); //IOエラーイベントのリスナーを登録する this.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onIOError); urlReq=new URLRequest(url); load(urlReq); } //読み込みエラーに対応する protected function onIOError(eventObj:IOErrorEvent):void { urlReq.url="image/io_error.jpg"; load(urlReq); } //フェードインで表示する protected function onLoaded(eventObj:Event):void { tw=new Tween(this,"alpha",Regular.easeInOut,0,1,1,true); } } }

    • ベストアンサー
    • Flash
  • 【AS3.0 変数をPHPにPOSTする方法】

    【AS3.0 変数をPHPにPOSTする方法】 開発環境:WinXP ADOBE CS4 ActionScript3.0 すいません。教えてください。 Flashで得た複数の値を外部ファイルに出力したいと考えています。 例えば、btnA・btnB・btnCという3つのボタンがあり、 ボタンをクリックすると、クリック数がカウンターになり、 その値をPHPファイルにPostしたいと考えています。 現在のソース(btnAのみ) ---------------------------------------------------------------- var req:URLRequest = new URLRequest ("http:++++++.php"); req.method = URLRequestMethod.POST; var variables:URLVariables = new URLVariables(); //送信パラメータ variables.num01 = 0; req.data = variables; var loader:URLLoader = new URLLoader (req); var are01=0 var num01=0 a_btn.addEventListener(MouseEvent.CLICK,aClick); function aClick(event:MouseEvent):void{ var num01=are01++ trace(num01) var printdata:URLVariables = new URLVariables(event.target.data); loader.load(req); } -------------------------------------------------------------- num01の数値がトレースはされているのですが、 phpの値に代入されません。 --------------------------------------------------------------- phpソース $comment = $_POST['num01']; print "rData=" . $comment;</body> ---------------------------------------------------------------- 同時に複数の値・仮にnum02・num03も同様にPHPにPOSTしたいと考えているのですが、 その際の方法がわかりません。 恐れ入りますが、ヒントだけでもよいので教えていただけないでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • PHP5 XML クエリ 

    PHP5でXMLのテストをしているのですが、わからないことがあります。 --- test.xml <A> <B> <C>TEST</C> <D> <E>1</E> <F>2</F> <G>3</G> </D> </B> </A> <?php $doc = new DOMDocument; $doc->preserveWhiteSpace = false; $doc->Load('test.xml'); $xpath = new DOMXPath($doc); $query = '//A/B/D/E'; $entries = $xpath->query($query); foreach ($entries as $entry) { echo "$entry->nodeValue\n"; } で1が返されますが、 $query = '//A/B/D/E'; で、Eのノードを決め打ちしているので、foreachで回すのが気に入らないのですが この方法が一般的でしょうか? $e = なんとか??; で$entries = $xpath->query($query); のあと、取得できないでしょうか? あと、クエリという使い方で例えば2以上データを取得する この場合はF,Gの要素を取得するクエリの記述方法が知りたいです。

    • ベストアンサー
    • PHP
  • Flashにデータを呼び込む

    MySQLデータをFlashに呼び込む作業でどうしてもうまく行かなくて困っています。アクションスクリプトバージョンが2.0です。 dog.php というphpファイルで作って、MySQLデータを読み出すところまで成功しました。実際に、http://www.XXXXXX.com/dog.phpをブラウザで打つと 該当のデータが表示されます。 次に、下記のようにFlashにアクションスクリプトを書いてデータをFlashで表示させようとしていますが、、、なかなかうまく行きません。どこが間違っていますか?(なにも表示されません。) var theXML:XML = new XML(); theXML.ignoreWhite = true; theXML.onLoad = function() { var nodes = this.firstChild.childNodes; for(i=0; i<nodes.length; i++) { doglist.addItem(nodes[i].firstChild.nodeValue,i); } } theXML.load("http://www.XXXXXX.com/dog.php"); (ここで、doglistはコンポネットリストの変数です。) もし、このほかもっといい方法がありましたら、ご教授よろしくお願いいたします。

    • ベストアンサー
    • Flash

専門家に質問してみよう