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の例
|