Mettre à jour un fichier xml (ajouter un enregistrement) avec la fonction appendchild, (as2-as3) et php

Soyez le premier à donner votre avis sur cette source.

Vue 10 123 fois - Téléchargée 1 087 fois

Description

Voilà un exemple basique d'utilisation de la fonction appendchild de flash pour ajouter un enregistrement à un fichier xml.

Le principe:
- on ouvre le fichier source xml
- en cliquant sur le bouton, on créer un nouvel objet xml avec les textes de saisi
- on ajoute l'objet xml au fichier xml source
- on envoie l'objet modifié à php
- php met à jour le fichier.

Source / Exemple :


//////////////////////////////////////////////////////////
//   VERSION AS2
///////////////////////////////////////////////////////////

Sur la première image

stop();
///////////////////////////////////////////////////
//          ouverture du fichier xml
///////////////////////////////////////////////////
projet_xml.contentType = "text/XML";
projet_xml.xmlDecl = "<?xml ?>";
projet_xml = new XML();
projet_xml.ignoreWhite = true;
projet_xml.load("xml.xml");
projet_xml.onLoad = function(success) {		
	if(success){		
	_root.fichierxml.text=projet_xml; // pour visualiser le contenu du fichier xml
	}
}

Action On release du bouton envoyer:

on (release) {
  pseudosaisi=_root.pseudo.text;
  messagesaisi=_root.messager.text;
//on créer l'objet xml à ajouter:
  newxml= new XML("<poste><pseudo>"+pseudosaisi+"</pseudo><message>"+messagesaisi+"</message></poste>");
//on rattache l'objet à l'xml existant 
  projet_xml.firstChild.appendChild(newxml);
//uniquement pour le test sous flash, je vérifie l'anim si le xml à envoyé est complet   
  trace (projet_xml);
//j'envoie le tout à php qui écrit dans le fichier xml:  
  projet_xml.sendAndLoad("xml.php", projet_xml);
//cette action c'est juste pour actualiser l'affichage sans recharger (dans l'absolu, elle n'est pas nécessaire):  
 gotoAndPlay("Séquence 2", 1);	
}

/////////////////////////////////////////////////////////////////////////////////////////////
// VERSION AS3
/////////////////////////////////////////////////////////////////////////////////////////////
stop();

var xmlLoader:URLLoader = new URLLoader();
var xml_projet:XML = new XML(); 
xmlLoader.addEventListener(Event.COMPLETE, LoadXML); 
xmlLoader.load(new URLRequest("XML.xml")); 
function LoadXML(e:Event):void {
xml_projet = new XML(e.target.data);
}

   
//fonction exécutée en cliquant sur le bouton envoyer  
function onClic(pEvt:Event):void {
var pseudosaisi:String = pseudo.text;
var messagesaisi:String = messager.text
var nodetext=XML("<poste><pseudo>"+pseudosaisi+"</pseudo><message>"+messagesaisi+"</message></poste>");   
xml_projet.appendChild(nodetext);  
var loader:URLLoader = new URLLoader();
var req:URLRequest = new URLRequest("xml.php");
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
req.method = URLRequestMethod.POST;
req.data = xml_projet;
loader.load(req);
play();
}
//ecoute du clic sur bouton:   
envoyer.addEventListener(MouseEvent.CLICK, onClic);

////////////////////////////////////////////////////////////////////////////////////////////

Conclusion :


Pour faire un guestbook

Codes Sources

A voir également

Ajouter un commentaire Commentaires
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 11
30 oct. 2010 à 11:54
as2, dommage ...

Peg'
fshwork Messages postés 4 Date d'inscription mercredi 28 mai 2003 Statut Membre Dernière intervention 24 janvier 2011
30 oct. 2010 à 16:17
salut peg'

C'est vrai que vu que je suis pas un expert as, j'ai fait avec l'as2 car je connaissais mieux la syntaxe ;)

J'ai essayé de regarder en AS3, mais j'ai un peu de mal avec les méthodes "listener", etc.... mais en AS3, ça me donnerait un truc dans le genre:

var xmlLoader:URLLoader = new URLLoader();
var xml_projet:XML = new XML();
xmlLoader.addEventListener(Event.COMPLETE, LoadXML);
xmlLoader.load(new URLRequest("XML.xml"));
function LoadXML(e:Event):void {
xml_projet = new XML(e.target.data);
}


//fonction exécutée en cliquant sur le bouton envoyer
function onClic(pEvt:Event):void {
var pseudosaisi:String = pseudo.text;
var messagesaisi:String = messager.text
var nodetext=XML(""+pseudosaisi+"

<message>"+messagesaisi+"</message>

");
xml_projet.appendChild(nodetext);
var loader:URLLoader = new URLLoader();
var req:URLRequest = new URLRequest("xml.php");
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
req.method = URLRequestMethod.POST;
req.data = xml_projet;
loader.load(req);
play();
}
//ecoute du clic sur bouton:
envoyer.addEventListener(MouseEvent.CLICK, onClic);
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 11
30 oct. 2010 à 18:50
Le soucis de ton code est que tu dois charger le XML avant de le mettre à jour pour ensuite le compléter et renvoyer le tout ..
Pourquoi ne pas faire une méthode en XML de mise à jour de fichier plutôt que de devoir tout retransférer à chaque fois ?

Hormis le fait d'éviter des tonnes de transfert, ça éviterais aussi de mettre à dispos le mot de passe et le pseudo de n'importe de qui les veut via un simple navigateur.

Peg'
fshwork Messages postés 4 Date d'inscription mercredi 28 mai 2003 Statut Membre Dernière intervention 24 janvier 2011
30 oct. 2010 à 20:57
A dire vrai, je me suis pas vraiment posé la question, comme c'était un fichier de stockage de messages, j'ai pas pensé à la mise à dispo du fichier partant du principe que de toute façon les messages seraient visibles dans l'anim source.

dans l'animation source de cet extrait de code, j'avais juste besoin de lire un xml pour afficher les messages et donner la possibilité de laisser un message, et de mettre à jour l'affichage des messages. et comme je charge le xml pour les afficher, j'en profite pour le modifier au moment de l'envoi.
Twinspirit Messages postés 58 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 7 mai 2012
1 nov. 2010 à 08:03
C'est extrêmement utile pour la mise a jour de préférences utilisateur, qui seraient stockées sur le poste du client.
Bien sur, on n'y stocke pas de données sensibles, mais ça n'enlève rien à l'utilité de ta source.
Merci.

PS : Pour la communication avec PHP en AS3, je te conseille de regarder du côté de AMFPHP.

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.