Flash -> php -> xml -> Flash

ali-gator

Erfahrenes Mitglied
Hallo,

da ich im Moment sehr viel mit dynamischen Flash´s Arbeite die ihre Daten aus XML-Dateien bekommen (Menüs, Bildergalerien usw), habe ich mir die Frage gestellt, ob es nicht möglich ist über Flash und PHP die XML Dateien zu ändern, wie in nem CMS eben. Ich bin mir eigentlich sicher dass es mit dem Weg Flash-PHP-XML geht, aber ich habe keine Ahnung wie :) Bin nämlich in PHP absoluter Nichts-könnern... ;)
Also wäre schön wenn hier jemand Weiterführende Tipps, Links, Beispiele hat, auch wie Flash mit PHP kommunizieren kann..
Danke!

ali-gator
 
Hi,

An welcher Stelle "hakt's" denn genau? Nachfolgend ein Beispiel, wie Du eine xml-Datei einlesen, modifizieren und an ein php-Script senden kannst, wo die Datei überschrieben wird:

Beispiel-XML-Objekt:
Code:
<foo>Hallo Welt</foo>

AS-Code:
Code:
var xm = new XML();
xm.ignoreWhite = true;

xm.onLoad = function() {
	// einen neuen Knoten hinzufügen:
	var newnode = new XMLNode(1, "foo");
	var newcontent = new XMLNode(2, "Neuer Eintrag");
	newnode.appendChild(newcontent);
	this.appendChild(newnode);
	// XML-Objekt speichern:
	doSave(this);
}

function doSave(obj) {
	var lv = new LoadVars();
	lv.contents = obj.toString();
	lv.sendAndLoad("script.php", xm, "POST");
}
Achtung: Dieser Code führt in dieser Form zu einer Art Endlosschleife, da die Rückgabe des php-Scriptes an das xml-Objekt geht, dessen onLoad-Handler wiederum die Methode zum Senden an das php-Script aufruft. Die Methode zu Speichern (doSave) sollte in der Praxis natürlich nicht im onLoad-Handler stehen, sondern z.B. nach einer Benutzeraktion (Buttonklick) aufgerufen werden.

PHP-Script:
PHP:
$content = $_POST["contents"];

if ($fhd = @fopen("datei.xml", "w")) {
    fwrite($fhd, $content);
    fclose($fhd);
}

readfile("datei.xml");
(Das php-Script gibt den Inhalt der xml-Datei aus und damit an Flash zurück)

Gruß
.
 
Eigentlich hackts an der Stelle, dass ich nicht weiß wie man von Flash aus die XML Datei überschreiben kann, bzw mit welchen Befehlen Flash mit PHP kommuniziert. Auch in PHP hab ich null Ahnung :D
Der Rest, also der komplette Auslesevorgang der XML im Flash ist kein Problem, auch eine statische XML Datei kann ich schreiben.
Ich werde mir deine Beispiele morgen mal anschauen, ich denk das wird mir schon ein Stück weiterhelfen!
MFG

ali-gator
 
Hi,

das xml-Objekt wird in Form einer Zeichenkette mit einem LoadVars-Objekt und der Methode sendAndLoad an das php-Script geschickt (siehe Funktion "doSave"). Du siehst dort, dass
  1. ein neues LoadVars-Objekt erstellt wird.

  2. diesem Objekt eine Eigenschaft "contents" mit dem Wert von xml.toString() verpasst wird (xml.toString gibt das xml-Objekt wie die Ursprungsdatei als Zeichenkette zurück).

  3. Mit der Methode sendAndLoad das LoadVars-Objekt an das PHP-Script geschickt wird, wobei das XML-Objekt "xm" als Empfänger der Rückgabe angegeben wird.

Das php-Script macht nun nichts weiter, als die ursprüngliche xml-Datei zum Schreiben zu öffnen und mit den Inhalt der übergebenen Zeichenkette zu überschreiben. Bitte verstehe, dass ich an dieser Stelle keinen php-Crashkurs geben kann; für Details schau bitte im entsprechenden Forum nach.

Gruß
.
 
Soo nach langer Zeit hab ich den Beitrag mal wieder ausgegraben, hab jetzt auch einigermaßen verstanden wie Flash mit PHP kommuniziert und mal ein eigenens kleines Script gebaut, das mit Benutzereingaben einen Ordner erstellt, in den Ordner wechselt und dort eine xml erstellt und füllt.
Bisher hab ichs so gemacht dass ich den Inhalt der XML einfach als Variable abgespeichert hab... also z.b.
PHP:
var inhalt="<konten"><inhalt wert="hallo welt"></inhalt></knoten>

ich denke dass es dann aber schwierig wird, wenn ich Funktionen zum löschen von einzelnen konten erstellen will, da man die xml erst wieder reinladen muss und später alles komplett löschen und neuschreiben. Geht das auch irgendwie einfacher z.b. dass man gezielt einzelne Konten erstellen oder rauslöschen kann?
in dem beispiel steht was von new XMLNode usw aber dazu hab ich in der Hilfe nix gefunden... Kann mir jemand das mal ein wenig erklären?
bis dann
ali-gator
 
Zurück