Flash/PHP/Mysql - Partie 2: Passage de variables avec JSON et LoadVars

Tagged:

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