Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > Ankündigungen, News und Feedback > Tutorials > [FLASH] Datenaustausch PHP-Flash
Antwort
 
Themen-Optionen
Alt 03.02.2006, 22:44   Nach oben    #1
CIX88
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 576
Standard [FLASH] Datenaustausch PHP-Flash

Datenaustausch PHP und Flash

Diesmal möchte ich auf die Möglichkeiten eingehen, um Daten zwischen PHP,MySQL und Flash auszutauschen.

Wozu überhaupt das ganze ?

Klar, es gibt Pro und Contra was den Einsatz von Flash betrifft,
jedoch sollten meine folgenen Zeilen nicht dazu dienen, dies zu diskutieren.
Flash bietet sehr viele Einsatzmöglichkeiten, um Daten bzw. Informationen grafisch, interaktiv oder Multimediafähig darzustellen.
Ob nun Gästebücher, Statistiken, Browsergames, Navigationen oder Präsentationen ist erstmal egal.

Im folgenden möchte ich als Beispiel ein Gästebuch nutzen.
( link derzeit leider nicht aktiv )
Wobei ich aber hier auf den kompletten PHP-Quelltext eines Gästebuches verzichten möchte,
dazu findet man hier im Forum genug.
Vielmehr möchte ich auf den Datenaustausch eingehen.

Wie kommen die PHP-Daten nun zum Flash ?

Die wohl einfachste Variante, die Werte an die Flash-Datei anzuhängen, wäre vieleicht so:

Code:
mein_flash.swf?start=1
Nun kurzen und kleinen Werten ist das sicher möglich,
aber was wenn wir eine größerer Anzahl von Daten aus einer Datenbank im Flash haben möchten.
Dann sollten wir uns für einen anderen Weg entscheiden - Flash holt sich die Daten.

Variablen für Flash lesbar machen ?

Ein ganz wichtiger Punkt muss noch angesprochen werden.
Damit Flash auch die Variablen aus einer PHP-Datei erkennt, müssen diese in einer bestimmte Syntax geschrieben werden.
Hierzu benutzt Flash das &-Zeichen als - naja sagen wir einfach mal als Trenner (klingt einfacher).
Weiterhin kommt hinzu, dass die Werte, die zum Flash gelangen sollen mit echo ausgegegebn werden.

Beispiel:

PHP-Code:
<?php
echo "&nr=$nr";
echo 
"&name=$name $ort";
echo 
"&email=$email";
echo 
"&url=$url";
echo 
"&email=$email";
echo 
"&url=$url";
echo 
"&text=$text";
echo 
"&datum=$datum";
echo 
"&";
?>
Natürlich ist es auch so möglich:

PHP-Code:
<?php
echo '&nr='.$nr;
...
echo 
'&datum='.$datum;
echo 
'&';
?>
Die Flash-Variablen müssen also so übergeben werden:

Code:
&flash_variable=$php_variable
Toll, aber da gibt es noch einen kleinen Hacken :-)
Das Zeichen & wird meist als belanglos betrachtet !
Nehmen wir an, wir wollen den Textinhalt an Flash übergeben.

Beispiel:

PHP-Code:
<?php echo "&text=".$text?>
Wenn der Text nun Zeilenumbrüche enthält, kann es passieren, dass hier nicht der komplette Text im Flash ankommt.

Warum ?

Wie bereits oben beschrieben, benutzt Flash das Zeichen & als Trennzeichen zwischen den Variablen.
Da im letzten Beispiel kein &-Zeichen mehr folgt, kann dies zu problemen führen.
Schreibe dann bei der letzten Variable noch ein echo mit dem &-Zeichen.

Beispiel:

PHP-Code:
<?php echo "&text=".$text."&"?>
Dann erkennt das Flash besser das Ende, klingt ganz lustig, ist aber so.
Auch ist darauf zu achten, dass sich in den Inhalten der Variablen keine &-Zeichen befinden.
Man könnte dies verhindern, wenn man vorher die Zeichen umwandelt und im Flash wieder zurück wandelt.

Daten vom Flash aus laden

Hierzu gibt es im Flash den sogenannten AcrionScript (AS).
Um Variablen zu laden stehen hierzu zwei Befehle zur Verfügung (bis Flash MX:(

Code:
loadVariables() - loadVariables ("url" , ziel [, variablen])
loadVariablesNum() - loadVariablesNum ("url" ,stufe [, variablen])
Betrachten wir uns zunächst diese Methoden (es gibt noch mehr, aber dazu später).
Beim laden von Daten können wir den 3 Parameter [,variablen] weg lassen.
Als URL sollte eine absolute oder relative URL stehen.
Ziel kann ein MovieClip sein.
Stufe ist eine Ganzzahl, die die Stufe im Flash-Player darstellt.
Auf Ziel und Stufe möchte ich aber hier erstmal nicht weiter eingehen.

Um nun meine PHP-Datei zu laden, kann folgende Zeile benutzt werden:

Code:
loadVariables('FMX_GB.php', '');
loadVariablesNum('FMX_GB.php', 0, '');
Jetzt werden alle Variablen mit echo "&nr=$nr" ... in das Flash geholt und stehen dort zur Verfügung.
Nun gibt es noch eine Möglichkeit die ab Version Flash MX möglich ist.

Code:
LoadVars()
Hierbei handelt es sich um eine LoadVars-Klasse.
Um nicht den Rahmen hier zu sprengen will ich nur ganz kurz darauf eingehen.
Variablen aus der PHP-Datei können damit z.B. so geladen werden:

Code:
file = 'FMX_GB.php';
test = new LoadVars();
test.load( file );
Unsere Variablen stehen dann mit test.name oder test.text zur Verfügung.
Der ein oder andere wird jetzt vermuten, durch den etwas mehr AS-Code wäre dies umständlich.
Mag sein, aber diese LoadVars-Klasse bietet weitaus mehr Möglichkeiten als man annimmt :-)
Sie kann auf den HTTP-Header reagieren, die geladenen Bytes ermtteln, MIME-Typ ermitteln und
kann prüfen ob ein load- oder sendAndLoad-Vorgang abgeschlossen ist.
Diese Möglichkeiten gibt es bei loadVariables() oder loadVariablesNum() nicht.
Nützlich sind Angaben, um z.B. zu prüfen, ob auch wirklich alles geladen wurde.
loadVariables() und loadVariablesNum() laden - naja sagen wir mal Blindlinks :-)
Mitunter muss man prüfen, ob eine Variable richtig im Flash geladen wurde,
sonst kann es dazu führen, dass das Flash plötzlich stehen bleibt, und wer will das schon.

Werden MySQL-Abfragen gemacht müssen diese auch mit echo "&nr=$nr" ... ausgegeben werden.

Nachdem wir uns die Möglichkeiten angeschaut haben, um Werte aus einer PHP-Datei zu holen,
wollen wir uns nun ansehen wie Variablen vom Flash zur PHP-Datei kommen.

Wie kommen die Flash-Daten nun zur PHP-Datei ?

Ähnlich wie bei HREF-Links oder Formulare, gibt es auch hier zunächst die GET- und POST-Methode.
Nehmen wir an, wir wollen den Text vom Gästebuch an eine PHP-Datei schicken.
Die Flash-Variable sei hier mal »inhalt«.

Ähnlich wie beim Laden von Werten, können wir auch senden:

Code:
loadVariables('FMX_GB.php', '');
Jedoch reicht diese Zeile nicht wirklich aus, das ganze muss mit GET oder POST passieren.

Code:
loadVariables('FMX_GB.php', '', 'POST');
loadVariables('FMX_GB.php', '', 'GET');
Jetzt müssen nur noch die Variablen übergeben werden.
Betrachten wir uns die Methode GET.
Ähnlich wie bei Links mit <a href="blablabla" ..> kann dies auch im Flash gemacht werden.

Code:
loadVariables('FMX_GB.php?text=' + inhalt , '', 'GET');
Beachte hier die richtige Schreibeweise, sonst kommt nichts an :-)
Bei der Methode POST kann folgende Syntax benutzt werden:

Code:
inhalt = 'uhu aha oho';
loadVariables('FMX_GB.php', '', 'POST');
Flash sendet nun alle Variablen per Post an die PHP-Datei.
Aber, hier gibt es noch einen Hacken.
Flash sendet hier ALLE Flash-Variablen per POST !
Man kann dies einfach in der PHP-Datei überprüfen:

PHP-Code:
echo '<pre>'print_r$_POSTtrue ), '</pre>'
Alternative wäre hier, wieder mit der LoadVars-Klasse zu arbeiten.

Code:
test.send(url [,ziel, methode])
URL und Methode sollte klar sein, bei ZIEL kann ein Framefenster gewählt werden.
Wollen wir nun unseren Inhalt damit an die PHP-Datei senden, würde unser Beispiel so aussehen:

Code:
test.inhalt = 'uhu aha oho';
test.send('FMX_GB.php', '', 'POST')
Kleine Hinweis zum Schluss

Meist stolpert man über das Problem, dass Umlaute im Flash nicht dargestellt werden,
wenn man Werte aus einer PHP-Datei oder genrell aus einer Datei bezieht.
Abhilfe schafft hier eine Zeile, die gleich zu beginn im Flashfilm als AS eingegeben werden muss:

Code:
System.useCodepage=true;
Zur Erklärung:

Zitat:
Wenn die Eigenschaft auf false gesetzt ist, werden externe Textdateien von Flash Player als Unicode erkannt.
(Diese Dateien müssen beim Speichern als Unicode verschlüsselt werden.)

Wenn die Eigenschaft auf true gesetzt ist, werden externe Textdateien als Dateien mit der
herkömmlichen Codepage des Betriebssystems erkannt, unter dem Flash Player ausgeführt wird.
Vieleicht konnte ich auch diesmal wieder etwas näher bringen,
und den Datenaustausch zwischen PHP und Flash etwas vermitteln.

PS: Man möge mir verzeihen, wenn Tippfehler enthalten sind.
Dieses Tutorial entstand nach 10h Programmierarbeit ...
Sollte ich etwas vergessen haben -> Spam mich zu :-)

(Änderungen vorbehalten - CIX88)

Geändert von CIX88 (10.01.2007 um 08:46 Uhr). Grund: Link zum GB rausgenommen
CIX88 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

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 are An
Pingbacks are An
Refbacks are Aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PHP 5.2 Kompilierung schlägt fehl Byrel Tools, Server, Betriebssysteme 0 03.11.2006 21:09
PHP 5.1.5, PHP 4.4.4 und PHP 5.2.0 RC2 veröffentlicht Ben Nachrichten 2 01.09.2006 16:05
Flash -> PHP -> MySQL thrawn Sonstige Programmiersprachen 8 02.02.2006 18:10
PHP 5.1 ist drausen robo47 Nachrichten 5 28.11.2005 20:30
Neue PHP "release candidates": PHP 4.4.2 RC 1 und PHP 5.1 RC 6 Ben Nachrichten 1 21.11.2005 20:48


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:39 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.0.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44