2008/7/22 久米
クライアント側にActionScriptを使用し、PHPと連携することによって、強力なアプリケーションを作ることができます。
方法 | 説明 | |
1 | System.useCodepage=true; |
FlashテキストエンコーディングはUTF-8形式をデフォルトにしている。 |
2 | 送信用インスタンス=new LoadVars(); 受信用インスタンス=new LoadVars(); |
LoadVarsオブジェクトを生成する。 |
3 | 送信用インスタンス.変数1=・・・; | 送信用変数設定。 |
4 | 送信用インスタンス.sendAndLoad(URL,受信用インスタンス); |
指定したURLに変数送信し、その後、受信もするメソッド。 |
5 | 受信用インスタンス.onLoad =function(s){・・・} | 受信した時に発生するイベント。 引数sがあるので注意。 引数sは成功したか失敗したかのtrueかfalse |
方法 | 説明 | 例 | |
1 | $変数1=$_POST['変数1']; |
変数をPOSTで受取る |
$a=$_POST['dt']; $b=$_POST['msg']; |
2 | サーバ側の内部処理 | 例えばデータベース検索などをする。 |
|
3 | print "結果1=○○&結果2=○○&結果3=○○"; | 結果の変数名と値を 変数名=値のペアでプリントする。 複数ある場合は、間に&を入れる。 |
print "re=成功です。&x=".$x."&y=OK"; |
注)普通に作成した時、更新ボタンでカウンタが更新されないのはFlashのキャッシュが強いからです。
jusin.load("counter.php?r="+Math.random());などとurlにゴミをつけて毎回変わるようにすれば更新されます。
board.php
ポイント 複数のデータをひとつの文字列変数で渡すため、区切り記号として\tタブを使用する。
<?php //board.php require_once($_SERVER['DOCUMENT_ROOT']."/kume/common/db_value.php"); function convertForAS($a){//ActionScriptに送信するための変換関数 $b=str_replace("\r\n", "\n", $a);//改行コードをActionScript用に1つにする。 $c=str_replace("&", "&", $b);//送信用に&を全角に。 return $c; } $con=mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD); $sel=mysql_select_db($DBNAME, $con); $sql="SELECT * FROM bbs ORDER BY id DESC LIMIT 30"; $rst=mysql_query($sql, $con); $name=""; $regidate=""; $message=""; $len=mysql_num_rows($rst); for($i=0;$i<$len;$i++){ $row=mysql_fetch_array($rst); $name.=$row["name"]; $regidate.=$row["regidate"]; $message.=$row["message"]; if($i!=$len-1) { //区切り文字として\t(タブ)を使用する $name.="\t"; $regidate.="\t"; $message.="\t"; } } mysql_free_result($rst); $cls=mysql_close($con); $name=convertForAS($name); $regidate=convertForAS($regidate); $message=convertForAS($message); print "name=".$name."®idate=".$regidate."&message=".$message; ?> |
board.flaのフレームアクション
ポイント 受け取った文字列変数を分解するため、split("\t")関数を利用する。
//掲示板表示のスクリプト bodyPanel.body_txt.html=true; System.useCodepage = true; loadV = new LoadVars(); loadV.load("board.php"); loadV.onLoad =function(success){ if(!success) return; var n=new Array(); var r=new Array(); var m=new Array(); n=loadV.name.split("\t"); r=loadV.regidate.split("\t"); m=loadV.message.split("\t"); var body=""; for(var i=0;i<n.length;i++){ body=body+"<p>□□□□□□□□<br>"; body=body+"<b>投稿者:"+n[i]+"</b>"; body=body+" 投稿日時:"+r[i]+"<br>"; body=body+m[i]+"<br></p>"; } bodyPanel.body_txt.htmlText=body; } |
注)flashはキャッシュが強力なので、flaを変更した時は、ブラウザを一旦閉じてから試してみましょう。
は推して図るべし
コラム PHPとJavaScript
掲示板 submit.htmの例
|