記得前幾年有去參加過 Flash 的 RIA (Rich Internet Application) 技術介紹,當時覺得很新奇,Flash 打破了 HTML 的思維,網頁的規則;即使是 PHP 或 ASP 網頁;從資料庫存取資料都必須使網頁 Refresh (重新整理) 後PHP 或 ASP 再依給予的條件;到資料庫將資料撈出來或者寫進資料庫等動作,現在可以使用 Flash 直接存取資料庫,不過並不是使用 RIA 技術,若要使用 RIA 技術還要用到 Flash Communication Server 據說這個授權很貴,在於沒有這樣的條件下,我們只好使用變數傳遞的方式進行囉。
以下介紹我的做法,將資料庫的動作分為;新增、修改、刪除、查詢,說穿了就是讀出/寫入
首先分成二個部份;一個是 Flash 介面 ActionScript 部份另一個則是處理資料 PHP 的部份
資料庫動作:新增
新增 : Flash ActionScript 3
在建立一個 ActionScript 的圖層並在影格 1 填入程式碼, 不過下面這段程式碼,要填到被觸發的按鈕事件中喔,至於怎麼產生按鈕,及編寫一個按鈕的觸發事件,這我就不用多說了吧。
//宣告程式要處理的網址字串
var add_urls:String = "http://你的網站/要處裡寫入的.php";
//宣告一個網址載入器
var add_urll:URLLoader = new URLLoader();
//資料格式定義
add_urll.dataFormat = URLLoaderDataFormat.VARIABLES;
//網址載入
var add_urlr:URLRequest = new URLRequest(add_urls);
//定義傳值模式
add_urlr.method = URLRequestMethod.GET;
//網址資料格式過濾
var add_urlv:URLVariables = new URLVariables();
//●重要:要傳遞的變數●
var add_str:String = "try1="+txt1.text+"&try2="+txt2.text;
//網址資料格式過濾解碼
add_urlv.decode(add_str);
//資料變數帶入
add_urlr.data = add_urlv;
//執行傳值
add_urll.load(add_urlr);
上面程式碼 txt1.text 及 txt2.text 為 Flash 上我們定義的物件,這邊要注意一下 Flash 上面佈置的元件,在屬性 " 實體名稱 " 一定要取喔。所以我將這個輸入欄位的屬性" 實體名稱 " 取為 txt1 及 txt2 ,這二個欄位就是我要傳給 PHP 讓 PHP 幫我寫入資料庫的動作。
新增 : PHP
$conn = mysql_connect("資料庫主機位置", "資料庫帳號", "資料庫密碼");
$database_conn = "要操作的資料庫名稱";
mysql_select_db("要操作的資料庫名稱",$conn);
mysql_query("SET NAMES 'utf8'"); //宣告字元這裡統一使用 utf8
$ttry1 = $_GET['try1']; //從 Flash 傳來的變數 1 使用 Get 的方法
$ttry2 = $_GET['try2']; //從 Flash 傳來的變數 2 使用 Get 的方法
//將變數寫入資料庫,是的這資料庫就 2 個欄位
$insertSQL = sprintf("INSERT INTO bas_member (try1, try2) VALUES (%s, %s)",
GetSQLValueString($ttry1, "text"),
GetSQLValueString($ttry2, "text"));
mysql_select_db($database_conn, $conn); //執行資料庫寫入
$Result1 = mysql_query($insertSQL, $conn) or die(mysql_error());
注意到,我取的變數名稱了吧 try1 及 try2 這裡就是要傳給 PHP 的變數,是的由於我的資料庫只有 2 個欄位所以就只用 2 個變數囉。這個 PHP 程式寫好後記得取好與 Flash 對應的名稱:
(擷取Flash 第一行來參考)
var add_urls:String = "http://你的網站/要處裡寫入的.php";
要處理寫入的.php ← 示範檔名(當然最好不要取中文檔名)
以上寫完後, Flash 直接 Ctrl + Enter 產生 SWF 直接來試試看囉,按一下 FLASH 上面的寫入按鈕,然後再去 phpMyAdmin 看看資料有沒有寫入。
