Lors du développement d'applications web avec Flash, il est souvent nécessaire
de charger et de sauvegarder des variables dans un fichier, une base de données...
S'il est possible de lire des informations à partir d'une source externe directement avec ActionScript,
il en est autrement pour l'écriture. En effet, il vous faudra utiliser un script agissant côté
serveur qui s'occupe de la sous-traitance des opérations.
Dans cet exemple, nous allons voir comment sauvegarder un document XML généré avec Flash
en employant un script PHP pour la sous-traitance.
Ceci peut paraître facile au premier abord, encore faut-il avoir trouvé la solution...
Et croyez-moi, j'ai mis un certain temps avant d'obtenir quelque chose de convenable !
Ci-dessous le code ActionScript (téléchargez le ZIP pour avoir la totalité de l'exemple) :
Source / Exemple :
/* Sauvegarder un document XML dans un fichier
- =============================================================================
- Auteur: Dean
- =============================================================================
- /
// Exemple de document XML
// -----------------------------------------------------------------------------
example = new XML();
example.xmlDecl = '<?xml version="1.0" encoding="UTF-8"?>';
example_root = example.createElement("exemple");
example_author = example.createElement("auteur");
example_author.appendChild(example.createTextNode("Dean"));
example_description = example.createElement("description");
example_description.appendChild(example.createTextNode("Ceci est un exemple !"));
example_root.appendChild(example_author);
example_root.appendChild(example_description);
example.appendChild(example_root);
// -----------------------------------------------------------------------------
status = "Document non sauvegardé.";
// Actions effectuées lors du clic sur le bouton
// -----------------------------------------------------------------------------
function onClick(component){
if(component._name == "SaveXML"){
/* Créé une instance de LoadVars, la méthode send de l'objet XML
étant trop limitée au niveau de la configuration */
data = new LoadVars();
// Ajoute notre document XML
data["xml"] = example.toString();
// Poste la variable avec sendAndLoad
response = new LoadVars();
response.onLoad = function(failure) { if(!failure) status = "Document sauvegardé avec succès !"; return failure; }
data.sendAndLoad("sauvegarder_xml.php", response, "POST");
}
}
// -----------------------------------------------------------------------------
Conclusion :
Comme vous pouvez le voir, je n'ai pas utilisé la méthode send de l'objet XML, car celle-ci
envoie les données sous la forme de "raw-data" (comprenez sans nom de variable) et ceci
pose problème avec PHP car un changement de la configuration (php.ini) est nécessaire.
On aurait pu passer par GET et encoder le document XML dans l'URL, mais ceci est peu recommandé
et limite le volume d'informations à envoyer. LoadVars constitue donc la meilleure alternative.
Si vous testez l'exemple (attention : un serveur web équipé de PHP est requis), vous pouvez
remarquer que l'opération de sauvegarde s'effectue de manière totalement transparente, sans
affichage d'une fenêtre de navigateur. C'est aussi un point fort de cette méthode.
Je pense que j'en ai assez dit, à vous d'étudier le script. Toutes les questions et commentaires
sont les bienvenus.
30 mai 2008 à 11:19
24 sept. 2006 à 11:29
J'ai trouvé cela très intéressant mais cela ne fonctionne pas chez moi (dossier déposé dans Apache2 htdocs en local) : si j'ouvre le fichier .fla directement et demande de tester l'animation, aucun fichier n'est créé et pas de message d'erreur. Si je cherche à ouvrir le.html avec l'adresse du serveur Apache, on me rétorque que je n'ai pas le droit de le faire. Où est-ce que j'ai fauté ?
D'avance merci pour votre aide.
12 juil. 2006 à 21:04
Moi aussi je cherche une solution pour mettre a jour des données contenues dans un fichier xml. En gros j'ai un fichier xml qui contient des commentaires, des pointeurs d'images, des prix et tous cela devrait être mis à jour via un back office flash. Merci de m'éclairer si vous avez déjà fait ce genre de programme. Liaison flash - php -xml
Merci
11 mai 2006 à 17:01
en gros la personne qui va gerer le site ne connais rien et il luii faus un petit soft qui permet de reactualiser son site sans galerer ...
merci
2 déc. 2005 à 12:41
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.