flash後台資料連線(PHP篇) 之 php&flash收藏夾
來源:互聯網
上載者:User
後台|資料 距上次在flash8寫文章(為Alert組件加上響應功能!~http://space.flash8.net/bbs/thread-319211-1-1.html)之後已經有好久沒有動筆墨了,不知有沒有生繡。這次要寫的是PHP和flash,這裡做一個簡章的例子 -- php&flash 收藏夾,當然這隻是說明如何?傳遞變數及php寫檔案。
我的設想(流程):寫入操作:填好資料到表單中,點按鈕儲存 -> 透過php寫入檔案favorite.dat中(你也可以改成MySql,應該不是很難) 。讀資料: 點重新整理按鈕 -> 通過php讀取全部的資料 -> 返回到flash TextArea中,(因為TextArea支援簡單的HTML,當然也包括<a href..>)。刪除:留給你的作業!
說明:因為只通過一個php檔案,所以我在flash設定了一個變裡 $_POST[a] 用於分別出是儲存還是重新整理,如不考慮刪除,也可以直接改成,在php端判斷。如果是$_POST則,為寫資料,相應的$_GET就為讀資料(這裡的重新整理)。好了,開始:
一: 開啟你的flash 8 建立一個影片,這裡我們需要幾個組件
1. 一個TextArea -> 我命名為: url_textarea 。這裡的屬性我設定成了支援HTML,以便我的那些網址可以點擊,有人問:為什麼不用DataGrid啊,因為我還沒有學會用。
2. 二個TextInput -> 命名為 : webname_txt 和 url_txt。
3. 三個Button -> 命名為: save_btn 和 refresh_btn。
4. 以及幾個用作說明的label。
二: 開啟代碼寫上:
import mx.controls.Alert; //加入Alert,以便彈出一個提示資訊
var send_lv = new LoadVars (); //發送到伺服器的變數
var save_lv = new LoadVars (); //儲存存時從伺服器返回的資訊
var refresh_lv = new LoadVars (); // 重新整理時從伺服器返回的資訊
/**
* 設定添加按鈕的動作
*/
append_btn.onRelease = function(){
send_lv.a = "save"; //使用儲存方法
send_lv.name = webname_txt.text; //網站名稱
send_lv.url = url_txt.text; //網址
send_lv.sendAndLoad ("favorite.php", save_lv, "POST"); //發送資料到php
webname_txt.text = url_txt.text = ""; //清空文字框
}
/**
* 設定重新整理按鈕
*/
refresh_btn.onRelease = function() {
send_lv.a = "refresh"; //重新整理方法
send_lv.sendAndLoad ("favorite.php", refresh_lv, "POST"); //返回資料
}
//儲存效應
save_lv.onLoad = function (success : Boolean)
{
if (success){
// save_lv.msg是從php處返回的提示資訊
mx.controls.Alert.show (save_lv.msg, "Debug Message", Alert.YES, _root, false, "prueba", Alert.OK);
}
else {
mx.controls.Alert.show ("錯誤,未能載入", "Debug Message", Alert.YES, _root, false, "prueba", Alert.OK);
}
}
//重新整理響應
refresh_lv.onLoad = function (success : Boolean)
{
if (success){
mx.controls.Alert.show (refresh_lv.msg, "Debug Message", Alert.YES, _root, false, "prueba", Alert.OK); //彈出資訊
//顯示到TextArea中
url_textarea.text = refresh_lv.data;
}
else {
mx.controls.Alert.show ("錯誤,未能載入", "Debug Message", Alert.YES, _root, false, "prueba", Alert.OK);
}
}
stop();
三:寫那個favorite.php
我喜歡用的編輯器: editplus 介紹給大家使用,寫入代碼:
<?php
/***
* php & flash 收藏夾
*
* 這裡要實現的功能是,用flash來展示和通過php來讀寫文本來
* 實現一個收藏夾的功能
*
* 資料的儲存結構
* $name|$url|$date|&|$name|$url|$date....
*/
/**
* 實現添加的功能
* @ $name : 收藏的網站名
* @ $url : 網址
*/
function append($name,$url){
$fp = fopen("favorite.dat","a+"); //添加模式
$flag = fwrite($fp,"$name|$url|".time()."|&|"); //添加是否成功?
fclose($fp);
return $flag;
}
/***
* 實現讀取功能
* 返回:數組
*/
function get_data(){
$f = "favorite.dat"; //要讀取的檔案
$fp = fopen($f,’r’);
$tmpdata = fread($fp,filesize($f)); //全部讀取
fclose($fp);
$detail= explode(’|&|’,$tmpdata); //分解資料
for($i=0; $i<sizeof($detail)-1; $i++) {
$out = explode(’|’,$detail[$i]); //再分一次就可以輸出了
$date=date("Y/m/D",$out[2]); //格式化日期
$ret_data .= "<a href=’$out[1]’>$out[0]</a> - [$date]<br>"; //格式化資料了
}
return "&data=$ret_data";
}
/***
* 確定是何種方法,是儲存資料還是點重新整理按鈕!
*/
if ($_POST[a] == "save") {
if(append($_POST[name],$_POST[url])) {
echo "msg=是的,已經儲存好了";
}
else{
echo "msg=不好意思,技術原因,沒能儲存 :-(";
}
}
elseif ($_POST[a] == "refresh") {
echo "msg=資料來了,接收中...".get_data();
}
?>這裡有一點:一定要記得建立一個favorite.dat,因為fopen(fp,'a+') ,這裡的a+模式不能建立檔案,所以你要建好!