create database testflash;
create table testing(
number varchar(20)
);
再來,我們要建立可已用的服務(PHP Class) Counter
<?//Counter.phpclass Counter{
var $dbhost = "localhost"; // 你host的位置(可以用IP)
var $dbname = "testflash"; //你在資料庫表的名稱
var $dbuser = "root"; //使用者帳號
var $dbpass = "******"; //使用者密碼(自己設)
var $conn;
function Counter(){ //這個function主要是連接資料庫
$this->conn = mysql_pconnect($this->dbhost, $this->dbuser, $this->dbpass);
mysql_query("SET NAMES 'utf8'");
mysql_select_db ($this->dbname);
}
function getData(){ //這個是從資料庫拿取資料
$rs=mysql_query("SELECT number FROM testing"); //number是目錄的名稱,若要取完全部資料可用*
return $rs;
}
function insert($number) { //這是輸入資料進資料庫
$sql="INSERT into testing (number) values";
$sql.="('$number')";
$result = mysql_query($sql)or die(mysql_error());
if($result)
return mysql_insert_id($this->conn);
}
}?>
以上三個黃字的部份:檔名、Class 名、建構子,一定要相同喔!
而在此Class下有兩個方法:getData,insert
接著,我們可以開發前端Client
AS是透過http://localhost/amfphp/gateway.php去指名服務(PHP Class)的位置
intext,btn_1如下
as:
stop();
import flash.net.URLRequest;
import flash.net.NetConnection;
import flash.net.Responder;
import flash.events.NetStatusEvent;
import flash.events.MouseEvent;
import flash.text.TextField;
var gateway:String = "http://localhost/amfphp/gateway.php"; //連接amfphp裡的gateway.phpvar connection:NetConnection;
var responder:Responder;
btn_1.addEventListener(MouseEvent.CLICK,onBtnSendClick);
function onBtnSendClick(e:MouseEvent):void{
responder = new Responder(onResult, onFault); //資料傳送成功或失敗
connection = new NetConnection;
connection.connect(gateway);
connection.call('Counter.insert', responder,intext.text.toString()); //call我們寫的PHP(檔案名稱.副程式名稱)
}
function onResult(onResult:Object):void { //資料傳送成功時
var saveData:Object=onResult;
trace(saveData);
}
function onFault(fault:Object):void { //資料傳送失敗時
trace("~failt~");
}
以上只要在input輸入任何值,按下btn_1後就會將值insert到我們的後端testflash資料庫裡
但阿斗遇到下面的問題:
##錯誤訊息
Error #2044: 未處理的 NetStatusEvent:。 level=error, code=NetConnection.Call.BadVersion
at save_php1_fla::MainTimeline/frame1()
要把第amfphp/gateway.php的139行的程式碼註解
//$gateway->disableStandalonePlayer();
至於支援中文的問題,把127行的程式改為
$gateway->setCharsetHandler("utf8_decode", "UTF-8", "UTF-8");或$gateway->setCharsetHandler("iconv", "big5", "big5");
就看你要使用的編碼
後來再次自己安裝amfphp
回覆刪除遇到問題還真是一羅框
問題一:
touch(): Utime failed: Permission denied
......amfphp/core/shared/util/MethodTable.php on line 164
解決:其實這是指你在amfphp/services/自製的class檔案權限不足~要開777(在自家電腦或它地無此問題,可能是虛擬機器給的帳號關係所以需要全開囉)
問題二:
回覆刪除gateway.php出現Warning:Unknow:open_basedir restriction in effect. File() is now within the allowed Path(s):(....../tmp/xxx.com) in Unknown on lice 0
解決:好吧!這問題我找非常非常久,幾乎所有blog都告訴你是版本php5.3以上不適用amfphp1.9
但我php5.2也出現了~phpinfo()查看safe_mode~這應該也不影響~難不成是open_basedir裡參數表示不讓我有往上閱讀資料夾名稱的權限~經一再翻找後~虛擬機經濟商表示~是和我共用同台SERVER的某USER使用會影響php的設定語法........我相信和safe_mode有關~也就是說5.3版以後的對safe_mode整個大改變才會不能用!!!!!