Communiquer avec une base de données en Actionscript via PHP/MySQL
Bonjour, et bienvenue sur les sentes de l'accès aux bases de données depuis Flash.
Ce tuto est à ranger dans la catégorie pied à l'étrier. Vous y trouverez de quoi accéder à une base, lire des enregistrements et (dans la deuxième partie) comment les modifier.
ActionScript, à l'origine des temps du début de l'Histoire, permettait de programmer des animations.
De fil en release le langage est devenu chaque fois plus puissant et on s'est habitués à en attendre à peu près tout.
Cependant, dès qu'on dépasse la simple animation et qu'on commence à cheminer dans les horizons applicatifs - il est d'ailleurs intéressant de noter comment les projets flash, dont on parlait de façon générique en employant le terme animation, ont peu à peu, viré vers la terminologie application…
Quand on dépasse la “simple” animation donc, on a vite besoin de stocker (et d'accéder à) des données en dehors du fla.
Pour beaucoup, qui dit données dit base.
C'est pourquoi je me propose ici de débroussailler le chemin vers les bases de données - à grand coup de serpe, vous peaufinerez
Il sera question du langage PHP dans ses quelques balbutiements fondamentaux, de ses fonctions MySql les plus couramment utilisées et de requêtes SQL.
Il faut aussi que vous sachiez créer une base.
Et que vous disposiez à tout le moins d'un éditeur de texte pour les fichiers .php (même notepad ferait l'affaire).
Il sera question de tableaux, vous pouvez vous rafraichir la mémoire ici.
Je ne suis pas plus un maitre du PHP que du SQL (que de rien d'ailleurs mais ne le répétez pas, j'ai une réputation1) à entretenir) aussi devrez vous considérer les lignes SQL à titre d'exemple et non comme une Vérité Absolue et Inaltérable.
Je vous encourage donc à lire la suite sur le sujet dédié
Puisque vous avez tout, en route pour la base !
PHP/MySQL
Wikipédia nous raconte en détail ce qu'est PHP.
Pour résumer en deux mots et du point du vue qui nous intéresse : PHP (historiquement Personal Home Page) c'est un langage de script qui s'exécute côté serveur et qui permet de générer des pages web dynamiques (tout ou partie).
Vu qu'une page web n'est rien d'autre qu'un fichier texte (interprété par un navigateur) et que Flash - pardon AS3 - sait lire des données depuis un fichier texte, voilà qui nous donne une idée du biais par lequel on va avoir recours aux services de PHP.
Il suffira de lui faire écrire les données dans un format qui nous arrange et de les utiliser.
On pourra donc, selon notre humeur ou les contraintes, choisir d'afficher des paires variable/valeur (URLVariables) ou du texte entre balises façon xml.
Au fond ça râle : ”Il suffira de lui faire écrire les données… Elle est gentille la fille ! Mes données à moi elle sont dans une base, quel rapport avec PHP ?”
Le rapport c'est MySQL (en tous cas dans ce tuto).
Nous allons utiliser les fonction MySQL de PHP pour interroger une base, rapatrier les données de notre choix et les présenter de telle façon que nous pourrons en tirer le meilleur parti. Selon le même principe nous pourrons modifier ajouter ou supprimer des enregistrements.
Bien sûr ça implique que vous ayez quelques notions de SQL, le reste je détaillerai au besoin.
Envoyer et recevoir des données : principe
Avant de nous énerver avec MySQL on va commencer par apprivoiser PHP.
Télécharger les données
A vos clavier : créez un fichier .php avec le minimum vital pour nos premières expérimentations et publiez le sur le serveur (local ou distant)
<?php echo "Mon premier php"; ?>
Je rappelle à toutes fins utiles qu'un fichier php, c'est un fichier texte avec l'extension .php, n'importe quel éditeur de texte fera l'affaire.
Du coté de flash on se propose, dans un premier temps, d'en lire le contenu.
On va avoir recours aux classes URLLoader et URLRequest.
var chargeur:URLLoader=new URLLoader(); // L'adresse du .php var urlRq:URLRequest=new URLRequest("http://localhost/TutosMB/Demo.php"); // un écouteur sur le chargeur chargeur.addEventListener(Event.COMPLETE,qdFini); // chargez ! chargeur.load(urlRq); // la fonction de rappel function qdFini(e:Event) { trace(e.target); trace(e.target.data); }
[object URLLoader] Mon premier php
Et voilà le travail
Pas plus, et on a accès au contenu du fichier php via la propriété data de l'objet URLLoader.
Prenez garde aux lignes vides
Dans le fichier .php, soyez vigilants à ne pas laisser trainer des lignes vierges avant ou après les balises :
Si maintenant on lit le fichier (comme ci-dessus) en encadrant la valeur de retour d'un caractère quelconque pour bien voir :
function qdFini(e:Event) { trace("-"+e.target.data+"-"); }
voici ce que vous constatez :
- Mon premier php -
Hé oui ! Les lignes vierges sont retournées… Ça pourrait nuire sérieusement par la suite
Envoyer des variables
Accéder au contenu d'un fichier PHP, c'est gentil, mais encore faut-il pourvoir lui envoyer des variables à traiter. Il faudra bien à un moment ou à un autre lui préciser la table à lire, le champ sur lequel faire une recherche…
On dispose pour ce faire de la classe URLVariables qui s'utilise conjointement à la propriété data de URLRequest.
var chargeur:URLLoader=new URLLoader(); var urlRq:URLRequest=new URLRequest("http://localhost/TutosMB/Demo.php"); // un chaine de variables passées par couple variable/valeur séparés par esperluette var vars:URLVariables=new URLVariables("nom=Machin&age=12"); // on enverra avec la méthode POST urlRq.method=URLRequestMethod.POST; // les données à transmettre urlRq.data=vars; chargeur.addEventListener(Event.COMPLETE,qdFini); chargeur.load(urlRq);
Le fichier PHP recevra deux variables nom
et age
.
<?php echo "j'ai récupéré ".$_POST['nom'].' et '.$_POST['age']; ?>
la fonction de rappel reste la même pour nos tests :
function qdFini(e:Event) { trace(e.target); trace(e.target.data); }
[object URLLoader] j'ai récupéré Machin et 12
Une syntaxe alternative
var chargeur:URLLoader=new URLLoader(); var urlRq:URLRequest=new URLRequest("http://localhost/TutosMB/Demo.php"); // ------> ICI ça change <------------- // un objet URLVariables var vars:URLVariables=new URLVariables(); // Les variables vars.nom="machin"; vars.age="12"; // ------> fin modifs <------------- // on enverra avec la méthode POST urlRq.method=URLRequestMethod.POST; // les données à transmettre urlRq.data=vars; chargeur.addEventListener(Event.COMPLETE,qdFini); chargeur.load(urlRq);
Format de réception des données
la classe URLLoader expose une propriété dataFormat qui permet de préciser le format selon lequel on compte recevoir les données téléchargées.
la classe URLLoaderDataFormat nous donne trois constantes pour déterminer le mode de réception : BINARY, TEXT, VARIABLES.
TEXT
C'est le format par défaut, nous venons à l'instant de le constater avec la chaine “j'ai récupéré Machin et 12”.
D'aucun pourraient penser que ce n'est pas bien utile. En fait si, et on peut déjà anticiper un peu :
Imaginons que PHP ait fabriqué une chaine avec les enregistrements du champ nom
dans une table clients
et qu'on ait pris soin de séparer les noms par ## (ou n'importe quelle chaine identifiable de notre choix)…
Du côté AS3 il suffit d'appliquer la méthode split
(classe String) à la-dite chaine pour récupérer un tableau remplit des noms de la table client.
function qdFini(e:Event) { var tab:Array=e.target.data.split("##"); trace(tab[0]); }
Pour les St Thomas vous pouvez vous y essayer dès maintenant avec une bête ligne de ce type dans le PHP
<?php echo "zéro##un##deux##trois"; ?>
VARIABLES
Voilà qui peut aussi nous être bien utile puisque les données seront transmises au format variable de code URL (paires nomVariable=valeur séparées par le caractère '&').
Pour tester, une ligne dans le php :
<?php echo "nom=Machin&prenom=Françoise"; ?>
Du côté AS3, au chargement rien de neuf si ce n'est renseigner la propriété :
chargeur.dataFormat=URLLoaderDataFormat.VARIABLES;
A la lecture, la propriété data de l'objet URLLoader renvoie un objet URLVariables qui contient les variables d'URL codées dans le php.
Dit autrement, avec le php considéré, on dispose des deux propriétés nom
et prenom
(chargeur.data.nom
et chargeur.data.prenom
)
var chargeur:URLLoader=new URLLoader(); var urlRq:URLRequest=new URLRequest("http://localhost/TutosMB/Demo.php"); // On veut récupérer les données au format variable de code URL chargeur.dataFormat=URLLoaderDataFormat.VARIABLES; chargeur.addEventListener(Event.COMPLETE,qdFini); chargeur.load(urlRq); function qdFini(e:Event) { // accès à nom et prénom directement en tant que propriété de data trace(e.target.data.nom+" "+e.target.data.prenom); }
Lire le contenu d'une table et l'afficher
Composants List, Combo, Grid… : Rappel
Avant d'attaquer les hostilités, si besoin était de vous rafraîchir la mémoire quant à l'utilisation de ces composants, je vous propose d'ajouter une instance de l'un ou de l'autre (ça se mange pareil) sur la scène2).
Disons que vous l'avez nommé laListe
.
Pour la remplir on utilise le plus souvent un fournisseur de données : un objet DataProvider qui renseigne la propriété dataProvider du composant concerné.
Il existe de nombreuses techniques pour parvenir à nos fins, petit récap :
addItem
Créer un objet DataProvider :
var dp:DataProvider= new DataProvider();
Lui ajouter des items :
dp.addItem({label:"Pomme",data:25, otchoz:"Golden"}); dp.addItem({label:"Cerise",data:14,otchoz:"Bigarreau"}); dp.addItem({label:"Orange",data:48, otchoz:"Navel"});
Renseigner la propriété dataProvider :
laListe.dataProvider=Dp;
laListe.addItem({label:"Pomme",data:25, otchoz:"Golden"});
Depuis un tableau
var tab:Array=new Array({label:"un"},{label:"deux"},{label:"trois"},{label:"quatre"}); var dp:DataProvider= new DataProvider(tab); laListe.dataProvider=dp;
… et on aurait pu faire encore plus simplement :
var tab:Array=new Array["un","deux","trois","quatre"]; var dp:DataProvider= new DataProvider(tab); laListe.dataProvider=dp;
Depuis un XML
Vous pouvez encore choisir d'exploiter un format XML :
var DonneesXML:XML = <Produits> <item label="Pomme" data="25" otchoz="Golden" /> <item label="Cerise" data="14" otchoz="Bigarreau" /> <item label="Orange" data="48" otchoz="Navel" /> <item label="Abricot" data="150" otchoz="nr" /> <item label="banane" data="9" otchoz="nr" /> </Produits>;
Exactement semblable dans le rendu :
var DonneesXML:XML = <Produits> <item> <label> Pomme </label> <data> 25 </data> <otchoz> Golden </otchoz> </item> <item> <label> Cerise </label> <data> 14 </data> <otchoz> Bigarreau </otchoz> </item> </Produits>;
Construire un fournisseur de données, toujours selon le même principe :
var dpx:DataProvider = new DataProvider(DonneesXML); laListe.dataProvider=dpx;
Afficher le contenu d'un champ dans List ou Combo
Maintenant qu'on a les idées claires, et à titre de mise en jambes, je vous propose d'afficher dans une liste (déroulante ou non) le contenu du champ titre
d'une table TPhotos
.
La table
Imaginons cette table :
On veut remplir une liste du contenu du champ titre :
Les fichiers PHP
Puisque AS3 ne sait pas interroger une base, il va demander à PHP de s'en charger. Lequel PHP va bien gentiment lui rendre ce service en générant une chaine construite comme ça nous arrange.
Pour ce premier exemple disons qu'on souhaite récupérer les titres séparés par ##, histoire d'en faire simplement un tableau (split, vous vous souvenez) à passer au constructeur d'un DataProvider.
Parametres de connexion
Pour accéder à une base, il faut d'abord s'y connecter…
S'y connecter ça signifie fournir à chaque fois les mêmes infos : le nom du serveur, le nom utilisateur, le mot de passe, le nom de la base… Autant le faire une bonne fois pour toutes dans un fichier .php spécifique, qu'on appèlera en préliminaire à toute opération d'accès à la base. On se contente d'y valoriser des variables qu'on utilisera ensuite à notre gré.
ParametresConnexion.php
<? $serveur="localhost"; $utilisateur="root"; $motDePasse="XXXXX"; $base="demoMB"; ?>
Le fichier chargé
La première ligne inclut le fichier ParametresConnexion.php
dans le script (require_once
).
On peut ensuite se connecter à l'aide de la fonction mysql_connect
et sélectionner la base à l'aide de l'identifiant de connexion retourné (un canal).
Le résultat de l'exécution (réussie) d'une requête SELECT peut être indifféremment lu par les fonctions mysql_fetch_row, mysql_fetch_assoc, mysql_fetch_object, mysql_fetch_array.
Toutes les méthodes se valent notamment du point de vue des performances 3)
Ici, j'ai choisi fetch_row.
Comme les autres elle lit l'enregistrement courant dans $result
et avance le pointeur sur la ligne suivante.
Quand il n'y a plus d'enregistrement, elle retourne faux.
Demo.php
<?php // Les paramètres require_once("ParametresConnexion.php"); // Selection de la base $idConnect = mysql_connect($serveur, $utilisateur, $motDePasse); mysql_select_db($base,$idConnect); $nomTable = TPhotos; $nomChamp= titre; // Chaine SQL -------------------- $chSQL = 'SELECT '.$nomChamp.' FROM '.$nomTable ; $result = mysql_query($chSQL, $idConnect); // Fabriquer la chaine de sortie while($enreg =mysql_fetch_row($result)){ $sortie.=$enreg[0]."##"; } // supprimer les caractères excédentaires // pour détail de la fonction : http://fr.php.net/substr $sortie=substr($sortie,0,-2); echo $sortie; ?>
Des ballons##Un château##Jolie rose
Pour déboguer le php, ou plus prosaïquement voir ce qu'il retourne, vous pouvez saisir l'adresse directement dans votre navigateur préféré (par exemple ):
http://localhost/TutosMB/Demo.php
Et ben voilà, yapuka remplir la liste
import fl.data.DataProvider; var chargeur:URLLoader=new URLLoader(); // adresse du php var urlRq:URLRequest=new URLRequest("http://localhost/TutosMB/Demo.php"); chargeur.addEventListener(Event.COMPLETE,qdFini); chargeur.load(urlRq); function qdFini(e:Event) { // un tableau depuis la chaine de retour var tabPhotos:Array=e.target.data.split("##"); // Le fournisseur de données var dpPhotos:DataProvider=new DataProvider(tabPhotos); // remplir la liste lstPhotos.dataProvider=dpPhotos; }
Plus de souplesse
L'exemple ci-dessus lit toujours le champ titre de la table TPhotos, ce serait plus malin de pouvoir préciser la table et le champ lus depuis Flash.
Puisqu'on sait envoyer des variables à un fichier .php, on ne va se priver de cette petite sophistication :
Dans flash il suffit d'ajouter trois lignes :
import fl.data.DataProvider; var chargeur:URLLoader=new URLLoader(); var urlRq:URLRequest=new URLRequest("http://localhost/TutosMB/Demo.php"); // -- ici ---------------------- var vars:URLVariables=new URLVariables("table=TPhotos&champ=legende"); urlRq.method=URLRequestMethod.POST; urlRq.data=vars; // ----------------------------- chargeur.addEventListener(Event.COMPLETE,qdFini); chargeur.load(urlRq);
Et dans le php guère plus :
<?php require_once("ParametresConnexion.php"); $idConnect = mysql_connect($serveur, $utilisateur, $motDePasse); mysql_select_db($base,$idConnect); //----> ici on valorise avec les variables envoyées plutôt qu'"en dur" $nomTable = $_POST['table']; $nomChamp= $_POST['champ']; // $nomTable = TPhotos; // $nomChamp= titre; // Chaine SQL -------------------- $chSQL = 'SELECT '.$nomChamp.' FROM '.$nomTable ; $result = mysql_query($chSQL, $idConnect); while($enreg =mysql_fetch_row($result)){ $sortie.=$enreg[0]."##"; } $sortie=substr($sortie,0,-2); echo $sortie; ?>

