Avg. Rating 3.7

Problem

I would like to see a sample application created using AMFPHP + Flex 4.

Solution

Below is a sample application created using AMFPHP and Flex 4 to search and create employee details. Server : Wamp 2.0i

Detailed explanation

1. Download  http://sourceforge.net/projects/amfphp/ and Copy AMFPHP folder to your webroot. In this case Wamp2.0i/www/amfphp

2. You may get warnings or errors in PHP inside amfphp. Replace all occurences of eregi_replace() function with preg_replace(). This is only for PHP  > 5.3. 

3.I have a PHP class with methods to create, search and get employee details from a DB. 

<?php
include('Employee.php');

class EmployeesService {

 var $username = "root";

 var $password = "";

 var $server = "localhost";

 var $port = "3306";

 var $databasename = "fb_tutorial_db";

 var $tablename = "employees";

 var $connection;
 public function __construct() {

   $this->connection = mysqli_connect(

   $this->server,  

   $this->username,  

   $this->password, 

   $this->databasename,

   $this->port

   ); 


 }

 public function getAllEmployees() {
 $stmt = mysqli_prepare($this->connection, "SELECT * FROM
$this->tablename"); 

 mysqli_stmt_execute($stmt);

 $rows = array();
 mysqli_stmt_bind_result($stmt, $row->emp_no,
$row->birth_date, $row->first_name, $row->last_name,
$row->gender, $row->hire_date);

     while (mysqli_stmt_fetch($stmt)) {

        $row = new Employee();

       $rows[] = $row;

       //$row = new stdClass();

       mysqli_stmt_bind_result($stmt, $row->emp_no,
$row->birth_date, $row->first_name, $row->last_name,
$row->gender, $row->hire_date);

     }

 mysqli_stmt_free_result($stmt);

     mysqli_close($this->connection);
     return $rows;

 }

 public function getEmployeesByID($itemID) {

 $stmt = mysqli_prepare($this->connection, "SELECT * FROM
$this->tablename where emp_no=?");

 mysqli_bind_param($stmt, 'i', $itemID); 

 mysqli_stmt_execute($stmt);

 mysqli_stmt_bind_result($stmt, $row->emp_no,
$row->birth_date, $row->first_name, $row->last_name,
$row->gender, $row->hire_date);

 if(mysqli_stmt_fetch($stmt)) {

 return $row;

 } else {

 return null;

 }

 }

 public function createEmployees($item) {

 $stmt = mysqli_prepare($this->connection, "INSERT INTO
$this->tablename (birth_date, first_name, last_name, gender,
hire_date) VALUES (?, ?, ?, ?, ?)");

 mysqli_stmt_bind_param($stmt, 'sssss', $item["birth_date"],
$item["first_name"], $item["last_name"], $item["gender"],
$item["hire_date"]);

 mysqli_stmt_execute($stmt);

 $autoid = mysqli_stmt_insert_id($stmt);

 mysqli_stmt_free_result($stmt);

 mysqli_close($this->connection);

 return $autoid;

 //return $item;

 }

 }

?>

 

 

4. Copy this code to EmployeesService.php and place it inside amfphp/services folder.

5. Write a Flex application to communicate with this PHP class. 

<?xml version="1.0" encoding="utf-8"?>

<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 

    xmlns:s="library://ns.adobe.com/flex/spark" 

    xmlns:mx="library://ns.adobe.com/flex/mx">

 <fx:Script>

 <![CDATA[

 import flash.events.MouseEvent;

 

 import mx.controls.Alert;

 import mx.events.FlexEvent;

 import mx.rpc.events.FaultEvent;

 import mx.rpc.events.ResultEvent;

 

 protected function
getAllEmployees_resultHandler(event:ResultEvent):void

 {

 dataGrid.dataProvider=event.result;

 }
 protected function
getAllEmployeesByID_resultHandler(event:ResultEvent):void

 {

 dataGrid.dataProvider=event.result;

 }

 protected function
createEmployees_resultHandler(event:ResultEvent):void

 {

 Alert.show("inserted with ID="+event.result);

 EmpService.getAllEmployees();

 }



 protected function EmpService_faultHandler(event:FaultEvent):void

 {

 trace(event.fault.faultDetail);

 }
 protected function
datagrid1_creationCompleteHandler(event:FlexEvent):void

 {

 EmpService.getAllEmployees();

 }


 protected function Insert_clickHandler(event:MouseEvent):void

 {

 var e:Employee = new Employee();

 e.first_name = fname.text;

 e.last_name = lname.text;

 e.hire_date = hdate.text;

 e.birth_date = bdate.text;

 e.gender = gender.text;

 e.emp_no = parseInt(empno.text);

 EmpService.createEmployees(e);

 }



 protected function search_clickHandler(event:MouseEvent):void

 {

 EmpService.getEmployeesByID(parseInt(stext.text));

 }

 protected function button1_clickHandler(event:MouseEvent):void

 {

 EmpService.getAllEmployees();

 }


 ]]>

 </fx:Script>

 <fx:Declarations>

 <!-- Place non-visual elements (e.g., services, value objects)
here -->

 <s:RemoteObject endpoint="http://localhost/amfphp/gateway.php"
source="EmployeesService" destination="EmployeesService"
id="EmpService"  fault="EmpService_faultHandler(event)"
showBusyCursor="true">

 <s:method name="getEmployeesByID"
result="getAllEmployeesByID_resultHandler(event)"/>

 <s:method name="getAllEmployees"
result="getAllEmployees_resultHandler(event)"/>

 <s:method name="createEmployees"
result="createEmployees_resultHandler(event)"/>

 </s:RemoteObject>

 

 </fx:Declarations>

 <mx:DataGrid x="98" y="54"
creationComplete="datagrid1_creationCompleteHandler(event)"
id="dataGrid">

 <mx:columns>

 <mx:DataGridColumn headerText="Emp No." dataField="emp_no"/>

 <mx:DataGridColumn headerText="First Name"
dataField="first_name"/>

 <mx:DataGridColumn headerText="Last Name"
dataField="last_name"/>

 <mx:DataGridColumn dataField="birth_date" headerText="Birth
Date"/>

 <mx:DataGridColumn dataField="hire_date" headerText="Hire
Date"/>

 <mx:DataGridColumn dataField="gender" headerText="Gender"/>

 </mx:columns>

 </mx:DataGrid>

 <s:TextInput x="98" y="25" id="stext"/>

 <s:Button x="234" y="25" label="Search" id="search"
click="search_clickHandler(event)"/>

 <mx:Form x="98" y="221" width="362" height="252">

 <mx:FormHeading label="Insert new Employee"/>

 <mx:FormItem label="First Name">

 <s:TextInput id="fname"/>

 </mx:FormItem>

 <mx:FormItem label="Last Name">

 <s:TextInput id="lname"/>

 </mx:FormItem>

 <mx:FormItem label="Hire Date(YYYY-MM-DD)">

 <s:TextInput id="hdate"/>

 </mx:FormItem>

 <mx:FormItem label="Birth Date(YYYY-MM-DD) ">

 <s:TextInput id="bdate"/>

 </mx:FormItem>

 <mx:FormItem label="Gender(M/F)">

 <s:TextInput id="gender"/>

 </mx:FormItem>

 <mx:FormItem label="Emp No.">

 <s:TextInput id="empno"/>

 </mx:FormItem>

 <s:Button id="insertButton" click="Insert_clickHandler(event)"
label="Insert"/>

 
 </mx:Form>

 <s:Button x="630" y="25" label="Refresh"
click="button1_clickHandler(event)"/>

</s:WindowedApplication>
 
6. Set the destination of RemoteObject to EmployeesService and call the remote class methods.

 

 

will be great if someone will post any AMFPHP + Flex 4 Demos!


+
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License. Permissions beyond the scope of this license, pertaining to the examples of code included within this work are available at Adobe.

Report abuse

Related recipes