flash und XML

Stephan Zesiger

Erfahrenes Mitglied
Hi @all

hab mich ein wenig mit dem xml objekt von flash versucht. Nun möcht ich mal was damit umsetzten. zB ein forum (mit einem mod, ratet mal wer :) )
nun zu meiner frage: wie läuft das mit dem daten speichern ?

Flash>php(bei mir cf)>xml> db oder wie ?

brauch ich überhaupt eine datenbank ? basileus, du hast ja erfahrung, hilf mir mal;)

gruss skyla
 
Skyla fragt mich was !!!!!!!!!!!

Wahnsinn, und das nach 36h Schufterei für ne dämliche Präsentation, aber in diesem Falle gebietet die Ehre selbstredend eine Antwort (ich hoff ich werd nicht zu fahrig wegen schlafmangels...)

ALso ersmal:
ich hab keine Kippen mehr und muss zur Tanke laufen, dewegen erstmal kurz und dann länger..

xml is ja nun einzig und allein eine Sprache a.)zum domainübergreifenden Datenaustausch, b.) zum plattformübergreifenden Datenaustausch, c.)zum applikationsübergreifenden Datenaustausch und last but not least zum definieren eigener Dokumenttypen im weitesten Sinne.
Das ist erstens schön, zweitens kommt es flash sehr entgegen und drittens beseitigt es jene bescheuerte Barriere in Flash welche besagt das in einem Flashfilm nur Inhalte und andere swfs aus der selben domain zum Zuge kommen (liess sich ja schon immer umgehen aber was für ein krampf).

was heisst das nun für deine Frage?

erstens du brauchst nicht unbedingt eine datenbank, und zweitens die Art und Weise des Dateien speicherns ist voll und ganz deiner Kreativität überlassen.

Tolle ANtwort gell? Aber mal im Ernst, ich kenn kaum Leute die XML komplett gefressen haben, da is alles noch im wachsen und gedeihen, und selbst die Entwickler von XML haben das ja auch extra so angelegt.

Einer meiner Bekannten (PHP-Outlaw) macht sichs einfach, sucht in seinem xml document(selbe domain) nach den entsprechenden tags per php ,liest zeilen aus, vergleicht, löscht identifizierte Zeile und ersetzt sie durch neue Daten und speichert dokument wieder per php, und seine Applikationen includieren das relo<adete xml dokument, is irgendwie russentechnik funzt aber.

Eleganter und faszinierender sind die erweiterten <A Href <a/& Funtionen von xml, welche es dir zum Beispiel ermöglichen auf deiner Domain ein xml Dokment zu speichern, welches eine Dokumentklasse definiert, die du als node und subnodes in flash includierst.
Also, Flash lädt die xml datei die definiert z.b.doctype User (name1+);(um gottes willen nicht auf syntax achten), was heisst das die node user subnodes hat un zwar soviele wies names gibt.--
wo kommen die names nun her? entweder definierst du sie simpel im xml document (obige php methode würde da greifen), oder du holst sie per erweitertem link in deine datei. Du könntest sie aus einer datei auslesen (auch auf anderen domains), du könntest aber auch xml mit sql verknüpfen und per datenbankabfrage egal woher holen, somit der dokumentklasse bereitstellen, und somit flash übergeben - server respond time wird hier auf einmal ganz wichtig, z.b. für xml preloader musst du dann selben dirty trick machen wie ihn mir geist bezüglich verschachtelter preloader beigebracht hat.

Das sind meine nur grundlegenden Kenntnisse der Sache, das einzige KOnstrukt, in dem ich die Sachen angewendet habe, war eine Art WAN Realtime-Kassensturz System, bei dem mehrere, verteilte Registraturen (aber keine oldschool-kassen sondern compis mit scanner) vom cheffe überwacht wurden..

Kasse per sql an datenbank artikel/menge/Uhrzeit/Bearbeiter; xml auf der domain wird z.B. vom Lager abgefragt, fetcht die Daten setzt sie per php über anderes xml auf der lager domain in korrelation mit lagerbeständen usw..... mein schmaler part war nur das flash frontend wo cheffe mit animierten balken gucken konnte wer wieviel wann von was verkauft, und wie der fluss vom lager läuft.

flash integriert die xml datei, xml definiert datenfelder als doctype und pcdata fliesst ausm link zu ner anderen xml/php datei auf ner entfernten domain welche wiederum die dortige datenbank ausquetscht und die daten in form bringt.

das alles war irgendwie haarig und hat auch nur irgendwie geklappt, und das mit dem realtime war auch so ne Sache, und seitdem, obwohl ich mir jeden winter schwöre " aber diesmal xml..", hab ich so ziemlich die finger davon gelasssen, bin aber nach wie vor brennend interessiert, u.a. an deinen Fortschritten.

