Archive for the 'amfPHP' Category

24
Jun

mysql_fetch_xml : un recordset directement sur XML

Afin d' éviter
Mots clés Technorati : ,
 de transformer un recordset en XML en encapsulant les résultats en tags, voici une fonction mysql_fetch_xml qui le fait
 
 
function mysql_fetch_xml($res , $row=‘row’ , $result=‘result’) {
if (!is_resource($res)) return false;
if (mysql_num_rows($res) < 1) return ; 

$xml .= “<$result>\n”;
$i = 0;
while($l = mysql_fetch_assoc($res)) {
    $i++;
    $xml .= ” <$row id=\”$i\”>\n”;
    foreach($l as $colonne => $valeur){
        $xml .= ” <$colonne>”.htmlspecialchars($valeur).“<$colonne>\n”;
    }
    $xml .= ” </$row>\n”;
}
$xml .= “</$result>”;
return $xml;
} 

15
May

amhPHP autoincrement number avec Mysql

Exemple de code pour créer un champ auto incrémental. Assez curieusement, après avoir initialisé la variable @m, vous ne pouvez plus suivre le SQL : il faut donc faire une deuxième requête.

 function getTop10() {
    $sql=”SET @m:=0″;
    $res = mysql_query($sql) or die (mysql_error());
    // il faut le faire en deux étapes !
    $sql=”select @m:=@m+1 as pos, username, coins, wins,losses,lowest from player order by coins DESC LIMIT 0,10″;
    $res = mysql_query($sql) or die (mysql_error());

    while ($row = mysql_fetch_array($res)) $ArrayResult[] = $row;
    return $ArrayResult;

} 

 

Il ne reste plus qu’à récupérer le résultat sous FLEX dans un dataProvider.source !

22
Jan

hello world amfPHP

voici un resumé pour faire un HELLO world sous FLEX/AMFPHP

1) télecharger amfPHP version 1.2 (pas la 1.9) à partir de www.amfphp.org

2) Il faut posseder PHP >4.3 (easyPHP 1.8 fera l’affaire). Sinon certaines fonctions ne marcheront pas:

EXEMPLE:
if(!function_exists(’file_get_contents’)){
   function file_get_contents($file){
      $lines=file($file);
      if($lines!==false){
         return implode(”,$lines);
      } else {
         return false;
      }
   }
}

Créer ensuite sous APACHE un host comme: amfphp pour qu’il soir accessible sous: http://127.0.0.1/amfphp/

Dans le dossier services de amfphp, créez le fichier HelloWorld.php

dont voici le contenu

PHP:
  1. <!–p<br–>class HelloWorld{
  2.   function HelloWorld(){
  3.  include (“HelloWorld.methodTable.php”);
  4.   }
  5.   /**
  6.   @desc un simple appel echo !
  7.   @access remote
  8.   */
  9.   function makeEcho($message){
  10.     return $message.$message;
  11.   }
  12. }
  13. ?>

ouvrez alors http://127.0.0.1/amfphp/

et appuyez sur Save to HelloWorld.methodTable.php pour ré-ecrire le fichier HelloWorld.methodTable.php

La partie PHP est terminée. Il ne reste plus qu’à passer à la partie FLEX

dans flex créez un nouveau projet portant le nom testAMFPHP par exemple

Puis créez une nouvelle classe RemotingConnection.as

Actionscript:
  1. package
  2. {
  3.     import flash.net.NetConnection;
  4.     import flash.net.ObjectEncoding;
  5.  
  6.     public class RemotingConnection extends NetConnection
  7.     {
  8.     public function RemotingConnection( sURL:String )
  9.         {
  10.             objectEncoding = ObjectEncoding.AMF0;
  11.             if (sURL) connect( sURL );
  12.         }
  13.        
  14.         public function AppendToGatewayUrl( s : String ) : void
  15.         {
  16.             //
  17.         }
  18.     }
  19. }

C’est un fichier que nous allons ré-utiliser dans tous nos projets AMFPHP RemotingConnection.as

Enfin notre fichier MXML contiendra le code classique d’appel:

XML:
  1. <!–l version="1.0" encoding="utf-8–>
  2. http://www.adobe.com/2006/mxml" layout="absolute">
  3.  <script>undefined</script>
  4.  <button />

Voilà c’est terminé : Vous savez faire communiquer PHP (et mysql) avec un projet FLEX !

 

19
Jun

populate combobox

3 façons de faire pour remplir des combos: Continue reading ‘populate combobox’

19
Jun

flash DATASET

Utiliser un DataSet avec FLASH 

  Continue reading ‘flash DATASET’

18
Jun

flex amfPHP tutorial

SQL:
  1. CREATE TABLE ‘users’ (
  2.   ‘userid’ int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3.   ‘username’ varchar(255) collate latin1_general_ci NOT NULL,
  4.   ‘emailaddress’ varchar(255) collate latin1_general_ci NOT NULL,
  5.   PRIMARY KEY  (‘userid’)
  6. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=3 ;

puis créer un fichier php: sample.php

PHP:
  1. <!–p<br–>// Create new service for PHP Remoting as Class
  2. class sample
  3. {
  4.     function sample ()
  5.     {
  6.         // Define the methodTable for this class in the constructor
  7.         $this->methodTable = array(
  8.             “getUsers” => array(
  9.                 “description” => “Return a list of users”,
  10.                 “access” => “remote”
  11.             )
  12.         );
  13.     }
  14.  
  15.     function getUsers () {
  16.         $mysql = mysql_connect(localhost, “username”, “password”);
  17.        
  18.         mysql_select_db( “sample” );
  19.        
  20.         //return a list of all the users
  21.         $Query = “SELECT * from users”;
  22.         $Result = mysql_query( $Query );
  23.         while ($row = mysql_fetch_object($Result)) {
  24.                $ArrayOfUsers[] = $row;
  25.         }
  26.         return( $ArrayOfUsers );
  27.     }
  28. }
  29. ?>

 

et enfin… le code FLEX… simple non ?

XML:
  1. http://www.adobe.com/2006/mxml" xmlns="*" creationComplete="initApplication()">
  2.    
  3.        
  4.            
  5.            
  6.            
  7.        
  8.    
  9.     <script>undefined</script><script>undefined</script>

 

lien: http://www.adobe.com/devnet/flex/articles/flex2_amfphp_03.html

 

18
Jun

flex et amfPHP

2 options pour le renvoi des données dans Flex

  • Utilsation des tableaux Arrays
PHP:
  1. while ($row = mysql_fetch_object($Result))
  2. {
  3. $myArray[] = $row;
  4. }
  5. return $myArray;

 

  • ou renvoi direct du recordset mysql_query
PHP:
  1. return mysql_query($query);

 

Le premier cas permet de faire des traitements/test php avant le renvoi des données (attention si vous souhaitez mettre les données dans un datagrid et utiliser les fonctions de tri: si vos données sont des nombres faire un

settype($maval, “integer”)

avant le renvoi, sinon amfphp reverra sous le format texte et flex triera les données comme du texte)