1,目标
Flash第一帧读取MySQL的数据,逐条显示,数据从a.php中得到。在这一帧上添加一个“提交”按钮,加一个文本输入框。
Flash第二帧发送文本输入框中的数据到b.php,写入数据库,成功则回到第一帧显示最新结果。
2,实现过程及代码
(1)在MySQL中创建一个数据库flash,并创建一个表`user`,注意使用时user前后要有引号(!前面的键),该SQL语句在lib.php中
(2)a.php:从数据库中获取数据,b.php:向数据库中写入数据,代码如下:
a.php
b.php
lib.php(a.php和b.php都加载了lib.php)
(3)建立一个flash文件,取名conn.fla,代码如下:
第一帧负责加载数据并显示,并添加一个按钮和一个输入框(变量:in_text),代码如下:
第二帧,负责发送数据
按钮,发送数据需要按下按钮
3,注意点
(1)需要创建动态文本显示数据,有多少个元组就要创建多少个文本框,每个文本框的名字必须唯一。
创建动态文本框的函数为createTextField(),第一个参数为文本框的名字,第二个为深度depth,第三、四个参数为文本框的位置(x,y),第五、六个参数为文本框的长和宽。
(2)文本框的使用。首先不能枚举,如"mytext0","mytext1",...,因为记录数量不确定。使用时须
obj = eval("mytext"+i);
obj.text = "xxxx";
(3)文本框的样式。obj.setTextFormat(myFormat);该句设定了显示的样式,样式定义代码在最上面。其他样式可以去查类TextFormat()。
(4)文本框的内容。a.php的获取的所有数据拼在一个字符串里,按","分割。如果一个数据对应一个变量的话,那么for循环里的obj.text将没法赋值。
(5)输入框的“自动调整字距”前面的勾去掉,否则输入的则带有<html>标签。
(6)发送数据使用的函数是sendAndLoad,而不是send(),因为send不会更新最新的结果。
(7)关于刷新,一个很奇怪的问题。如果第一帧load代码是lv.load("http://localhost/flash/a.php");的话,Ctrl+Enter测试,一切正常。但放到网络上,就出问题了:提交后回到第一帧,获取的数据并不是最新的。所以a.php后面要加一个时间参数,参数名字随便。