TP : Charger la photo choisie dans la liste
Histoire de ne pas alourdir les sources, on va se contenter de remplir une liste déroulante (ça changera) des titres des photos trouvés dans la table TPhotos, et de tracer le nom du fichier associé.
Pour ce qui est de le charger je vous renvoie aux tutos dédiés celui-ci par exemple
Je suppose une instance d'un composant comboBox nommée cboPhotos
, et je considère qu'elle sera remplie d'objets exposant les propriétés data
pour le nom du fichier, et label
pour le titre.
Par défaut c'est le champ label
qui est affiché, et on accède à data via selectedItem
.
Voici donc le code de la comboBox :
cboPhotos.addEventListener(Event.CHANGE,cboQdChange); function cboQdChange (e:Event):void { trace("nom du fichier : "+e.target.selectedItem.data); }
Reste à la remplir. Vous savez tout ce qu'il faut pour y parvenir et il y a plusieurs voies possibles.
Je vous laisse vous y essayer.
La proposition suivante utilise le format VARIABLES pour récupérer deux variables : une qui vaut les titres, une autre qui vaut les noms.
Les entrées étant séparées par le caractère '#' un coup de split
dessus et on obtient deux tableaux.
Puis on les parcourt pour remplir la liste, directement avec sa propriété additem.
.php
<?php require_once("ParametresConnexion.php"); // Selection de la base ! $idConnect = mysql_connect($serveur, $utilisateur, $motDePasse); mysql_select_db($base,$idConnect); // Chaine SQL -------------------- $chSQL = "SELECT titre, nomFichier FROM TPhotos" ; $result = mysql_query($chSQL, $idConnect); $titre="titre="; $nom="nom="; while($enreg =mysql_fetch_row($result)){ $titre.= $enreg[0]."#"; $nom.=$enreg[1]."#"; } echo $titre."&".$nom; ?>
titre=Des ballons#Un château#Jolie rose#&nom=ballons.png#chateau.jpg#rose.jpg#
Flash
var chargeur:URLLoader=new URLLoader(); var urlRq:URLRequest=new URLRequest("http://localhost/TutosMB/DemoVarURL.php"); chargeur.addEventListener(Event.COMPLETE,remplitCbo); // format variable pour récupérer des propriétés chargeur.dataFormat=URLLoaderDataFormat.VARIABLES; chargeur.load(urlRq); function remplitCbo(e:Event) { //trace(e.target.data.nom); // fabrique deux tableaux pour les noms (fichiers associés) et titres var tabNom:Array=e.target.data.nom.split("#"); var tabTitre:Array=e.target.data.titre.split("#"); var i:int; // il y a un '#' de trop var max:int=tabNom.length-1; // remplit la liste for (i=0; i<max; i++) { cboPhotos.addItem({label:tabTitre[i],data:tabNom[i]}); } }
Dans un composant DataGrid
On peut aussi souhaiter afficher plusieurs champs d'une même table, voire de tables en relation. Réjouissez vous : rien de neuf. On a déjà tout vu
Les DataGrid se remplissent selon les mêmes techniques que les listes, à l'aide d'un fournisseur de données. Je vais profiter de ce dernier exemple pour illustrer l'écriture d'un .php qui construit une chaine convertible en XML.
Je vous propose donc de remplir une grille (grPhotos
) des contenus des champs titre
, nomFichier
et legende
de la toujours même TPhotos
.
Une grille et un écouteur
grPhotos.addEventListener(Event.CHANGE,grQdChange); function grQdChange(e:Event):void { trace("Titre "+e.target.selectedItem.titre+" Fichier "+e.target.selectedItem.fichier+" Légende "+e.target.selectedItem.legende ); }
Un .php qui renvoie une chaine convertible en XML
Là aussi, plusieurs structures possible pour le “futur XML”, je choisis celle-ci :
<donnees> <item titre= "Des ballons" fichier= "ballons.png" legende= "Envolée multicolore" /> <item titre= "Un château" fichier= "chateau.jpg" legende= "une légende pour château" /> <item titre= "Jolie rose" fichier= "rose.jpg" legende= "Oh ! La jolie rose !" /> </donnees>
Le .php
<?php require_once("ParametresConnexion.php"); // Selection de la base ! $idConnect = mysql_connect($serveur, $utilisateur, $motDePasse); mysql_select_db($base,$idConnect); // Chaine SQL -------------------- $chSQL = "SELECT titre, nomFichier, legende FROM TPhotos" ; $result = mysql_query($chSQL, $idConnect); $sortie="<donnees>"; while($enreg =mysql_fetch_row($result)){ $sortie.="<item "; $sortie.='titre= "'.$enreg[0].'" '; $sortie.='fichier= "'.$enreg[1].'" '; $sortie.='legende= "'.$enreg[2].'" />'; } $sortie.="</donnees>"; echo $sortie; ?>
S'il vous venait l'idée de vérifier la sortie php en l'affichant dans votre navigateur, vous pourriez être victime d'une méchante disconvenue !
En effet, vous ne verrez rien

