DBとFlashを連携したい(2)
2005年10月14日 プログラム[本題の前に]
1週間程前に書いた記事の続き。
前回はDBからデータをロードして、フラッシュで表示することを考えた。
(前回:http://diarynote.jp/d/38557/20051005.html)
その後、特殊文字の扱いに関する情報提供をいただきました。
ここに付記しておきます。ありがとうございます。
[データの送信と登録]
今回は、フラッシュからデータを送信してDBに登録してみようと思う。
データの送信には、データのロードと同様にloadVarsクラスの中にある、
sendAndLoadメソッドを利用する。
サーバ側にデータを送信し、その結果を受け取ることのできるメソッドで、
フラッシュから外部にデータを送信する際に用いられる。
ここで、ちょっとした注意点を2点程。
フラッシュ単体(html上になく単独での動作)の場合、POST動作はサポートされていない。
データ送信の容量制限はサーバ側の設定に依存する形になるので、注意。
sendで処理を行っても、データの処理を行えないことが起こることがある。
実際私もそうなってしまうので、sendAndLoadメソッドを使用して、
サーバ側からデータを出力しない方法で処理を行うことにした。
これを踏まえて、実際の処理の過程を書くと以下のようになる。
(1)【Flash】LoadVarsオブジェクトにサーバ系言語に渡すデータを設定する。
loadイベントで受け取るときと同様に、変数を列挙していけばいい。
サーバ側からのデータを受け取るLoadVarsオブジェクトは、作成するだけで、
処理を行わないことも多いので、スコープを調節して書くこと。処理の負荷軽減につながる。
(2)【Flash】LoadVarsオブジェクトからデータを送る。
ここは、型どおり。
(3)【PHP】フラッシュから送られてきたデータを受け取ってDBに格納。
この部分の処理は割愛。
$_REQUEST[’id’]というような感じで受け取り、SQL文を発行するなり、なんなりと。
(4)【PHP】フラッシュに完了したことを伝える。
$echo "$result_str=ok";
とでも出力すればよい。
この部分の処理は場合によっては省略しても良く、
実際にフラッシュでデータを受け取る部分は割愛する。
登録する部分は特に問題もなくできますな。loadVarsの取り扱いに関しは以上で終了です。
1週間程前に書いた記事の続き。
前回はDBからデータをロードして、フラッシュで表示することを考えた。
(前回:http://diarynote.jp/d/38557/20051005.html)
その後、特殊文字の扱いに関する情報提供をいただきました。
ここに付記しておきます。ありがとうございます。
特殊文字はエスケープ
http://www.macromedia.com/jp/support/flash/ts/documents/fl0100.html
[データの送信と登録]
今回は、フラッシュからデータを送信してDBに登録してみようと思う。
データの送信には、データのロードと同様にloadVarsクラスの中にある、
sendAndLoadメソッドを利用する。
サーバ側にデータを送信し、その結果を受け取ることのできるメソッドで、
フラッシュから外部にデータを送信する際に用いられる。
LoadVars.sendAndLoad()
Player
Flash Player 6。Flash Player 7 では動作が変更されています。
シンタックス
my_lv.sendAndLoad(url:String, targetObject[, method:String]) : Boolean
パラメータ
url ストリング; 変数のアップロード先の URL。
targetObject LoadVars; ダウンロードされた変数が入るLoadVars オブジェクト。
method ストリング; HTTP プロトコルの GET メソッドまたはPOST メソッド。
戻り値
ブール値。
(AS仕様書より抜粋)
ここで、ちょっとした注意点を2点程。
(1)POST送信の制限
http://www.macromedia.com/jp/support/flash/ts/documents/fl0252.html
フラッシュ単体(html上になく単独での動作)の場合、POST動作はサポートされていない。
データ送信の容量制限はサーバ側の設定に依存する形になるので、注意。
(2)laodvars.sendメソッドの不具合
http://www.flash-jp.com/modules/newbb/viewtopic.php?topic_id=790&;forum=7
sendで処理を行っても、データの処理を行えないことが起こることがある。
実際私もそうなってしまうので、sendAndLoadメソッドを使用して、
サーバ側からデータを出力しない方法で処理を行うことにした。
これを踏まえて、実際の処理の過程を書くと以下のようになる。
(1)【Flash】LoadVarsオブジェクトにサーバ系言語に渡すデータを設定する。
var send_lv:LoadVars = new LoadVars();
var result_lv:LoadVars = new LoadVars();
send_lv.id = "03";
send_lv.name = "Baloth";
loadイベントで受け取るときと同様に、変数を列挙していけばいい。
サーバ側からのデータを受け取るLoadVarsオブジェクトは、作成するだけで、
処理を行わないことも多いので、スコープを調節して書くこと。処理の負荷軽減につながる。
(2)【Flash】LoadVarsオブジェクトからデータを送る。
send_lv.sendAndLoad("http://hoge.hoge.php";, result_lv, "POST");
ここは、型どおり。
(3)【PHP】フラッシュから送られてきたデータを受け取ってDBに格納。
この部分の処理は割愛。
$_REQUEST[’id’]というような感じで受け取り、SQL文を発行するなり、なんなりと。
(4)【PHP】フラッシュに完了したことを伝える。
$echo "$result_str=ok";
とでも出力すればよい。
この部分の処理は場合によっては省略しても良く、
実際にフラッシュでデータを受け取る部分は割愛する。
登録する部分は特に問題もなくできますな。loadVarsの取り扱いに関しは以上で終了です。
コメント