Делаем приложение: Flex 2 + AMFPHP
Сделаем клиент-серверное приложение, которое будет искать и отображать пользователей сайта. В качестве инструментов будем использовать 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.
Получилось не очень понятно, если есть вопросы и пожелания - пишите.


Comments ( posted):
Post your comment