Upload
elliando-dias
View
2.806
Download
4
Tags:
Embed Size (px)
Citation preview
PHP and Rich Internet Applications
Mike Potterhttp://www.riapedia.com/[email protected]
Fast
Easy
<?php
if (!$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')) {
!! echo 'Could not connect to mysql';
!! exit;
}
if (!mysql_select_db('mysql_dbname', $link)) {
!! echo 'Could not select database';
!! exit;
}
$sql! ! = 'SELECT foo FROM bar WHERE id = 42';
$result = mysql_query($sql, $link);
if (!$result) {
!! echo "DB Error, could not query the database\n";
!! echo 'MySQL Error: ' . mysql_error();
!! exit;
}
mysql_free_result($result);
return($result);
?>
function PMA_getSearchSqls($table, $search_str, $search_option)
{
global $err_url, $charset_connection;
// Statement types $sqlstr_select = 'SELECT';
$sqlstr_delete = 'DELETE';
// Fields to select $res = PMA_DBI_query('SHOW ' . (PMA_MYSQL_INT_VERSION >= 40100 ? 'FULL ' : '') . 'FIELDS FROM ' . PMA_backquote($table) . '
FROM ' . PMA_backquote($GLOBALS['db']) . ';');
while ($current = PMA_DBI_fetch_assoc($res)) {
if (PMA_MYSQL_INT_VERSION >= 40100) {
list($current['Charset']) = explode('_', $current['Collation']);
}
$current['Field'] = PMA_backquote($current['Field']);
$tblfields[] = $current;
} // while PMA_DBI_free_result($res);
unset($current, $res);
$tblfields_cnt = count($tblfields);
// Table to use $sqlstr_from = ' FROM ' . PMA_backquote($GLOBALS['db']) . '.' . PMA_backquote($table);
// Beginning of WHERE clause $sqlstr_where = ' WHERE';
$search_words = (($search_option > 2) ? array($search_str) : explode(' ', $search_str));
$search_wds_cnt = count($search_words);
$like_or_regex = (($search_option == 4) ? 'REGEXP' : 'LIKE');
$automatic_wildcard = (($search_option <3) ? '%' : '');
for ($i = 0; $i < $search_wds_cnt; $i++) {
// Eliminates empty values // In MySQL 4.1, if a field has no collation we get NULL in Charset // but in MySQL 5.0.x we get '' if (!empty($search_words[$i])) {
for ($j = 0; $j < $tblfields_cnt; $j++) {
if (PMA_MYSQL_INT_VERSION >= 40100 && $tblfields[$j]['Charset'] != $charset_connection && $tblfields[$j]['Charset'] != 'NULL' &&
$tblfields[$j]['Charset'] != '') {
$prefix = 'CONVERT(_utf8 ';
$suffix = ' USING ' . $tblfields[$j]['Charset'] . ') COLLATE ' . $tblfields[$j]['Collation'];
} else {
$prefix = $suffix = '';
}
$thefieldlikevalue[] = $tblfields[$j]['Field']
. ' ' . $like_or_regex . ' '
www.riapedia.com
RIA Characteristics
• Full applications
• Could replace desktop apps
• Applications, not web pages
What’s in it
for me?for my employer?
Rich Internet Applications are the next evolution of the web.
“
”
Source: Gartner Research, May 11, 2005
Builds on existing skills and knowledge
$
Saved ~160 GB in 3 hrs
User experience matters
Client Options
• Ajax (In Browser)
• Java (Sun)
• XUL (Mozilla)
• XAML (Microsoft)
• MXML (Adobe Flex)
Ajax Examples
XUL Examples
XUL Examples
Songbird
XAML Examples
To Think About
• Reach - How many people will view this application? What platform will they be on? Is it an open or closed platform?
• Rich - Can I integrate rich content easily, like video, audio and animations?
• Tools - What will I use to build this application? How will I debug?
PHP and RIAs
• Read in XML from a PHP backend (REST)
REST with PHP<?php
//connect to the databasemysql_connect ...
//get the datamysql_query( “SELECT * from recipes”);...
//transform into XML
print “<recipes><recipe id=’1’ name=’cake’/><recipe id=’2’ name=’hotdog’/></recipes>”;
?>
PHP and RIAs
• Transfer PHP objects to the client directly
• JSON - JavaScript Object Notation
• AMF - ActionScript Messaging Format
JSON and PHP
Flex with AMFPHP
<?php
//connect to the databasemysql_connect ...
//get the data$ResultObject = mysql_query( “SELECT * from recipes”);...
return( mysql_fetch_object( $ResultObject ) );
?>
How to make money?
How to make money?
Recap
• Build PHP apps as services that can be used by any front end - Ajax, XAML, Flex etc...
• Rich clients and components allow you to simplify your PHP code
What’s next?
Web Compiler for Flex Applications
• http://labs.adobe.com
• Allows you to create MXML, ActionScript, upload to the server and compile there, similar to developing PHP applications
• O!ine / Occasionally Connected
• Applications can run in background
• Network
• HTTP
• XML-RPC / SOAP / Rest based web services
• Binary and XML sockets
• File I/O
• Local storage / Settings API
• Custom Chrome
• Shape
• Alpha
Apollo enables...
THANK YOU!