返回列表 回复 发帖

flash后台数据连接(PHP篇) 之 php&flash收藏夹

flash后台数据连接(PHP篇) 之 php&flash收藏夹
==============================================


距上次在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)
3. 二个Button -> 命名为: append_btn 和 refresh_btn

4. 以及几个用作说明的label






二: 打开代码写上:
  1. import mx.controls.Alert; //加入Alert,以便弹出一个提示信息

  2. var send_lv = new LoadVars (); //发送到服务器的变量
  3. var save_lv = new LoadVars ();  //保存存时从服务器返回的信息
  4. var refresh_lv = new LoadVars (); // 刷新时从服务器返回的信息

  5. /**
  6. * 设定添加按钮的动作
  7. */
  8. append_btn.onRelease = function(){
  9.         send_lv.a = "save"; //使用保存方法
  10.         send_lv.name = webname_txt.text; //网站名称
  11.         send_lv.url = url_txt.text; //网址
  12.         send_lv.sendAndLoad ("favorite.php", save_lv, "POST");  //发送数据到php
  13.         webname_txt.text = url_txt.text = ""; //清空文本框
  14. }

  15. /**
  16. * 设定刷新按钮
  17. */
  18. refresh_btn.onRelease = function() {
  19.                 send_lv.a = "refresh"; //刷新方法
  20.                 send_lv.sendAndLoad ("favorite.php", refresh_lv, "POST"); //返回数据
  21. }

  22. //保存效应
  23. save_lv.onLoad = function (success : Boolean)
  24. {
  25.                 if (success){
  26.                         // save_lv.msg是从php处返回的提示信息
  27.                         mx.controls.Alert.show (save_lv.msg, "Debug Message", Alert.YES, _root, false, "prueba", Alert.OK);
  28.                 }
  29.                 else {
  30.                         mx.controls.Alert.show ("错误,未能加载", "Debug Message", Alert.YES, _root, false, "prueba", Alert.OK);
  31.                 }
  32. }

  33. //刷新响应
  34. refresh_lv.onLoad = function (success : Boolean)
  35. {
  36.                 if (success){
  37.                         mx.controls.Alert.show (refresh_lv.msg, "Debug Message", Alert.YES, _root, false, "prueba", Alert.OK); //弹出信息
  38.                         //显示到TextArea中
  39.                         url_textarea.text = refresh_lv.data;
  40.                 }
  41.                 else {
  42.                         mx.controls.Alert.show ("错误,未能加载", "Debug Message", Alert.YES, _root, false, "prueba", Alert.OK);
  43.                         
  44.                 }
  45. }
  46. stop();
复制代码
三:写那个favorite.php



我喜欢用的编辑器: editplus 介绍给大家使用

写入代码
  1. <?php
  2. /***
  3. * php & flash 收藏夹
  4. *
  5. * 这里要实现的功能是,用flash来展示和通过php来读写文本来
  6. * 实现一个收藏夹的功能
  7. *
  8. * 数据的储存结构
  9. * $name|$url|$date|&|$name|$url|$date....
  10. */


  11. /**
  12. * 实现添加的功能
  13. * @ $name : 收藏的网站名
  14. * @ $url : 网址
  15. */
  16. function append($name,$url){
  17.         $fp = fopen("favorite.dat","a+"); //添加模式
  18.         $flag = fwrite($fp,"$name|$url|".time()."|&|"); //添加是否成功?
  19.         fclose($fp);
  20.         return $flag;
  21. }

  22. /***
  23. * 实现读取功能
  24. * 返回:数组
  25. */
  26. function get_data(){
  27.         $f = "favorite.dat"; //要读取的文件
  28.         $fp = fopen($f,'r');
  29.         $tmpdata = fread($fp,filesize($f)); //全部读取
  30.         fclose($fp);

  31.         $detail= explode('|&|',$tmpdata); //分解数据

  32.         for($i=0; $i<sizeof($detail)-1; $i++) {
  33.                 $out = explode('|',$detail[$i]); //再分一次就可以输出了
  34.                 $date=date("Y/m/D",$out[2]); //格式化日期

  35.                 $ret_data .= "<a href='$out[1]'>$out[0]</a> - [$date]<br>"; //格式化数据了
  36.         }
  37.         return "&data=$ret_data";
  38. }




  39. /***
  40. * 确定是何种方法,是保存数据还是点刷新按钮!
  41. */

  42. if ($_POST[a] == "save") {
  43.         if(append($_POST[name],$_POST[url])) {
  44.                 echo "msg=是的,已经保存好了";
  45.         }
  46.         else{
  47.                 echo "msg=不好意思,技术原因,没能保存 :-(";
  48.         }
  49. }
  50. elseif ($_POST[a] == "refresh") {
  51.                 echo "msg=数据来了,接收中...".get_data();
  52. }
  53. ?>
复制代码
这里有一点:

这里一这要记得建立一个favorite.dat,因为fopen(fp,'a+') ,这里的a+模式不能新建文件,所以你要建好! :-)

下面是AD:  :-)
http://www.oiasoft.com/ korpton's blog
http://www.celesteteam.com/ 我的工作组


谢谢!



相关介绍:
在数据量比较大的时候,且有mysql可以时,可以使用amfphp这个东西来传送数据,amfphp网址:http://www.amfphp.org/ 现在的版本是1.9,听说支持很多新的东西,我少用,

有一个QQ群讨论amfphp和flash&flex:35188064

现在关注apollo中。。。很晚了,睡了.....

[ 本帖最后由 korpton 于 2007-4-6 14:47 编辑 ]

tutor_favorite.rar (356.83 KB)

http://www.oiasoft.com

http://www.celesteteam.com/
不错不错,搜藏了
专业的数据恢复,RAID数据恢复
http://www.diskfix.cn
楼主继续写下去,我等在关注
提示: 作者被禁止或删除 内容自动屏蔽
返回列表