Thursday, July 29th 2010, 1:25pm UTC+2

You are not logged in.

  • Login
  • Register

[Flash & PHP] XML Shoutbox

undefined

Super Moderator

Posts: 4,248

Location: Germany

1

Friday, March 28th 2003, 9:34pm

XML Shoutbox

Flashbattle FlashMX PHP XML Shoutbox Tutorial

Heute wollen wir uns einmal einer Shoutbox in Flash zuwenden. Auf das Styling habe ich verzichtet da es ja Hauptsächlich auf die Funktionen ankommt und Geschmäcker bekanntlich nie gleich sind.

In diesem Tutorial schreiben wir mit PHP in ein Textdokument und Lesen ebenfalls mit PHP die Daten aus dem Textdokument und Konvertieren sie nach XML damit wir eine bessere Schnittstelle zu Flash besitzen. In Flash nehmen wir die Daten entgegen und Packen sie zu erst einmal in ein Array. Mir ist klar das bei einer hohen Eintrags zahl der Speicher von Flash überlastet wird. Dies lässt sich aber mit einer Erweiterung der Abfrage unter PHP leicht verbessern. Das soll uns jetzt aber nicht weiter Interessieren da es sich ja um ein Tutorial handelt und nicht um ein fertiges Script. Unter anderem habe ich auf eine Kontrollstruktur bei der Eingabe in Flash ebenfalls verzichtet. Nun wollen wir aber zum eigentlichen Kern kommen.
In Flash erstellen wir wie üblich zuerst einen Preloader und im zweiten Schritt eine Eingabemaske oder auch Formularfelder genannt. Genauer dargestellt ein Scene eine Ebene mit 2 Bildern für den Preloader. Bild 3 Datenabfrage Bild 4 Anzeige der Daten und Bild 5 für das Eingabeformular.
Die eingabe Felder Definieren wir wiefolgt.

Eingabefeld für Name = name
Eingabefeld für die E-Mail Adresse = email
Eingabefeld für den Eintrag = eintrag

Bei der Ausgabe oder Anzeige verwenden wir _root.eintrage wobei es sich hier um das Array der XML abfrage handelt. Was eine leichte HTML Formatierung aufweist.

Zusätzlich gibt es zwei Buttons einmal für Senden und einmal für den Bildsprung zur Eingabe Maske. Nach dem Datentransfer geht es wieder zur Anzeige zurück.

Nun kommen wir zu den Scripten. Wobei ich auf die PHP Scripte nicht weiter eingehen werde. Dafür steht euch die Foren Kategorie PHP zur Verfügung.

Mit einem

ActionScript-Quelltext