Ich kann mal kramen, das frontend hab ich auf jeden fall, die xml mit dem enfernten datenbank+php link+ müsste auch noch da sein, könnte ich dir aber nur per e-mail weil sonst ärger mit den anderen damals beteiligten usw..

So im Bewusstsein dir nicht geholfen zu haben gehe ich jetzt kippen holen, vielleicht hast du ja bis dato geantwortet und vielleicht präzisiert...

B:smoke:
 
Bhuua !!! Was für eine Antwort! Hab's jetzt zweimal gelesen. Abenteuerliche Geschichte ! Mal schauen:

aus deiner antwort kann ich (u.a.:) ) entnehmen, dass ich keine db bräuchte für mein forum. Das wär fürs erste ziemlich angenehm. Ich arbeite gern in teilschritten;) .

Bsp. ein user verfasst einen thread drückt submit, welche eine funktion auslöst, in der irgendwo : meinXML.send(meinColdFusionScript) steht und das ColdFusionScript speichert den Thread im XML-File ab und that's it ?

oder hab ich da was vergessen.

Ach ja: thx für deine antwort:)
 
ahhhhh...nikotin, zisch....becks,,,,,

so, da bin ich wieder

also erstmal, was hats für vorteile sowas in tricky xml zu machen anstatt in oldschool flash-php-sql and reverse?

-deine Daten können sonstwo liegen (in deinem Fall na toll,,)
-die Datenstruktur (ein thread zB is ja das ideale Opfer für doctype)
-die Auslagerung der Logik (na ja)
-Ruhm und Ehre

da ich vermute das letzterer Punkt dich dabei am meissten interessiert
müssen wir hier wohl weitermachen..

Ein erstes Problem is, das ich CF nicht benutze und nur oberflächlich kenne, ein zweites das ich im <WUst meiner Dateien dei blöde php nicht finden kann, die die weiter oben beschriebene auslese, überschreibe, speicher in xml format funktion enthält..nun gut.

Ich vermute du bist in der Lage das selber zu machen, und so kann ich dir antworten das du ganz recht hast mit deinem plan, insofern da cf nicht vor is, wovon ich keine ahnung habe.

wir hams damals jedenfalls mit get url send.php gemacht, diese schrieb direkt per sql in die datenbank, loadxml band eine get.php
über das erweiterte link tag von xml ein, die xml datei strukturierte so die daten und flash bekam sie in der node subnode form, was ja prinzipiell an alte BASIC Zeiten bezüglich mehrdimensionaler arrays erinnert, nur das damals die Struktur im Kopf sein musste, und sie jetzt "wohlgeformt" (DC3 Slang, ha ha) vorliegt.

Gegenfragen:
Meinst du mit xml wirds schneller?
Hast du bereits nen CF script was xml problemlos schreibt?
Hast du dir schon Gedanken über die Doctypes / Datatypes gemacht?

so long in echtem Interesse..;)
 
1. das xml-objekt wurde in flash mx mit c++ programmiert (in flash 5 wars noch in as geschrieben). das resultat muss enorm sein, hier ein testergebnis (ohne gewähr)

Datensätze: Ladezeit Flash 5 Ladezeit Flash MX
10______198 ms ___________ 25 ms
100______2003 ms___________ 27 ms
2000______Crash ___________198 ms

2. ne aber ich werd's wohl hinkriegen.

3. ...was für Types ?

