flash與資料庫(DataBase,DB)的結合,並不是第一次見到的應用,凡舉線上問卷、活動,越來越多使用flash與DB的結合。

然而,flash並不能直接的對DB做應用,而是透過套件來完成與DB的溝通(說穿了也是網頁程式而已)。

根據這次接案的需求中的一部份:以flash做個相簿,並建立一個後台進行圖片和圖片敘述的上傳。

在網路上搜尋了一下相關資料,由於網頁的整體建構都是以php + MySQL做設計,因此也朝這個方向找。

原來flash可以透過網頁與DB做溝通,然而,適合拿來做溝通的網頁語言包括了:PHP、ASP、XML。因為系統的架構,所以就沿著flash + php + MySQL的方向找到了「Amfphp」。

這是一個小型的php套件,就是用來讓flash和DB進行溝通用的。也因為這樣,才知道原來寫flash的程式語言叫做Action Script(AS),這鬼也很奇怪,不太好寫,但是很容易懂,只是....邏輯有點難通,或許是長期接觸Java和C語言,對於AS語法不甚了解。但是稍微花點時間,就可以知道AS到底要怎麼做了,因為有相關的API可以在官網查詢,花些時間看...不難。

接著,開始做工吧!

1. 到官網下載Amfphp相關套件
2. 解壓縮該檔案,並放在網頁資料夾中
3. 開始寫程式(包括php、AS)

在此先說明,由於flash並不是我設計的,我也不會,所以在本篇文章中並不會提到任何有關flash的物件設計。

打開amfphp的資料夾,可以看到一個名為services的資料夾,在那資料夾下,我們就是要寫用php讀資料庫的function,好方便flash讀取。

程式如下:

 
class Counter{
   
    var $dbhost = "localhost";// 你host的位置(可以用IP)
    var $dbname = "xxx";//你在資料庫表的名稱
    var $dbuser = "root";//使用者帳號  
    var $dbpass = "xxx";//使用者密碼(自己設)
    var $conn;

    //這個function主要是連接資料庫
    function Counter(){
        $this->conn = mysql_pconnect($this->dbhost, $this->dbuser, $this->dbpass);
        mysql_query("SET NAMES 'utf8'");
        mysql_select_db ($this->dbname);
    }
   
    //這個是從資料庫拿取資料
    function getData(){
        //number是目錄的名稱,若要取完全部資料可用*
        $rs=mysql_query("SELECT * FROM work");
        return $rs;   
    }

    //這是輸入資料進資料庫,在本文中沒有用到= ="
    function insert($number) {
        $sql="INSERT into work(Upload_file) values";   
        $sql.="('$number')";   
        $result = mysql_query($sql)or die(mysql_error());       
        if($result)
            return mysql_insert_id($this->conn);
        }
    }
?>

這些程式不難,對於有些許經驗的php程式設計人員來說,簡單易懂。另外,要特別注意第二行的class名稱宣告,那鬼很重要!!

接著,稍微寫一下AS:

 //---資料庫連線開始---
//帶入flash的套件
import flash.net.URLRequest;
import flash.net.NetConnection;
import flash.net.Responder;

//連接amfphp裡的gateway.php
var gateway:String = "http://localhost/giid/amfphp/gateway.php";
var connection:NetConnection;
var responder:Responder;
var saveData:Object;

//資料接收成功或失敗
responder = new Responder(onResult, onFault);
connection = new NetConnection;
connection.connect(gateway);

//call我們寫的PHP(檔案名稱.副程式名稱)
connection.call("Counter.getData", responder);

//-------以下為得到資料----
function onResult(onResult:Object):void { //資料傳送成功時
    saveData = onResult.serverInfo.initialData;
    for(var j=0; j        //Debug用,顯示從資料庫撈出來的檔案值
        trace("have data " + saveData[j][7]);
    }
    
    for(var i=1; i         //將saveData的值帶入到picture loader中
        menu_mc["p"+i].targetPic = "../artFile/" + saveData[i-1][7];
        menu_mc["p"+i].addEventListener(MouseEvent.CLICK,
            function(e:MouseEvent){
                //當滑鼠點擊時,圖片會顯示在loader中。
                pic_loader.startLoad( e.target.targetPic);
            }
        );
    }//end for
}//end onResult

function onFault(fault:Object):void {
    trace("failt");
}//end onFault

//告知flash要在處理一次程式後,停止影格的顯示...沒有這行顯示結果會瘋狂的閃爍
stop();


在上面那支程式裡,常寫網路程式的人,看一下變數宣告,就知道了....註解我也有寫,就看註解吧。

至於執行畫面...就可以透過資料庫讀出來的值進行圖片的流覽...大致上就這樣~我想偷懶了XDDDDDDD

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 YuRu 的頭像
    YuRu

    YuRu's Life

    YuRu 發表在 痞客邦 留言(1) 人氣()