Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 05-03-2006, 15:17   #1 (permalink)
Neuer User
 
Registriert seit: Feb 2006
Beiträge: 38
php und Actionscript

HI Leute,
also ich beschäftige mich gerade zum ersten Mal mit dem Thema php und blicke noch nicht so ganz durch, weil ich nicht weiss, wie ich anfangen soll. Hab auch hier im Forum gesucht, aber nicht das passende gefunden.
Also ich möchte Daten, welche ich in globalen Variablen in meinem Hauptfilm gespeichert habe, an einen Webserver schicken. Diese globalen Variablen beinhalten z.B. Inhalte von Textfeldern. Mein Frage an euch:
was genau muss ich machen, damit ich diese Daten in eine XML Datei auf einem Webserver schreiben kann? Der Inhalt der globalen Variablen soll also, nachdem man einen "Submit" Button gedrückt hat, auf dem Webserver in einer XML Datei geschrieben werden. Ich weiss, dass ich diese Daten mittels PHP Skripten verschicken kann. Was muss denn in einem solchen php Skript alles stehen und wo lege ich dieses an?
Bin für jede Hilfe dankbar....
MrXXX ist offline   Mit Zitat antworten
Alt 05-03-2006, 16:58   #2 (permalink)
notzucht
 
Benutzerbild von shorty
 
Registriert seit: Nov 2003
Ort: Potsdam
Beiträge: 2.939
Hi MrXXX ,

dass du hier im forum zu diesem thema nichts gefunden hast mag ich nicht ganz glauben, seis drum

fangen wir einfach mal vorne an. wenn du deine daten von flash zum webserver senden möchtest, ist es egal, ob diese als globale oder lokale variablen innerhalb deine anwendung vorliegen. Im zweiten fall müssen halt nur die pfadangaben zu ihnen stimmen. Die einfachste möglichkeit variablen hin und her zusenden bietet die die LoadVars - bzw. die XML - Klasse.

Wenn du dir diese angesehen, und die ersten variablen erfolgreich versendet hast, meldest dich nochmal.
__________________
.
Flex in a week | Viertel vor halb nach Vollmond | ^^°.°^^ | Waltz with Bashir
.
shorty ist offline   Mit Zitat antworten
Alt 06-03-2006, 02:05   #3 (permalink)
Neuer User
 
Registriert seit: Feb 2006
Beiträge: 38
Hallo nochmals,
habe mir jetzt meinen Apache eingerichtet und habe es hinbekommen mittels der sendandload Daten über php hin und her zu schicken.
Ich möchte jetzt aber einfach nur Daten senden, und zwar an ein XML Skript, das auf dem Webserver liegen soll. Die Daten sollen in das XML Skript geschrieben werden. Ich habe eine globale Variable _global.test, welches der Inhalt eines Textfeldes sein soll. Wie stelle ich das an, dass ich den Inhalt dieser Variablen über php an das XML Skript sende?
Habe mir aus einem Beispiel das hier zusammengebastelt:

PHP-Code:
this.submit_btn.onPress = function() {
    //Formatierung der XML-Datei
    xmlFormat = "<?xml version=1.0 encoding=utf-8 ?>";
    xmlFormat += "\n";
    xmlFormat += "<eingabe>"+_global.test+"</eingabe>";

    sendData = new LoadVars();
    sendData.xmlScript="eingabe.xml"; //Name der zu erzeugenden XML Datei auf Webserver
    sendData.uebergabe = xmlFormat;
    sendData.onLoad = geladen;
    sendData.send("http://localhost/test.php", _blank); //weiss nicht ob _blank hier Sinn macht??
};

Oder ist das ein falscher Ansatz?

Und wie müsste das PHP (hier: test.php) dazu aussehen? Sorry, aber ich versuche mich die ganze Zeit schlau zu machen, habe schon viele Beiträge gelesen, die haben mich aber leider nicht wirklich weiter gebracht Zumindest nicht weiter gebracht, um Daten von Flash in ein XML Skript zu schreiben.

Geändert von MrXXX (06-03-2006 um 03:28 Uhr)
MrXXX ist offline   Mit Zitat antworten
Alt 06-03-2006, 10:10   #4 (permalink)
Neuer User
 
Registriert seit: Feb 2006
Beiträge: 38
Kann mir hier echt niemand weiter helfen? !?!? So schwer kann das doch nicht sein oder
MrXXX ist offline   Mit Zitat antworten
Alt 06-03-2006, 11:17   #5 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
Hi!
Du musst noch einiges beachten:

- Die XML muss und darf nur einen Root-Node enhalten, der dann die weitern Daten enthält. Wie du diesen allerdings benennst, ist dir überlassen.

- Ich habe fürs Versenden sendAndLoad verwendet, ausser du willst die XML oder irgendne Statusmeldung anzeigen lassen!?

Flash:
PHP-Code:
this.submit_btn.onRelease = function() {
    //Formatierung der XML-Datei
    xmlFormat = '<?xml version="1.0" encoding="utf-8" ?>';
    xmlFormat += "<root>";
    xmlFormat += "\n";
    xmlFormat += "<eingabe>"+_global.test+"</eingabe>";
    xmlFormat += "\n";
    xmlFormat += "</root>";

    sendData = new LoadVars();
    sendData.xmlScript = "eingabe.xml"; //Name der zu erzeugenden XML Datei auf Webserver
    sendData.uebergabe = escape(xmlFormat);
    sendData.sendAndLoad("http://localhost/xmlaus.php", sendData); //weiss nicht ob _blank hier Sinn macht??
};
xmlaus.php:
PHP-Code:
<?php
    $handler    
fopen($_POST['xmlScript'], "w");
    
fwrite($handlerurldecode($_POST['uebergabe']));
    
fclose($handler);
    
//echo $_POST['uebergabe'];
    //Wenn die XML-Datei angezeigt werden soll, einfach die Kommentarzeichen vor dem echo entfernen!
?>
__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Alt 06-03-2006, 11:56   #6 (permalink)
Neuer User
 
Registriert seit: Feb 2006
Beiträge: 38
Ok vielen Dank, habe das Script ausprobiert, das funktioniert natürlich
Habe aber jetzt noch ein paar Fragen:

1. Wie kann ich es erreichen, von mehreren Benutzern die Einträge in meiner XML zu speichern? Also ungefähr so:

<?xml version="1.0" encoding="utf-8" ?><root>
<benutzer1 name="Benutzer1"><eingabe>Testtext1</eingabe></benutzer1>
<benutzer2 name="Benutzer2"><eingabe>Testtext2</eingabe></benutzer2>
<benutzer3 name="Benutzer3"><eingabe>Testtext3</eingabe></benutzer3>
usw.
</root>
Weil das ja in dem jetzigen Skript jedes mal überschrieben wird, wenn ich das neu starte und den Testtext eingebe.

2. Könnte ich auch "GET" benutzen???

3. Wenn die eingabe.xml bereits auf dem Webserver exisitiert, wäre folgendes Script ok :
PHP-Code:
<?php
//Dateiname:
$datei_name "eingabe.xml";
if(
fopen($datei_name,"r")){
    
$handler fopen($datei_name,"a+");
    
fwrite($handlerurldecode($_POST['uebergabe']));
    
fclose($handler);}?>

Danke für eure Geduld mit mir, ich gebe wirklich mein Bestes um alles zu verstehen und bin schon die ganze Zeit Forenbeiträge und Tutorials zu lesen ...

Geändert von MrXXX (06-03-2006 um 12:03 Uhr)
MrXXX ist offline   Mit Zitat antworten
Alt 06-03-2006, 12:38   #7 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
1. Du willst also die XML-Datei nicht jedesmal neu erstellen, sondern lediglich um die entsprechenden Einträge erweitern?

2. Wieso? GET ist ne schlechte Methode, da der User die Eingaben wesentlich einfach manipulieren kann, da er sie ja in der Adressleiste sehen kann. Ausserdem ist es nicht gerade vorteilhaft längere Texte an die URL anzuhängen. Darum POST.

3. Wieso zweimal fopen? Lass doch das "w" stehen... Wenn du den Dateinamen übergibst (und evtl. mehrere Files erstellen/updaten willst) ist es besser mit der Methode "w" zu arbeiten, da so das File angelegt wird, sofern es nicht existieren sollte. Ansonsten verwende die PHP-Funktion "file_exists" zum Überprüfen, ob eine Datei existiert und nicht den fopen-Befehl!
__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Alt 06-03-2006, 13:10   #8 (permalink)
Neuer User
 
