Thomas Meinike: Flash-Daten nach PHP und zurueck

Hallo,

ich bin gerade mit der Kopplung von Flash-Filmen mit PHP/MySQL befasst. Dabei interessiert micht eigentlich nur der Datenaustausch an sich. Unter Flash MX ist es mir bereits gelungen, per GET-Methode Eingabedaten aus einem Flash-Film zu lesen, via PHP eine MySQL-Abfrage zu machen und das Ergebnis wieder an den Film zu uebergeben und anzuzeigen, siehe: http://ktd.et.fh-merseburg.de/~tm/flashtest/test1.htm.

Die Flash-Felder haben die Var-Bezeichner eingabe bzw. ausgabe und die GET-Aktion erfolgt ueber den Suchen-Button so:

on (release) {
  this.loadVariables("test1.php?eingabe="+eingabe);
}

Das klappt alles wie erwartet.
Da man mit GET ggf. nicht sehr weit kommt hinsichtlich der uebertragbaren Datenmenge suche ich nun das Aequivalent mit POST. Probiert habe ich schon Sachen wie

this.loadVariables("test1.php",0,"POST");
(0 = Ebene 0)

wobei aber nichts im PHP-Script ankommt (wobei POST-Vars statt GET-Vars abgefragt werden).

Woher weiß Flash ueberhaupt, _was_ zu posten ist (bei GET-URLs ist das wiederum klar)? In einem HTML-Formular gibt es ja einen FORM-Container, der alle Daten erfasst und Feldnamen, die im Script ausgewertet werden koennen.

MfG, Thomas

  1. Hallo!

    on (release) {
      this.loadVariables("test1.php?eingabe="+eingabe);
    }

    Hast Du es mal mit getURL() versucht?

    getURL("http://www.domain.de/verzeichnis/datei.php", "_self", "POST");

    Habe ich gefunden, in der ActionScript-Referenz zu Flash5.

    MfG, André Laugks
    L-Andre @ gmx.de

    1. Hallo,

      Hast Du es mal mit getURL() versucht?

      getURL("http://www.domain.de/verzeichnis/datei.php", "_self", "POST");

      Ja, habe ich gemacht. Das Script bekommt die Daten auch uebergeben und gibt daraufhin das Ergebnis _in einem neuen Fenster_ außerhalb des Flash-Filmes aus.

      In der Hilfe steht auch:
      "getURL gibt alle Informationen an ein Browserfenster zurück, nicht an den Flash Player".

      Alles, was ich mit GET anstelle, funktioniert (ohne Methode wird GET angenommen):
        this.loadVariables("test1.php?eingabe="+eingabe);
      ebenso wie mit expliziter Ebenen- und Methodenamgabe:
        this.loadVariables("test1.php?eingabe="+eingabe,0,"GET");
      oder ohne "-Zeichen (lt. Hilfe ebenfalls erlaubt):
        this.loadVariables("test1.php?eingabe="+eingabe,0,GET);

      Dagegen uebernimmt

      this.loadVariables("test1.php",0,"POST");

      offenbar nicht den Eingabetext, aber immerhin kommt die folgerichtige Ausgabe "Kein Eintrag zum Suchtext in der Datenbank vorhanden." zurueck, also das PHP-Script wird zumindest komplett ausgefuehrt.

      MfG, Thomas

      1. [Nachtrag]

        Ja, habe ich gemacht. Das Script bekommt die Daten auch uebergeben und gibt daraufhin das Ergebnis _in einem neuen Fenster_ außerhalb des Flash-Filmes aus.

        ... sollte [wegen "_self"] _im aktuellen Fenster_ ... lauten.

        MfG, Thomas

  2. Hallo,

    Da man mit GET ggf. nicht sehr weit kommt hinsichtlich der uebertragbaren Datenmenge suche ich nun das Aequivalent mit POST. Probiert habe ich schon Sachen wie

    this.loadVariables("test1.php",0,"POST");
    (0 = Ebene 0)

    wobei aber nichts im PHP-Script ankommt ...

    Nach der Lektuere widerspruechlicher Informationen fand ich noch http://actionscript-toolbox.com/samplephpmysql.php, wo die von mir versuchte Formulierung ohne die Null auftaucht:

    this.loadVariables("test1.php","POST");

    und das funktioniert wie gewuenscht.

    Seltsam, dass dieses entscheidene Detail weder der Flash MX-Hilfe, noch diesem Buch http://www.mut.com/shop/sh-info.asp?ID=3827262852 zu entlocken war. Die beiden letzen Parameter sind optional, der vorletzte ist wohl optionaler ...
    Bei den GET-Tests hat es mit "0" keine Probleme gegeben und es gibt auch nur eine Ebene.

    Naja, man lernt nur dazu ;-).

    MfG, Thomas