第一章: flash,php 和 mysql 之间的连接

讲讲 flash ( ActionScript ), php 及 mysql 之间的连接,他们三者是如何实现数据相互传送和接收的。在开始之前,请确保您做了如下的准备工作:

1, 配置了 apache 服务器, php , mysql 等都配置成功。

2, 安装了 flash cs3 或更高的版本。

如果在配置服务器有任何问题,在网站上搜索一下相关的关键字。应该能顺利解决问题。

Flash 提供了很多种不同的连接方式,究竟要用那种连接方式来完成项目应根据项目的特点。

单向通行:

Flash 中的单向通信只是将数据发送给 web 服务器,并不关心服务器是否返回响应和做出什么样的响应。这种通信方式大多数时候用于打开一个 url 连接,例如:

var serverFile:String=”http://localhost/callLink.php”;
var urlRequest:URLRequest=new URLRequest(serverFile);
navigateToURL(urlRequest);

注: navigateToURL 函数接受两个参数,第一个参数是 URLRequest 的实例,第二个参数叫做窗口(或目标)。默认情况是 _self 。还可以是: ”_blank”,”_parent”,”_top” 。

在 flash 中还有一种和 navigateToURL 类似的单一连接方式, sendToURL ();它与 navigateToURL 的不同之处在于它不会单独的开一个 web 页面,而是悄悄的把数据发送到 web 服务器,不会妨碍用户的浏览体验。例如:

var serverFile:String=”http://localhost/callLink.php”;
var urlRequest:URLRequest=new URLRequest(serverFile);
try
{sendToURL(urlRequest);
}
Catch(e:Error)
{
//处理错误
}

发送数据到服务器

在很多种情况下,你可能不仅仅只是想发送一个 url ,你需要在请求一个 url 的同时向服务器发送一些数据。这是,你需要用到 URLVariables 类,这个类能创建包含键值对的对象。这些键值对和标准的 Html 中请求的键值对是相同的。

var serverFile:String=”http://localhost/callLink.php”;
var variables:URLVariables=new URLVariables();
variables.id=1004;
variables.user=”James”;
var urlRequest:URLRequest=new URLRequest(serverFile);
urlRequest.data=variables;try
{sendToURL(urlRequest);
}
Catch(e:Error)
{//处理错误
}

上面发送数据的方式是不安全的,因为默认使用的是 get 方式的,这种方式会将数据显示在浏览器的地址栏中。要想安全的发送一些敏感的数据,我们要显示的说明使用 post 传送方式。如下:

var serverFile:String=”http://localhost/callLink.php”;
var variables:URLVariables=new URLVariables();
variables.id=1004;
variables.user=”James”;
var urlRequest:URLRequest=new URLRequest(serverFile);urlRequest.method=URLRequestMethod.POST;
urlRequest.data=variables;try
{sendToURL(urlRequest);
}
Catch(e:Error)
{//处理错误
}

双向通信

有些时候你可能想在发送数据后接收一个来自服务器的响应。例如从数据库加载指定用户的信息,你发送用户 ID 并希望接收到有关该用户的信息。

双向通信中的响应一般都由事件监听器处理。例如:

var serverFile:String=”http://localhost/callLink.php”;
var variables:URLVariables=new URLVariables();
variables.id=1004;
variables.user=”James”;
var urlRequest:URLRequest=new URLRequest(serverFile);urlRequest.method=URLRequestMethod.POST;
urlRequest.data=variables;var urlLoader:URLLoader=new URLLoader();
urlLoader.addEventListener(Event.COMPLETE,userResponseHandler);try
{urlLoader.load(urlRequest);
}
catch(e:Error)
{//处理错误
}//处理函数
function userResponseHandler(e:Event):void{
var urlLoader:URLLoader=URLLoader(e.target);
var args:URLVariables=new URLVariables(urlLoader.data);
trace(“User Data:”+args.response);
}

连接 flash 到 php

先看下面的例子:

首先我们定义一个变量来代表你的服务器的地址:

var phpFile:String=”http://localhost/connecting/exampleCom.php”;
//在flash中创作一个按钮,并为按钮增加鼠标事件监听器:当按钮按下时调用如下函数:function callServer(e:MouseEvent):void{var urlRequest:URLRequest=new URLRequest(phpFile);var loader:URLLoader=new URLLoader();loader.addEventListener(Event.COMPLETE,serverResponse);loader.load(urlRequest);
}

上面的函数创建了 URLLoader 和 URLRequest 实例;但数据加载完成时会调用下面的函数:

function serverResponse(e:Event):void{var loader:URLLoader=URLLoader(e.target);var variables:URLVariables=new URLVariables(loader.data);//timeTxt为flash中创建的动态文本域,returnValue为php中定义的键值对的键名。timeTxt.text=variables.returnValue;}//callBtn为flash中按钮的实例名callBtn.addEventListener(MouseEvent.CLICK,callServer);

exampleCom.php 中的代码非常的简单,如下:

<?php// 下面是一个简单的 php 中键值对信息print “returnValue=Hello from PHP,time is:”.time();?>  

php 中多个键值对的信息表示如下:

<?php$userData=”username=James”;$userData .=”&id=1004”;$userData .=”&level=Reader”;print $userData;
?>

上面代码的作用就是当 flash 加载这个 php 文件时,它向 php 创送如下的数据:

  username=Jame&id=1004&level=Reader;

注意到上面的键值对信息很像标准的 POST 的 data 。

链接到 MySql

使 php 链接到 php 是很简单的。当你把 php 和服务器都配置正确后,你要做的事情很少,看下面的例子:

<?php$host=”localhost”;
$user=” ”;
$pass=” ”;
$link=mysql_connect($host,$user,$pass);
?>

mysql_connect 函数接受三个参数,第一个参数是主名。第二个参数是 mysql 数据库的用户名,最后一个参数是 mysql 数据库的密码。该函数返回资源标识符,这个标识符就代表当前 mysql 数据库的连接。这个资源标识符能在以后的 SQL 调用中,例如: mysql_query 和许多其他的函数。如果打印输出¥ link 变量,你会看到如下资源代码:

<?php
$link=mysql_connect(“localhost”,”root”,” ”);
print “Response:”.$link;
?>

上面的代码产生如下的响应:

Response : Response id #32

持久连接

标准的 mysql_connect 函数在脚本执行完后会自动的关闭连接。但有时候你可能想保持连接状态而不管脚本是否执行完毕。 mysql_pconnect 函数正式用来完成这个任务的。这个函数在脚本执行完后仍然保持连接。下面是建立持久连接的例子:

<?php$link = mysql_pconnect(“localhost”,”root”,” ”);
print “Persistent Resource ID:” .$link;
?>

关闭连接

一个好的习惯是,在 SQL 执行完毕后移除连接释放资源和内存。调用 mysql_close() 函数就能关闭连接。手动关闭连接并不是必须的,因为当脚本执行完毕后会自动的关闭连接。看下面的例子:

<?php
$link = mysql_connect(“localhost”,”root”,” “);
print “Response: “ .$link;
//关闭连接
mysql_close($link);
?>

mysql_close() 函数接受资源标识符作为参数,当你有多个连接时,这个参数是很有用的。这个参数不是必须的,默认情况会关闭最后一个连接。

注 : 由 mysql_pconnect ()函数创建的持久连接不能用 mysql_close() 函数关闭。

选择数据库

在建立完到 mysql 的链接后,你能选择一个数据库。只有在连接完成并已选择了数据库时,才能查询数据库。函数 mysql_select_db ()函数就是用来选择数据库以便查询的。当然你能用这个函数在数据库之间进行切换。

注:同一时间一个处于活跃状态的连接只能有一个被链接的数据库。

mysql_select_db 函数接收两个参数,第一个参数是数据库的名字,第二个参数(可选的)是连接的资源标识符。

下面是选择和连接数据库的例子:

<?php
$link = mysql_connect(“localhost”,”root”,” “);
mysql_select_db(“db_name”,$link);//关闭连接
mysql_close($link);
?>

mysql_query() 函数

这个函数用来执行 SQL 查询语句,这个函数会返回资源标识符。

第二章:使用数据

本章讨论的使用数据工作。在 as 中可以使用两种类型的数据:静态数据和动态数据。在大多数情况下,动态处理优于静态。因为动态数据常常包含数据库成分。

本章所讨论的是在 flash 和 php 中使用动态数据工作。本章我们先学习加载简单的文本文件,然后我们学习加载 XML 的相关知识,最后我们学习更为高级的加载方面的知识。

用 flash 加载数据

用 flash 加载数据是非常常见的。几乎在每个项目中,都会有一些动态的部分。使用动态数据的目的是尽可能的减少更新的数量。例如:如果你去看某个新闻站点,你将会发现大部分外部的内容都不会改变( logos ,菜单等),这对于 flash 应用程序也是一样的,你将会发现仅仅会有某些特定的部分正真的需要更新。本部分将会涉及加载从 xml 中加载数据,以及加载图像和声音等。

先让我们来看一个使用 flash 加载文本文件的例子:

var txtFile:String  = “sample.txt”;
var urlRequest:URLRequest = new URLRequest(txtFile);
var loader:URLLoader=new URLLoader();loader.addEventListener(Event.COMPLETE,loadHandler);
loader.load(urlRequest);function loadHandler(e:Event):void
{var loader:URLLoader = URLLoader(e.target);
trace(“Loaded Data:”+loader.data);} 

上面的例子加载一个命名为“ sample.txt ”的文本文件并将该文件的所有内容输出到输出面板。

理解用于加载数据的类

as 中有一系列的用于加载数据的内建类。下面分别讨论这些类:

URLRequest 类

(内容略,比较简单,在 flash 文档中看一下就 OK 了)

URLLoader 类

(内容略)

下面我们主要来看一个比较重点的例子(例子总是最能说明问题的):分配多个事件

假定你想处理 Loader 实例的 IOError 事件和 Complete 事件。你可能会输入每个事件处理程序,但是,当处理多个 Loader 实例时这样做是很繁琐的。一个比较简单的做法如下:

var txtFile:String = “sample.txt”;
var urlRequest:URLRequest = new URLRequest(txtFile);var loader:URLLoader = new URLLoader();
assignHandlers(loader);
loader.load(urlRequest);function assignHandlers(target:*):void
{
target[“addEventListener”](Event.COMPLETE,completeHandler);
target[“addEventListener”](IOErrorEvent.IO_ERROR,ioErrorHandler);
}function completeHandler(e:Event):void
{
……
}function ioErrorHandler (e:Event):void
{
……
}

用 flash 加载 xml

在开发的时候我们会经常的和数据打交道,一种比较完美的做法是返回 xml 结构的数据。 xml 是业界的标准,在你开始使用 xml 的时候你便会发现 xml 的优越性了。 xml 是基于标签来定义数据对象的。开发者可以自定义标签。下面看一个例子:

你可能像这样定义你的 xml 文件

<store><item><name>Book</name><price>Learning</price><inStock>yes</inStock></item><item><name>Football</name><price>4.99</price><inStock>no</inStock></item><item><name>Bike</name><price>89.95</price><inStock>no</inStock></item><item><name>Basketball</name><price>8.95</price><inStock>yes</inStock></item></store>

你可能想加载上面的 xml 文件并显示其中的 items 。这是非常容易做到的。假设我们把上面的 xml 文件保存在 storeItems.xml 中。我们来看一下加载的代码:

var xmlFile:String = “storeItems.xml”;
loadXML();function loadXML():void
{var urlRequest:URLRequest = new URLRequest(xmlFile);var urlLoader:URLLoader = new URLLoader();urlLoader.addEventListener(Event,COMPLETE,xmlHandler);urlLoader.load(urlRequest);
}function xmlHandler(e:Event):void
{var urlLoader:URLLoader = URLLoader(e.target);var xml:XML = new XML(urlLoader.data);for each(var item in xml..item){trace(item.name);trace(item.price);}
}

在 php 中使用 xml

在本部分学习如何使用 php 加载和管理 xml 文件,在 php 中使用 xml 会开发更具动态的应用。

下面来看一下怎么 php 加载 xml 文件:

<?php
$xml = simplexml_load_file(‘sample.xml’);
print $xml->sampleNode;
?>

接下来看一下发送 xml

从 php 发送 xml 到 flash 也是非常简单的,首先我们来动态建立 xml 文件:

<?php
header(“content-type:text/xml”);$xmlData = “”;
$xmlData .=”<store>\n”;
$xmlData .=   ”<item>\n”;
$xmlData .=”         <name>Book</name>\n”;
$xmlData .=”         <price>19.95</price>\n”;
$xmlData .=”         <inStock>yes</inStock>\n”;
$xmlData .=   “</item>\n”;
$xmlData .=   ”<item>\n”;
$xmlData .=”         <name>Book</name>\n”;
$xmlData .=”         <price>19.95</price>\n”;
$xmlData .=”         <inStock>yes</inStock>\n”;
$xmlData .=   “</item>\n”;
$xmlData .=   ”<item>\n”;
$xmlData .=”         <name>Bike</name>\n”;
$xmlData .=”         <price>19.95</price>\n”;
$xmlData .=”         <inStock>yes</inStock>\n”;
$xmlData .=   “</item>\n”;
$xmlData .=   ”<item>\n”;
$xmlData .=”         <name>Football</name>\n”;
$xmlData .=”         <price>19.95</price>\n”;
$xmlData .=”         <inStock>yes</inStock>\n”;
$xmlData .=   “</item>\n”;
$xmlData .=”</store>\n”;print “response=” .=$xmlData;
?>

上面代码的最后一句有神奇的作用,它将 xml 数据输出到输出缓冲区并最终传到 flash 。

从数据库动态产生 xml

<?phpheader(“content-type:text/xml”);$quer      =     “SELECT * FROM store WHERE inStock=yes”;
$link = mysql_connect(“localhost”,”user”,”pass”);
$result = mysql_query($query.$link);$xmlData = “”;
$xmlData .=”<store>\n”;while($row=mysql_fetch_array($result))
{$xmlData .=”  <item>\n”;$xmlData .=”         <name>” .$row[‘name’]       .”</name>\n”$xmlData .=”         <price>”  .$row[‘price’] .”</price>\n”$xmlData .=”         <inStock>”     .$row[‘inStock’]    .”</inStock>\n”$xmlData .=”  </item>\n”;
}$xmlData .=”</store>\n”;print “response=” .$xmlData;?>

flashAndPHP 简单交互相关推荐

  1. php访问服务器文件路径,PHP与服务器文件系统的简单交互

    1.php.ini中关于文件上传的设置指令 2.文件上传过程 (1)上传文件提交表单html代码: Adminstration - upoload new files Upload new files ...

  2. 超强一代JupyterLab发布,可视化调试、中文显示、简单交互界面

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:机器之心 AI博士笔记系列推荐 周志华<机器学习> ...

  3. 基于C++实现一个支持简单交互绘图小程序

    资源下载地址:https://download.csdn.net/download/sheziqiong/86763967 资源下载地址:https://download.csdn.net/downl ...

  4. 用php建设一个简单的网站,PHP_PHP新手上路(六),建设一个简单交互的网站(二) 5 - phpStudy...

    PHP新手上路(六) 建设一个简单交互的网站(二) 5.5 计数器 让我们在首页上加上一个计数器.这个例子已经被讲过多次了,但是还是有利于演示怎样读写文件以及创建自己的函数.counter.inc包含 ...

  5. 公众号开发精品教程(2)——将项目接入微信及简单交互

    系列文章传送门 公众号开发精品教程(1)--绪论及环境搭建 公众号开发精品教程(2)--将项目接入微信及简单交互 公众号开发精品教程(3)--创建菜单 公众号开发精品教程(4)--生成带参数的二维码及 ...

  6. [Python]Tkinter+Numpy+Matplotlib 进行的简单交互+曲线拟合+图像绘制【已改进】

    用Python的Tkinter.Numpy.Matplotlib库对曲线拟合的一点探索[已改进] 需要用到的库:如标题 三大方面 功能 需要的库 一. 简单交互,获取函数或者样本点 tkinter[p ...

  7. 安卓手机和.NET之间的简单交互

    安卓手机和.NET之间的简单交互 我们通常都了解,安卓手机作为移动端和电脑PC端的连接在.NET环境下用的最多的是ADB.没错,今天做的一个小测试中,使用到了友好的插件,在此记录,作以分享. 首先怎样 ...

  8. 一个简单交互界面的实现

    一个简单交互界面的实现 这个界面本来是今年做NXP智能车的时候为了更改参数方便设计的,这其实又是一套用状态机的思想来实现的一个显示框架. 这个显示界面只是一个操作逻辑,所以它的的移植性还是挺高的,虽然 ...

  9. java,js,jstl,EL的简单交互

    EL全名Expression Language.EL提供了在JSP脚本编制元素范围外使用运行时表达式的功能. 脚本编制元素是指页面中能够用于在JSP文件中嵌入java代码的元素. JSP标准标记库(j ...

最新文章

  1. PatchmatchNet:一种高效multi-view stereo框架 (CVPR2021 Oral)
  2. 分析机风云:超前时代五十载,是非曲直苦难辩
  3. Yii 框架学习--03 多应用多模块
  4. Docker宣布企业版支持Windows Server 2019
  5. 《转》atomic assign retain
  6. BOOST_VMD_ASSERT_IS_LIST相关的测试程序
  7. 简单的实现登录拦截及统一异常处理(自定义异常)
  8. 判断是否为自然数java_java判断输入的是否是自然数
  9. d3 v5 api arrays
  10. struts2学习笔记(二) 初识Struts2
  11. 如何从超级用户进入非超级用户
  12. 客户关系管理系统中对客户及相关数据的导入导出分析处理
  13. [25年后的统计系会是什么样?
  14. 微软放弃WPF了?自定义控件库有前途
  15. 浙江大学的计算机考研难度,浙江大学部分专业考研难度分析
  16. 游戏建模:手绘暗黑小萝莉
  17. TODO List—2018今日头条校招
  18. TOJ 5238: C实验:变量交换函数
  19. 上海交大考研823网络空间安全经验分享
  20. js将页面转成PDF文档

热门文章

  1. 信息学奥赛C++语言: 直方图
  2. 33 WM配置-策略-出库策略6-定义过期日期策略H(SLED)
  3. 23 FI配置-财务会计-未清和关账过账期间
  4. 装cv2加速_手动安装OpenCV下的IPP加速库
  5. Hive在linux上的部署
  6. matlab算法应用论文(带代码)_左手论文 右手代码 深入理解网红算法XGBoost
  7. 嵌入式wifi 芯片 推荐_人工智能对汽车芯片设计的影响
  8. JAVA 中JDK下载安装
  9. 解决ie8及低版本浏览器不支持html5标签属性
  10. 搭建小程序表情包教程