1
2
3
4
5
6
7
on (release) {
    var sende "http://kletter.privat/Flashbattle/gastbuch/functions.php?einfuegen=1&email="+_root.email+"&name="+_root.name+"&txt="+_root.eintrag;
    loadVariables(sende"""POST");
    this.onData = function() {
        prevFrame();
    };
}

geben wir die Daten an das PHP Script weiter.

Im PHP Scripts selbst nehmen wir sie wie folgt entgegen und Schreiben in die Textdatei. Die Textdatei muß auf Chmod 0666 gesetzt sein (also unter Linux Schreibrechte besitzen).

PHP Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//
function eintragen($HTTP_GET_VARS) {
 if(empty($HTTP_GET_VARS[email])) { return false; }
$editeintrag = (date('d.m.Y-H.i.s')."#".$HTTP_GET_VARS['email']."#".$HTTP_GET_VARS['name']."#".$HTTP_GET_VARS['txt']."\n");
    $gbfile "gbtxt.txt";
 if(file_exists($gbfile)) {
    $fh fopen($gbfile'a+');
    fwrite($fh$editeintrag);
    fclose($fh);
  echo '&flbmsg=Danke fuer deinen Eintrag!';
 } else {
  echo '&flbmsg=Error';
  return false;
 }
}

PHP Source code

1
2
3
4
5
//
if ($HTTP_GET_VARS[einfuegen]) {
$eingabe eintragen($HTTP_GET_VARS);
return $eingabe;
}


Wie diese Formatierte Eingabe aussieht könnt ihr hier sehen.

Source code

1
2
3
4
5
27.03.2003-16.51.48#Name1#email@email.de#Flashbattle Tutorual Shoutbox
27.03.2003-16.52.01#Name2#email@email.de#Flashbattle Tutorual Shoutbox
27.03.2003-16.52.32#Name3#email@email.com#Flashbattle Tutorual Shoutbox
27.03.2003-16.52.52#Name4#email@email.org#Flashbattle Tutorual Shoutbox
27.03.2003-16.53.16#Name5#email@email.com#Flashbattle Tutorual Shoutbox

nun kommen wir zur Abfrage und oder Ausgabe gehen.
In Flash verwenden wir eine XML abfrage innerhalb einer Funktion in der wir ein Array eintrage erstellen! In diesem Array habe ich einige HTML Tags eingefügt. Und gebe sie so Fromatiert auf _level0 weiter.

ActionScript-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function ladeXML() {
    datenXML = new XML();
    datenXML.ignoreWhite true;
    datenXML.load("http://kletter.privat/Flashbattle/gastbuch/functions.php?lesen=leseconfig&richtung=0&kurzform=80&t="+getTime());
    datenXML.onLoad = function(status) {
        if (datenXML.status == 0) {
            inhalte datenXML.firstChild.childNodes;
            _root.eintrage = new Array();
            1;
            for (var 0i<inhalte.lengthi++) {
_root.eintrage.push("<b>Eintrag </b>"+[j++]+"<br>"+inhalte[i].attributes.flbname+"<br>
"+inhalte[i].attributes.flbemail+"<br>"+inhalte[i].attributes.flbdate+"<br>
"+inhalte[i].firstChild.nodeValue);
            }
            nextFrame();
        } else {
            trace("ERROR = " add datenXML.status);
        }
        //trace(eintrage.length);
        delete datenXML;
    };
}

ActionScript-Quelltext

1
ladeXML();

Im PHP Script öffnen wir das Textdokument und packen es in ein Array drehen es um und entfernen die Routen in dem wir es einem zweiten Array (eintrag) zuordnen danach erstellen wir das XML Document und geben den Knoten eintrag über eine for Schleife aus.

PHP Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function ausgeben($zeigen$richtung$kurzform) {
  if(empty($zeigen)) { echo '&flbmsg=Error'; return false; }
  $liste = array();
  $eintrag = array();
     $gbfile = ("gbtxt.txt");
 if(file_exists($gbfile)) {
   $file file($gbfile);
   for($x=0;$x<count($file);$x++){
    array_push($liste, ($file[$x]));
  }
  if($richtung != 1) {
   $liste array_reverse($liste);
  }
   for($x=0;$x<count($liste);$x++){
     array_push($eintragsplit("#",$liste[$x]));
  }

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
echo "<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<!DOCTYPE gbbattle [
<!ELEMENT eintrag (#PCDATA)>
<!ATTLIST eintrag 
   flbid      CDATA  #REQUIRED
   flbdat    CDATA  #REQUIRED
   flbname    CDATA  #REQUIRED
   flbeintrag    CDATA  #REQUIRED
   flbemail   CDATA  #REQUIRED
>
<!ENTITY lt     "<">
<!ENTITY gt     ">">
<!ENTITY amp    "&">
<!ENTITY apos   "'">
<!ENTITY quot   """>
]> 
 <gbbattle>";
 for($v = 1;$v<count($eintrag);$v++) {
  echo "<eintrag flbname="".$eintrag[$v][1]."" flbemail="".$eintrag[$v][2]."" flbdate="".zeitformat($eintrag[$v][0])."">".$eintrag[$v][3]."</eintrag>";
}
echo "</gbbattle>";
 }

PHP Source code

1
2
3
4
5
}
//
if ($_GET[lesen] =='leseconfig') {
 echo ausgeben($_GET[lesen],$_GET[richtung],$_GET[kurzform]);
}


Das Wahr es auch schon im großen und ganzen.

Gruß Jürgen
Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
PHP Katepart - Speichenrechner - .htpasswd - RPM XDG Tool - Kcmnvview - QTidy

This post has been edited 3 times, last edit by "undefined" (Mar 30th 2003, 3:55pm)

  • Go to the top of the page

undefined

Super Moderator

Posts: 4,248

Location: Germany

2

Sunday, March 30th 2003, 3:55pm

Einige kleine Änderungen vorgenommen ;) Flash hat ein Cache Problem mit dem Aktualisieren der Daten. Der Controller dafür ist nicht eingebaut. Diese würdevolle Aufgabe überlasse ich euch :D Also nach dem Eintrag den Browsercache leeren und Aktualisieren! Hier der Download
undefined has attached the following file:
  • Xmlgb.zip (69.69 kB - 222 times downloaded - Last download: Nov 26th 2009, 12:00pm)
Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
PHP Katepart - Speichenrechner - .htpasswd - RPM XDG Tool - Kcmnvview - QTidy
  • Go to the top of the page