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 9 383 fois - Téléchargée 963 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
6161
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
6 -
as2, dommage ...

Peg'
fshwork
Messages postés
4
Date d'inscription
mercredi 28 mai 2003
Statut
Membre
Dernière intervention
24 janvier 2011
-
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
6161
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
6 -
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
-
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.
fshwork
Messages postés
4
Date d'inscription
mercredi 28 mai 2003
Statut
Membre
Dernière intervention
24 janvier 2011
-
et j'avoue que j'ai eu un peu de mal avec le xml

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.