[本題の前に]

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の取り扱いに関しは以上で終了です。

コメント

最新の日記 一覧

<<  2025年6月  >>
1234567
891011121314
15161718192021
22232425262728
293012345

お気に入り日記の更新

最新のコメント

日記内を検索