Registriert seit: Feb 2006
Beiträge: 38
zu 1. Genau, ich möchte nicht jedesmal eine XML Datei erstellen, sondern die bestehende XML DAtei auf dem Webserver erweitern. Ich würde es am liebsten so haben, dass der Submit Button gedrückt wird und ein "Popup" oder ähnliches erscheint, dass zunächst einmal anzeigt, ob man wirklich sicher ist, dass man die Daten so verschicken möchte und dass derjenige dabei noch einen Benutzernamen angibt. In der XML auf dem Webserver sollten dann die Daten ungefähr so stehen wie ich vorhin geschrieben habe, in einer Art "Datenbank":
PHP-Code:
<?xml version="1.0" encoding="utf-8" ?>
<root>
<benutzer1 name="Benutzer1"><eingabe>Testtext1</eingabe></benutzer1>
<benutzer2 name="Benutzer2"><eingabe>Testtext2</eingabe></benutzer2>
<benutzer3 name="Benutzer3"><eingabe>Testtext3</eingabe></benutzer3>
usw.
</root>
Wobei eben der "Benutzer1", "Benutzer2", "Benutzer3" die eingetragenen Benutzernamen aus dem evtl. "Popup" sind. Hast du eine Idee, wie ich das realisieren kann?

zu 2. Mit dem "POST" hast du mich gerade überzeugt

zu 3. Also reicht es, wenn ich in PHP schreibe:
PHP-Code:
<?php
//Dateiname:
$datei_name "eingabe.xml";
if(
fopen($datei_name,"w")){
    
fwrite($handlerurldecode($_POST['uebergabe']));
    
fclose($handler);}?>
Obwohl ich denke, dass das sowieso geändert werden muss, wenn ich meine XML Datei erweitern will....

Danke schon mal für deine super Hilfe
MrXXX ist offline   Mit Zitat antworten
Alt 06-03-2006, 13:15   #9 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
Zu

1. Ein XML einfach so erweitern geht nicht wirklich... da müsstest du das zuerst einlesen und danach vor der eigentlich Ausgabe wieder neu reinschreiben, damit nix verloren geht.
Das mit dem Pop-Up ist eigentlich kein Problem... kannste über Flash wie auch über PHP lösen...

2. Siehste!?

3. Lass noch das if()-Gemüse weg, dann kannst es so lassen! Dank der Methode "w" überprüft er selbstständig, ob er eine neue Datei anlegen muss oder ob die bereits existiert!
__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Alt 06-03-2006, 13:27   #10 (permalink)
Neuer User
 
Registriert seit: Feb 2006
Beiträge: 38
Zu

1. Ok gut, was sollte ich also am besten machen, damit ich die Daten am Ende so in meiner XML stehen habe, wie ich möchte? Irgendwie muss ich doch mehrere Benutzereinträge in einer XML speichern können, ohne dass die alten verloren gehen!?!? Wenn ich das XML wie vorher jedes mal neu erstelle, dann muss ich doch auch irgendwie die vorherigen Einträge speichern, damit die mir nicht überschrieben werden oder?
Das mit dem Popup werd ich mir mal gleich anschauen wie sowas funktioniert. Habe schonmal ein animiertes Popup in Flash erstellt. Ich muss mal schauen, ob ich das evtl. benutzen kann.

2. thanks

3. ohne das if-Gemüse also:

PHP-Code:
<?php
//Dateiname:
$datei_name "eingabe.xml";
fopen($datei_name,"w");
fwrite($handlerurldecode($_POST['uebergabe']));
fclose($handler);}?>
MrXXX ist offline   Mit Zitat antworten
Alt 06-03-2006, 13:37   #11 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
1.
Zitat:
Zitat von MrXXX
muss ich doch auch irgendwie die vorherigen Einträge speichern, damit die mir nicht überschrieben werden oder?
Sagte ich ja! Kannst du entweder mit Flash machen oder mit PHP... in Flash müsstest du es halt vor dem nächsten Satz ausgeben (Achtung auf /root, das ja am Ende stehen muss!) und dann mit an PHP ausgeben.
Oder in PHP liest du einfach die Datei aus und trägst sie im nächsten Schritt vor dem übergebenen Satz ein... bleibt dir überlassen, wobei ich denke, dass das ganze über Flash einfacher geht, da du eine besser Kontrolle über das XML hast...

3. Geeeeeenau!
__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Alt 06-03-2006, 13:49   #12 (permalink)
Neuer User
 
Registriert seit: Feb 2006
Beiträge: 38
OK danke schon mal, aber ich kann mir leider noch nicht so genau vorstellen, wie ich das anstellen soll, dass der mir x-beliebige Einträge in der XML erstellen kann!?!?
Ich hab ja bis jetzt:

PHP-Code:
this.submit_btn.onRelease = function() {
    //Formatierung der XML-Datei
    xmlFormat = '<?xml version="1.0" encoding="utf-8" ?>';
    xmlFormat += "<root>";
    xmlFormat += "\n";
    xmlFormat += "<eingabe>"+_global.test+"</eingabe>";
    xmlFormat += "\n";
/*Hier müssten ja jetzt die nächsten Einträge kommen, aber wie gebe ich die an? In einer Schleife oder noch ganz anders? 
Ich weiss ja nicht wieviele Einträge noch kommen. Und abgesehen davon sollen die alten ja erhalten bleiben, irgendwie bin 
ich gerade verwirrt sorry */
    xmlFormat += "</root>";

    sendData = new LoadVars();
    sendData.xmlScript = "eingabe.xml"; 
    sendData.uebergabe = escape(xmlFormat);
    sendData.sendAndLoad("http://localhost/xmlaus.php", sendData);
};

Geändert von MrXXX (06-03-2006 um 13:50 Uhr)
MrXXX ist offline   Mit Zitat antworten
Alt 06-03-2006, 14:07   #13 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
Ok... nochmal ganz langsam:

1. XML einlesen und evtl. ein Objekt daraus erstellen.
2. alte XML-Daten bis vor "</root>" per Schleife in die Ausgabe packen
3. alle möglichen Eingaben anfügen (am besten auch aus nem Array oder einem Object heraus
4. "</root>" ranpacken und an PHP senden
5. per PHP das ganze eintragen...

So jetzt mal testen und nen Vorschlag präsentieren, dann gucken wir weiter!
__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Alt 06-03-2006, 14:50   #14 (permalink)
Neuer User
 
Registriert seit: Feb 2006
Beiträge: 38
Ok danke, nachdem du mir das eben nochmal kurz erklärt hast, hat es bei mir wieder "Klick" gemacht. Ich hatte vorhin irgendwie ein Brett vorm Kopf und habe gar nicht überlegt, dass ich die XML Datei zunächst natürlich erst nochmal einlesen muss. Hab anscheinend zu wenig geschlafen letzte Nacht
Naja ich habe mein Script schon getestet, das sieht jetzt so aus und voilá der hat mir sogar einen neuen Knoten eingefügt...

Hier mein Script:

PHP-Code:
userEingabe = [];
//erzeugt neues XML Objekt
var xmlData = new XML();
// ignoriert die Leerräume in der XML-file
xmlData.ignoreWhite = true;
//lädt die XML-file
xmlData.load("http://localhost/eingabe.xml");
//wird ausgeführt wenn XML geladen wurde
xmlData.onLoad = function(success) {
    if (success) 
    {        
        for (var i = 0; i<xmlData.firstChild.childNodes.length; i++) 
        {
            userEingabe[i]=xmlData.firstChild.childNodes[i];
        }
    }
}

this.submit_btn.onRelease = function() {
    //Formatierung der XML-Datei
    xmlFormat = '<?xml version="1.0" encoding="utf-8" ?>';
    xmlFormat += "<root>";
    xmlFormat += "\n";
    xmlFormat += userEingabe;
    xmlFormat += "\n";
    xmlFormat += "<eingabe>"+_global.test+"</eingabe>";
    xmlFormat += "\n";
    xmlFormat += "</root>";

    sendData = new LoadVars();
    sendData.xmlScript = "eingabe.xml"; //Name der zu erzeugenden XML Datei auf Webserver
    sendData.uebergabe = escape(xmlFormat);
    sendData.sendAndLoad("http://localhost/xmlaus.php", sendData);
Ich habe jetzt nur noch das kleine Problem, dass der mir in der XML Datei einen Zeilenumbruch nach jedem Arrayeintrag erstellen soll, damit die Einträge schön untereinander stehen. Da ist das Brett anscheinend wieder Du hast doch bestimmt eine Idee oder?
Findest du den Code verbesserungswürdig oder ist der so ok? Ich meine funktionieren "tut er ja". Habe übrigens an dem PHP Skript nichts mehr geändert...

Geändert von MrXXX (06-03-2006 um 14:51 Uhr)
MrXXX ist offline   Mit Zitat antworten
Alt 06-03-2006, 14:53   #15 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
Habe ihn natürlich nicht getestet, sieht aber auf den ersten Blick gut aus!

Also - nächster Ansatz:
PHP-Code:
xmlFormat += userEingabe
xmlFormat += "\n"
So trägst du EINEN Wert ein. userEingabe ist aber ein Array... Also, was machen wir, wenn wir ein Array haben und alle Werte brauchen...?
__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 00:51 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele