Flash/PHP/Mysql - Partie 2: Passage de variables avec JSON et LoadVars
Voila ya plusieurs methodes, je vais essayer de toutes les tester ... Celle la me paraissait assez simple a mettre en oeuvre ...
Dans un premier temps on crée une base (appellée projetFlash) et une table MySQL que l'on va appeler news et qui va contenir 3 champs :
CREATE TABLE `news` ( `id` int(11) NOT NULL AUTO_INCREMENT, `tmstp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `news` longtext NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
Ensuite on va connecter notre Zend Framework avec notre base de données ... On ne peut plus simple il suffit de mettre dans le index.php :
Zend_Loader::loadClass('Zend_Db'); $params = array ('host' => 'localhost', 'username' => 'root', 'password' => 'root', 'dbname' => 'projetFlash'); $db = Zend_Db::factory('PDO_MYSQL', $params); Zend_Registry::set('DB', $db);
Haaaan vous connaissez mon mot de passe root ...
Une donnée bidon :
INSERT INTO `news` VALUES (1, '2007-03-21 22:22:46', 'Voici ma premiere news');
Ensuite on crée un nouveau controlleur qui pour l'instant va nous récupérer la liste des données et nous envoyer un truc du genre clé = valeur ou valeur est la représentation JSon d'un resultset. (clicker ici pour plus de détails a propos de JSON)
Zend_Loader::loadClass('Zend_Controller_Action'); Zend_Loader::loadClass('Zend_Json'); class NewsController extends Zend_Controller_Action { public function indexAction() { $this->noRouteAction(); } public function jsonListAction() { $db = Zend_Registry::get('DB'); $sql = 'SELECT * FROM news'; $result = $db->query($sql); $rows = $result->fetchAll(); echo "news=" . Zend_Json::encode($rows); } public function noRouteAction() { header('HTTP/1.1 404 Not found'); $view = Zend_Registry::get('view'); echo $view->render('Services/404.php'); } public function __call($action, $arguments) { $this->noRouteAction(); } }
Du coup un http://localhost/projetFlash/News/jsonList nous renvoie :
[{"id":"1","tmstp":"2007-03-21 22:22:46","news":"Voici ma premiere news"}]
Magnifique ... 3 minutes pour mettre ça en place c'est excellent ...
Ensuite on récupère la classe JSON pour ActionScript2, notre StringHelper (façon AS2 je l'ai un peu modifié ...) et c'est partit :
import JSON; import StringHelper; var url:String = "http://localhost:8888/luxanimation/News/jsonList"; var loader = new LoadVars(); var test:String = loader.load(url); loader.onLoad = function (success) { if (success) { trace(StringHelper.toString(JSON.parse(this.news))); } else { trace (" Error loading variables "); } }
et ça nous renvoie :
{Array} 0 = {Object} news : {String} Voici ma premiere news tmstp : {String} 2007-03-21 22:22:46 id : {String} 1
Voila emballé c'est pesé ... 15 minutes chrono pour faire le code, 20 pour écrire le billet ... =)

Comments
Peux-tu expliquer ce qui est du côté PHP et ce qui est du côté Flash
C'est quoi ce send Framework