c u 2 moro
muss schlafen gehen.:-(

Cheers ! Vielleicht holst du dir ja auch noch 'paar stunden schlaf ? :)
 
Zuletzt bearbeitet:
*Exkurs doctypes:(its yourself who defines the tags)

interpretor:
PHP:
<!-- Thread-DTD Version 1 -->
<!ELEMENT user+      (name, level, 
                      stimmen, icon) >
<!ELEMENT post (#PCDATA)>
<!ELEMENT homepage   (#PCDATA)>
<!ELEMENT e-mail      (#PCDATA)> 
<!ELEMENT icq (#PCDATA)>

------------------------------------------------

source:
PHP:
<?xml version="1.0"?>
<!DOCTYPE thread subsystem "thread.dtd">
<thread>
 <user>
  <name>Basileus</name>
  <level>7<level>
   <stimmen>
      2 (subnodes..evtl.)
   </stimmen>
  <icon>www.weißauchnich.de/forum/pics/Basileus.jpg</icon>
 </user>
 <post>
das is mein post in deinem tutorial
</post>
<email> xxx@web.de </email>
<homepage>www.fuerteaventura.de</homepage>
<icq>brauch ich nich</icq>
</thread>


;)

Nützlicher Link zum Thema:
http://irb-www.informatik.uni-dortmund.de/~sm/aw/xml/msie/
 
Zuletzt bearbeitet:
ich vergaß:

in flash ist <thread> dann die node, alles andere sind subnodes
bei user hat die subnode weitere subnodes, und wenn thread mehrere user kennt (kennzeichen + hinter user) wirds irgendwie so kompliziert, das ich zumindest heute nacht meine eigenen scripte nicht mehr verstehen kann...:-(
 
Zuletzt bearbeitet:
hey, cooler link. thx. werd ich mir gut anschauen.

also in meinem forum soll jeder thread ein node sein, is klar. jeder thread hat 4 subnodes (name,subject,date,content).

bin aber noch am modellieren.

:) c u
 
hab mich inzwischen bisschen schlau gemacht über CF, WAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHNSINNSPREIS !!!!!!

- Was muss man denn so alles auf seinen Server installieren um so ein CF Script laufen zu lassen? Die Möglichkeiten klingen ja echt verführerisch...

Also ich könnt mir das auf dein projekt bezogen folgendermassen vorstellen (ähm, räusper, die syntax is o.s.ä.):

"name des thread".xml, mit newThread.php, und appendThread.php
"name des users".xml , mit newUser.php, showUser.php, editUser.php
sowie Forum.xml mit populateForum.php und populateThread.php (je nachdem), ausserdem login.php

Forum.xml:

&threads+ = getURL(populateForum.php);
<Forum>
!Element [&thread?+]
</Forum>

"Name des Thread".xml:

<thread>
!Element (post,reply+)
<post>
!Element (topic, poster, text);
<topic> hier das topic </topic>
<poster> hier der username </poster>
<text> hier die forumsfrage </text>
</post>
<reply>
!Element (re-poster+, answer+);
<re-poster> username des antwortenden </re-poster>
<answer> hier die antwort </answer>
</reply>
</thread>

"Name des Users".xml

<user>
!Element (name, password);
<name> hier der name </name>
<password> streng geheim </password>
</user>

populateForum.php:
parst das directory nach xml dateien mit "thread" vorm punkt, echoet
halt thread1 = wie mach ich nen preloader, thread2 =....
die dataglue-stelle mit dem &link in der forum xml musst du nachschlagen keine Ahnung mit dem Syntax, geht aber...

login.php:
von Flash aufzurufen wenn der user sich einloggt-
parst halt nach xml dateien mit "user" vorm punkt und lädt die nodes in flash zwecks passwort-Überprüfung (sicherheit=0), findet er die datei nich gibts den user nicht.

newUser.php, showUser.php, editUser.php:
wie die namen schon sagen schreibt php entweder von flash übergebene daten als "eingegebener username".xml, liest und editiert sie (erst nötig wenn du zB Level wie in diesem Forum realisieren willst).
Die Lese Funktionen sind ja klar, die newUser funzt wie wenn du in php daten als .txt aufm server speicherst, nur mit xml als endung, php muss dabei natürlich die formatierung in ner logischen schleife leisten, viel spass.
Bei edit ham wir einfach überschrieben.

newThread.php und appendThread.php :
wie oben, newthread schreibt eine xml datei mit dem in Flash eingegebenen topicnamen als titel, und formatiert die übergebenen variablen gemäss unserer spezifikation in die tags.
appendThread is schon schwieriger, du musst den einstigspunkt finden indem du den text der xml datei insgesamt parselst, und an diesem punkt die von flash übergebenen variablen username und answer appendest..und speicherst.

Der Flash Film kennt nur wenig Logik ( ;-) ), login is oben beschrieben, wir legen username und meinetwegen password im _level0 ab, der film springt zur Forumsansicht und erschafft das xml objekt forum.xml, welches seine daten von der populateForum.php erhält.
In Flash erhalten wir so mothernode Forum mit subnodes "Forum"add n
welche wir auf variablen verteilen, die wiederum grundlage von dynamischen textfeldern sind die in buttons stecken die wir dynamisch nach anzahl der subnodes erstellen (scroller und mutter-mc nicht vergessen) und die die as
_root.selected = "subnode-textinhalt des buttons) ;gotoFrame(ThreadView) enthalten.
Im entsprechenden Frame machen wir dann ein neues xml objekt Thread, laden das thread mit namen aus der subnode variable, verteilen wieder die variablen, und überlegen uns wie wir diese am besten in nem dicken unterteilten Scrollfeld anzeigen.
Knöppe gibts da noch als da wären : zurück(gotoFrame(ForumsView), antworten(getURL appendThread.php "POST"(username, answer), und das wars schon, ach ja im ersten Frame halt newThread mit getURL newThread.php "POST"(username, post, topic),

und dann hätten wir auch erst die grundlage eines primitiv XML/Flash Forums mit nur einem Forum und einer echten Abhängigkeit von der Server RespondTime....und viele neue Problem..und Ruhm..und Ehre
;-)
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück