php与flex

本文将使用Adobe FlexBuilder2和PHP创建一个小型应用程序实例,从MYSQL数据库相应表中读出包括姓名和邮件地址等数据并显示给用户,用户还可以添加新的姓名和邮件地址进入数据库。

注意:http://www.adobe.com/devnet/flex/articles/flex2_php.html  官网上有Mike Potter提供的 Flex 2 Beta 3. I的例子,但是其中有一些代码可能是抄漏抄错,所以我在学习完后,特地把自己验证过的代码贴出来,供大家参考使用。

一,系统要求:

1,请先安装Flex Builder 2 (包括了SDK)

2, PHP

3, MYSQL和APACHE(IIS也可)

二,预备知识:

对简单的PHP开发和XML基础比较熟悉即可。

三,MYSQL的准备工作

先在Mysql上创建数据库Sample,然后运行如下SQL代码 sample.rar 以创建表Users。

四,PHP脚本

然后,你就要开始写添加用户和输出XML(给FLEX程序使用的)的PHP脚本了。该脚本比较简单,只有25行。请注意,其中,quote_smart 函数是符合PHP.Net 官网的规范来验证用户输入安全所用。function as a best practice to help verify user input,according to the PHP.Net

以下是放在Apache根目录下的getuser.php文件:


Define( "DATABASE_SERVER", "localhost" );//数据库服务器地址
Define( "DATABASE_USERNAME", "root" );//数据库登录名
Define( "DATABASE_PASSWORD", "123456" );//数据库登录密码
Define( "DATABASE_NAME", "sample" );//数据库名


//连接数据库


$mysql = mysql_connect(DATABASE_SERVER, DATABASE_USERNAME, DATABASE_PASSWORD);


mysql_select_db( DATABASE_NAME );


//验证用户输入的姓名和地址是否安全


function quote_smart($value)
{
   // Stripslashes
   if (get_magic_quotes_gpc()) {
       $value = stripslashes($value);
   }
   // Quote if not integer
   if (!is_numeric($value)) {
       $value = "'" . mysql_real_escape_string($value) . "'";
   }
   return $value;
}


if( $_POST["emailaddress"] AND $_POST["username"])
{
      //add the user
      $Query = sprintf("INSERT INTO users VALUES (NULL, %s, %s)", quote_smart($_POST["username"]), quote_smart($_POST["emailaddress"]));


      $Result = mysql_query( $Query );
}


//return a list of all the users
$Query = "SELECT * from users";
$Result = mysql_query( $Query );


$Return = "";


while ( $User = mysql_fetch_object( $Result ) )
{
      $Return .= "".$User->userid."".$User->username."".$User->emailaddress.""; 
}
$Return .= "";
mysql_free_result( $Result );
print ($Return)
?>


请注意, $_POST  ["变量名"]形式用来表示从Flex程序中传递到PHP脚本中的变量。在上例中就是FLEX中传来的emailaddress  和username。用户输入符合验证安全规范的上述emailaddress  和username 之后,PHP就把它们添加入数据库以添加新用户,然后PHP会输出XML格式的用户列表。

你是无法直接从PHP向FLEX传递变量的,你可以先把变量输出成XML,然后FLEX读取XML取得传回的数据,这样就最终改变了FLEX表现层中的数据。同样的,你也可以用上面同样的PHP脚本作为后台程序,把数据从PHP中输出到移动电话上,你只需要改写一下前端的显示就可以了。

到此为止,涉及的PHP脚本和MYSQL数据库都是旧的内容。之后我们就要开始创建应用程序的界面了。

五,使用FLEX创建用户界面

Flex 应用程序把 ActionScript 3.0和MXML结合使用。ActionScript是基于ECMAScript(类似于JavaScript)的,因此它对于WEB开发者来说应该是很熟悉的。MXML是基于XML的FLEX应用程序的表现层。从本质上来看,就是用XML定义用户界面的布局,用ActionScript.来对用户界面进行脚本编程。本文所用到的MXML也仅有26行代码:

<!-- 第一行是XML档声明。-->
<?xml version="1.0"encoding="utf-8"?>

<!--第二行是应用程序声明,提供MX组件的命名空间,布局方式是绝对定位,最后是声明调用id为userRequest的对象的send()函数-->
<mx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" layout="absolute"creationComplete="userRequest.send()">

<!--设置HTTPService和前例所创建的PHP脚本之间发送和接收数据。设置了HTTPService的id为userRequest,设置了PHP脚本文件所在的URL,设置了不使用代理服务器,设置了提交方式是POST,当然也可以用GET方式,不过相应要修改PHP脚本的变量名-->
  <mx:HTTPService id="userRequest" url="http://localhost/getuser.php"useProxy="false" method="POST">
      <mx:requestxmlns="">

<!--设置了username的值为ID为username的元素的text属性的值(username.text ),也设置了传递到PHP的变量 _POST["emailaddress"] 的值为ID为emailaddress的元素的text属性的值(emailaddress.text )。大括号把变量绑定到了界面元素的值上,这就是说,如果把<username>改成 <user_name> ,那么相应地传递到PHP的变量就改为_POST["user_name"],而相反地,如果把(username.text )改成{user_name.text} 了,那么你就必须修改MXML中的<username>改成 <user_name>。-->
        <username>{username.text}</username><emailaddress>{emailaddress.text}</emailaddress>
     </mx:request>
   </mx:HTTPService>

<!--然后创建一个简单的窗体,其中按钮点击则激发userRequest.send()调用。-->
   <mx:Form x="22" y="10"width="493">
      <mx:HBox>
         <mx:Labeltext="Username"/>
         <mx:TextInput id="username"/>
     </mx:HBox>
      <mx:HBox>
         <mx:Label text="EmailAddress"/>
         <mx:TextInput id="emailaddress"/>
     </mx:HBox>
      <mx:Button label="Submit"click="userRequest.send()"/>
   </mx:Form>

<!-- 创建一个DataGrid组件来显示userRequestHTTPService取回的数据。请注意必须绑定它到user元素而非其上层的users外包元素。而DataGrid组件自带有很方便的列排序和高亮当前行功能。
最后,是一个显示和当前用户相对应的邮件地址dgUserRequest.selectedItem.emailaddress的文本框。-->
  <mx:DataGrid id="dgUserRequest" x="22" y="128"dataProvider="{userRequest.lastResult.users.user}">
     <mx:columns>
         <mx:DataGridColumn headerText="User ID"dataField="userid"/>
         <mx:DataGridColumn headerText="User Name"dataField="username"/>
      </mx:columns>
  </mx:DataGrid>
   <mx:TextInput x="22" y="292"id="selectedemailaddress"text="{dgUserRequest.selectedItem.emailaddress}"/>
</mx:Application>

从PHP取回的XML内容如下:
<users>
<user>
<userid>1</userid>
<username>JoeSchmoe</username>
<emailaddress>joe@schmoe.com</emailaddress>
</user>
<user>
<userid>2</userid>
<username>BettySchmoe</username>
<emailaddress>betty@schmoe.com</emailaddress>
</user>
</users>

整个使用PHP后台来添加和取回MYSQL数据的小FLASH应用程序就到处为止了。所有的代码文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值