Dynamische Texte laden

eMatt

Grünschnabel
Hallo zusammen!

Ich muss mit Flash (Professional 8) ein dynamisches Texfeld mit Daten aus einer Datenbank füllen.
Eine Textdatei zu laden klapp auch schon,:) nur eine PHP-Datei krieg ich noch nicht hin.:( Wie macht man das? :confused:
Hier mal der Code, den ich bisher geschrieben habe:
PHP:
var cssStyles:TextField.StyleSheet = new TextField.StyleSheet ();
cssStyles.load("Stylesheet.css");

this.createTextField("my_txt", 10, 100, 100, 100, 19);
my_txt.autoSize = "left";
my_txt.html = true;
my_txt.styleSheet = cssStyles;

var myLV:LoadVars = new LoadVars();

myLV.onLoad = function (success) {
	if (success) {
		_level0.my_txt.htmlText = guestbook_xml.info;
	}
	else {
		my_txt.htmlText = "Beim Laden des Textes ist ein Fehler aufgetreten.";
	}
}

//_level0.myLV.load("http://141.47.2.44/phpflash/index4.txt");
_level0.myLV.load("http://141.47.2.44/phpflash/textinhalt.php?id=67");

Beim Aufrufen der Datei, bzw. der PHP-Datei, in der die SWF eingebunden ist, wird nur "undefined" angezeigt (nicht mal die Fehlermeldung).
Wie ihr seht versuch ich mit LoadVars eine PHP-Datei zu laden, und zwar geb ich als Link erstmal direkt die komplette URL inkl. der ID-Variable an, die den Datensatz spezifiziert. Die wirklich dynamische Lösung wollte ich erst später erarbeiten. Falls jemand die Lösung für beide Probleme weiß, umso besser.

Wär super, wenn mir jemand helfen könnte! Danke schon mal.

Gruß,
Matthias
 
Was gibt denn deine PHP Datei genau aus, wenn du sie wie angegeben aufrufst? (http://141.47.2.44/phpflash/textinhalt.php?id=67)
Außerdem solltest du die Datei auch relativ aufrufen können, ich nehme mal nicht an, dass sie auf nem anderen Server liegt, sonst darf Flash nicht darauf zugreifen, ohne eine crossdomain.xml.
Am besten formatiert die PHP Die ausgabe wie folgt: variable1=hallo%20blabla&variable2=sdf&variable3=77....usw.
Noch besser geht das ganze wenn du Json benutzt, hab dir hier ein relativ kurzes Tutorial rausgesucht:
http://digitalmemo.neobie.net/2009/05/04/passing-object-from-php-to-flash-using-json/
oder hier zb: http://www.cakesgood.com/2009/04/flash-cs3-actionscript-30-json-keep-it_3277.html

JSON ist ziemlich praktisch zum Datenaustausch, du kannst im Endeffekt irgendwelche Objekte, Arrays, Variablen deiner Wahl in eine JSON Zeichenkette umwandeln und
in Flash wieder in genau diese Objekte umwandeln lassen, auf die Weise weiß Flash auch hinterher, was alles Zahlen, Text, Booleans, etc waren.

Viele Grüße
 
Zuletzt bearbeitet:
Das Problem ist diese Zeile:
PHP:
    _level0.my_txt.htmlText = guestbook_xml.info;

Das guestbook_xml Object, gibt es in deinem Skript gar nicht.
Greif mal direkt auf das LoadVars zu:

PHP:
 _level0.my_txt.htmlText = this.info;

Dann sollte es gehn.
 
Das Problem ist diese Zeile:
PHP:
    _level0.my_txt.htmlText = guestbook_xml.info;

Das guestbook_xml Object, gibt es in deinem Skript gar nicht.
Greif mal direkt auf das LoadVars zu:

PHP:
 _level0.my_txt.htmlText = this.info;

Dann sollte es gehn.

Ups. Da hatte ich zwischenzeitlich noch was anderes probiert, was auch nicht funktioniert hatte. Eigentlich hatte ich es so:
PHP:
 _level0.my_txt.htmlText = myLV.info;
Ist aber genauso wie bei
PHP:
 _level0.my_txt.htmlText = this.info;
Es kommt immer "undefined".

@Marius:
Die PHP-Datei gibt folgendes aus:
info=<textformat leading="5">LON Universalcontroller</textformat>
(siehe http://141.47.2.44/phpflash/textinhalt.php?id=67)
Werd mir jetzt aber mal die beiden Tutorials von dir ansehen.
 
JSON ist ziemlich praktisch zum Datenaustausch, du kannst im Endeffekt irgendwelche Objekte, Arrays, Variablen deiner Wahl in eine JSON Zeichenkette umwandeln und
in Flash wieder in genau diese Objekte umwandeln lassen, auf die Weise weiß Flash auch hinterher, was alles Zahlen, Text, Booleans, etc waren.

Viele Grüße

Aber brauche ich denn JSON? Geht es nicht auch ohne? Ich muss eigentlich nur simplen Beschreibungstext aus der Datenbank ziehen und anzeigen.
Und funktioniert das überhaupt auch mit AS 2.0? Da ist überall von AS 3.0 und Flash CS3 die Rede.
 
Zuletzt bearbeitet:
Servus,

für dein Beispiel brauchst du kein Json, da lohnt sich das ganze nicht wirklich.
Und klar geht das ganze mit AS2, das einfachste Beispiel wäre:
myLv = new LoadVars();
myLv.bla = "Test"; //POST Variable die deinem php Script übergeben wird.
myLv.sendAndLoad("deinephp.php", myLv, 'POST'); //Variablen an php senden und Antwort in myLV speichern
myLv.onLoad = function(){
bla.text = myLV.variableAusPHP;
}

In der Flash IDE solltest du zum debuggen den absoluten Pfad zum Script angeben. Dann kannst du beim Debuggen mit Variablen auflisten nachprüfen ob die Variablen aus PHP angekommen sind.

Marius
 
In der Flash IDE solltest du zum debuggen den absoluten Pfad zum Script angeben. Dann kannst du beim Debuggen mit Variablen auflisten nachprüfen ob die Variablen aus PHP angekommen sind.

Wo/Wie gebe ich den Pfad an und welchen? Den der PHP-Datei? Das hab ich.

Eigentlich müsste es, wenn ich mit GET arbeiten will, doch dann so funktionieren, oder?
PHP:
myLV = new LoadVars();
myLV.id = "67";
myLV.sendAndLoad("http://141.47.2.44/phpflash/textinhalt.php", myLV, 'GET'); 
myLV.onLoad = function(){
my_txt.htmlText = myLV.info;
}
Hab auch versucht die ID ohne Anführungszeichen anzugeben, da es ja eigentlich eine Zahl und kein String ist. Kommt aber bei beiden Möglichkeiten wieder nur "undefined" als Antwort und im Debugger hab ich auch nichts gefunden, was darauf hindeuten würde, dass er tatsächlich auf die PHP-Datei zugegriffen hätte.
Wenn ich bei der Ausgabe my_txt.htmlText = myLV.info; statt "info" (meine Variable in der PHP-Datei) "id" angebe, gibt er mir die "67" aus, aber aus der PHP kriegt er irgendwie die Variable nicht raus.
Wenn ich den Code folgendermaßen änder gibt er mir den kompletten Inhalt der PHP mit ASCII-Formatierungen aus.
PHP:
myLV = new LoadVars();
myLV.load("http://141.47.2.44/phpflash/textinhalt.php", myLV, 'POST');
myLV.onLoad = function(){
my_txt.htmlText = myLV;
}
Darum hab ich jetzt mal allen HTML-Code aus der PHP-Datei rausgeschmissen und nur den reinen PHP-Code drin gelassen, worauf mir Flash "%0D%0Ainfo=hallo%20blabla&onLoad=%5Btype%20Function%5D" ausgibt. Mit my_txt.htmlText = myLV.info; kommt immer noch "undefined".
Was sind die restlichen Codierungen für Elemente? Stören die? Falls ja, wie krieg ich die weg? Warum erkennt er das info nicht als Variable? Habe auch versucht "info" vorher als Variable zu deklarieren (var info:String; ), hat aber auch nichts geändert.

Danke und viele Grüße,
Matthias
 
Zuletzt bearbeitet:
HI,
hast du es in Flash mal mit der Variablenausgabe versucht?
Also oben im Menü: Debuggen==>Variablen auflisten, wie sieht die Auflistung von dem loadvars-objekt aus?
Woher bei dir am Anfang "%0D%0A" kommt weiß ich nicht genau.

Ich hab dir einfach mal ein funktionierendes Beispiel mit ner PHP Datei und ne Fla angehängt.

Gruß
 

Anhänge

  • test.zip
    6,6 KB · Aufrufe: 16
Es funktioniert! :)

Die FLA-Datei konnte ich zwar nicht öffnen (unerwartetes Dateiformat, wahrscheinlich mit ner neueren Version von Flash wie Flash 8, oder?), deine PHP-Datei hat mich aber dazu bewegt, mir meine nochmal anzusehen und ich habe festgestellt, dass ich da ne leere Zeile drin hatte:
PHP:
<?
	include("Connections/mysql.php");
?>

<?
	$sql3="SELECT * FROM artikel ORDER BY bezeichnung";
....
Scheinbar war das das Problem.

Vielen Dank für eure Hilfe!
 
Zurück