Afin d' éviter
Mots clés Technorati :
mysql_fetch_xml,
xml mySQL
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;
}
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 !
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:
-
<!–p<br–>class HelloWorld{
-
function HelloWorld(){
-
include (“HelloWorld.methodTable.php”);
-
}
-
/**
-
@desc un simple appel echo !
-
@access remote
-
*/
-
function makeEcho($message){
-
return $message.$message;
-
}
-
}
-
?>
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:
-
package
-
{
-
import flash.net.NetConnection;
-
import flash.net.ObjectEncoding;
-
-
public class RemotingConnection extends NetConnection
-
{
-
public function RemotingConnection( sURL:String )
-
{
-
objectEncoding = ObjectEncoding.AMF0;
-
if (sURL) connect( sURL );
-
}
-
-
public function AppendToGatewayUrl( s : String ) : void
-
{
-
//
-
}
-
}
-
}
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:
-
<!–l version="1.0" encoding="utf-8–>
-
http://www.adobe.com/2006/mxml" layout="absolute">
-
<script>undefined</script>
-
<button />
Voilà c’est terminé : Vous savez faire communiquer PHP (et mysql) avec un projet FLEX !
3 façons de faire pour remplir des combos: Continue reading ‘populate combobox’
SQL:
-
CREATE TABLE ‘users’ (
-
‘userid’ int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
-
‘username’ varchar(255) collate latin1_general_ci NOT NULL,
-
‘emailaddress’ varchar(255) collate latin1_general_ci NOT NULL,
-
PRIMARY KEY (‘userid’)
-
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=3 ;
puis créer un fichier php: sample.php
PHP:
-
<!–p<br–>// Create new service for PHP Remoting as Class
-
class sample
-
{
-
function sample ()
-
{
-
// Define the methodTable for this class in the constructor
-
$this->
methodTable =
array(
-
-
“description” => “Return a list of users”,
-
“access” => “remote”
-
)
-
);
-
}
-
-
function getUsers () {
-
-
-
-
-
//return a list of all the users
-
$Query = “SELECT * from users”;
-
-
-
$ArrayOfUsers[] = $row;
-
}
-
return( $ArrayOfUsers );
-
}
-
}
-
?>
et enfin… le code FLEX… simple non ?
XML:
-
http://www.adobe.com/2006/mxml" xmlns="*" creationComplete="initApplication()">
-
-
-
-
-
-
-
-
<script>undefined</script><script>undefined</script>
lien: http://www.adobe.com/devnet/flex/articles/flex2_amfphp_03.html
2 options pour le renvoi des données dans Flex
- Utilsation des tableaux Arrays
PHP:
-
-
{
-
$myArray[] = $row;
-
}
-
return $myArray;
- ou renvoi direct du recordset mysql_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)
commentaires récenets