Home | Flex and Flash | Flex and AmfPHP | Делаем приложение: Flex 2 + AMFPHP

Делаем приложение: Flex 2 + AMFPHP

Font size: Decrease font Enlarge font
image

Сделаем клиент-серверное приложение, которое будет искать и отображать пользователей сайта. В качестве инструментов будем использовать Flex 2.01 (клиент) и AMFPHP (серверная часть).

У нас имеется база данных, в которой будут хранится данные о зарегистрировавшихся пользователях и мы хотим просматривать эту информацию при помощи Flex приложения.

Клиент.

Создадим новое Flex приложение. В настройках Project->Properties->Flex Compiler укажем что приложение должно использовать services-config.xml.

-locale en_US -services "services-config.xml"


Код нашего mxml файла:

..

private var usersDataProvider : ArrayCollection = new ArrayCollection();

private function getC():void
{
service.getOperation("getCities").send();
}


private function getU():void
{
service.getOperation("getUsers").send();
}

private function showUsersResult(event:ResultEvent):void
{
for(var i:int=0; i< event.result.users.length;i++){

usersDataProvider.addItem(event.result.users[i]);
}
//usersDataProvider = event.result.users;
}

private function showCitiesResult(event:ResultEvent):void
{
trace(event.result.city)
}

private function faultHandler(event:FaultEvent):void{
Alert.show(event.fault.faultString, "Error: " + event.fault.faultCode);
trace(event.fault.message);
}

]]>

..

Для отправки данных используем метод getUsers(), результат получаем методом showUsersResult(event) и заполняем DataGrid

Серверная часть.

Для подключения к базе данных используется библиотека PEAR, вы можете использовать ее тоже или написать самому.

Подключаются классы для использования. В этом приложении мы используем класс UsersVO.php, он должен находится ваш сайт/amfphp/services/com/g_info .

В этой же папке находится и файл action.php в котором написаны используемые методы.

Код класса UsersVO

class UsersVO
{
public $id = 0;
public $name = '';
public $password = '';
public $icq = '';
public $www = '';
public $phone = '';
public $email = '';
public $city = '';

var $_explicitType = "com.vo.UsersVO";
}
?>

Обратите внимание на var $_explicitType = "com.vo.UsersVO" - здесь указан пусть к такому же файлу с классом, но уже во Flex приложении.

---------------------------

Код класса action:

include_once("PEAR/DB.php");
//require_once( "PEAR/connect.php" );
include_once( "InfoVO.php" );
include_once( "UsersVO.php" );
include_once( "CitiesVO.php" );

class action
{


function __construct()
{
}

public function getUsers()
{


$dsn = array(
'phptype' => 'mysql',
'username' => 'bjorn02_bjorn',
'password' => 'Y67rDck9L',
'hostspec' => 'localhost',
'database' => 'bjorn02_cms',
);

$options = array(
'debug' => 2,
'portability' => DB_PORTABILITY_ALL,
);

$db =& DB::connect($dsn, $options);
if (PEAR::isError($db)) die($db->getMessage());
$db->setFetchMode(DB_FETCHMODE_OBJECT);
//$sql= "SELECT user_name FROM g_users WHERE user_id = 4";
$sql= "SELECT * FROM g_users WHERE city = 'Lviv'";
$res = $db->query($sql);
$object = new InfoVO();
while ($row =& $res->fetchRow())
{
$obj_model = new UsersVO();
$obj_model->id = (integer) $row->user_id;
$obj_model->name = (string) $row->user_name;
$obj_model->password = (string) $row->user_password;
$obj_model->icq = (string) $row->icq;
$obj_model->www = (string) $row->www;
$obj_model->phone = (string) $row->phone;
$obj_model->email = (string) $row->user_email;
$obj_model->city = (string) $row->city;
$users[]=$obj_model;
}
$object->users = $users;
return $object;
}
}
?>

Метод getUsers() возвращает клиенту объект UsersVO.

Получилось не очень понятно, если есть вопросы и пожелания - пишите. 

Посмотреть приложение можно здесь, исходный код - source.

Comments ( posted):

Post your comment comment

Please enter the code you see in the image:


  • email Email to a friend
  • print Print version
  • Plain text Plain text
Tags
No tags for this article
Rate this article
4.67