Choisissez la commande Code source de la page du navigateur pour juger du résultat

Depuis Flash
Charger un .php, vous savez maintenant faire par cœur, la seule question à se poser, c'est dans quel format récupérer les données. On a choisi XML, donc c'est du texte, donc rien à préciser (sauf à vouloir y voir clair) puisque c'est par défaut.
var chargeur:URLLoader=new URLLoader(); var urlRq:URLRequest=new URLRequest("http://localhost/TutosMB/DemoFormatXml.php"); chargeur.addEventListener(Event.COMPLETE,remplitGrille); // par défaut ;) //chargeur.dataFormat=URLLoaderDataFormat.TEXT; chargeur.load(urlRq); function remplitGrille(e:Event) { trace(e.target.data); e.target.removeEventListener(Event.COMPLETE,remplitGrille); var DonneesXML:XML=XML(e.target.data); var dpx:DataProvider=new DataProvider(DonneesXML); grPhotos.dataProvider=dpx; }
Lire et afficher le contenu de plusieurs tables
Il est bien rare qu'une base contienne une seule table
Imaginons seulement qu'il nous vienne à l'idée d'organiser les photos par catégories, aussitôt déboule une table TCat
et la table de relation disons RPhotosCat
qui associe photos et catégorie(s) dont elles dépendent.
J'admets volontiers que la table RPhotosCat
(à droite) n'est pas terriblement facile à lire, d'où la nécessité d'aller chercher dans les tables TPhotos
et TCat
le contenu des champs titre
et nomCat
correspondant aux id pour afficher dans Flash quelque chose de plus lisible :
On est d'accord : lire des enregistrements depuis une ou plusieurs tables ne change rien en ce qui concerne AS, puisque tout se joue dans le PHP, via une fonction MySql qui exécute une requête SQL.
SQL d'un peu plus près
Jusque là on n'a utilisé des fonctions SQL (via MySQL) que de très simplistes SELECT FROM, mais il suffit que se pointe une table de relation pour que les choses s'enveniment (un peu… pas de panique).
En français :
J'ai besoin (donc je sélectionne) des champs titre
et nomCat
J'irai chercher depuis la table RPhotosCat (que je surnomme R)
les correspondances dans la table TPhotos
(que je surnomme P) là où R.idPhoto = P.idPhoto
et dans la table TCat
(que je surnomme C) là où R.idCat = C.idCat
$ChSQL = 'SELECT titre, nomCat FROM RPhotosCat R INNER JOIN TPhotos P ON R.idPhoto = P.idPhoto INNER JOIN TCat C ON R.idCat = C.idCat';
Le code
A partir de là plus rien de nouveau, tout le reste on sait faire et on a déjà fait, d'ailleurs. Je vous laisse donc copier/coller/modifier (ou tout re-écrire pour ceux qui pratiquent selon la méthode des gammes )
PHP
<?php require_once("ParametresConnexion.php"); // Selection de la base ! $idConnect = mysql_connect($serveur, $utilisateur, $motDePasse); mysql_select_db($base,$idConnect); // Chaine SQL -------------------- $ChSQL = 'SELECT titre, nomCat FROM RPhotosCat R INNER JOIN TPhotos P ON R.idPhoto = P.idPhoto INNER JOIN TCat C ON R.idCat = C.idCat'; $result = mysql_query($ChSQL, $idConnect); $sortie='<donnees>'; while($enreg =mysql_fetch_row($result)){ $sortie.="<item "; $sortie.='Titre= "'.$enreg[0].'" '; $sortie.='Catégorie= "'.$enreg[1].'" />'; } $sortie.="</donnees>"; echo $sortie; ?>
AS
var chargeur:URLLoader=new URLLoader(); var urlRq:URLRequest=new URLRequest("http://localhost/TutosMB/DemoRelation.php"); chargeur.addEventListener(Event.COMPLETE,remplitGrilleCat); chargeur.load(urlRq); function remplitGrilleCat(e:Event) { trace(e.target.data); var DonneesXML:XML=XML(e.target.data); var dpx:DataProvider=new DataProvider(DonneesXML); grPhotosCat.dataProvider=dpx; }
Vers la suite
Vous voilà outillés pour consulter et afficher les données d'une base.
Bien sûr, ça a très peu à voire avec AS, puisque les opérations qui concernent la base elle même sont l'œuvre de requêtes SQL, via MySQL, via PHP…
Bien sûr toujours, pour les opérations d'écriture il en sera de même : le primordial consistera en l'écriture de requêtes appropriées et ce depuis un fichier .php.
De fait, pour la partie AS vous savez tout puisqu'on a vu comment passer des variables
Si vous nêtes pas (ou plus) familiers des manipulations de base (jeu de mots ) je vous invite à consulter la deuxième partie de ce tuto où sont mises en œuvre les opérations d'écriture au sens large (modification, ajout, suppression).
vers la suite : travailler avec les enregistrements
