PHP -> Flash mit LoadVariables

danielerne

Mitglied
Hallo zusammen


Habe da ein Problem, dass Flash meine Daten von MySQL mittels PHP nicht ausliest.
In der Datenbank sind Benutzerdaten mit Nummern versehen und jetzt möchte ich diese in Flash anzeigen lassen. In Flash kann man eine Nummer eingeben und diese wird an das PHP Skript gesendet. Doch leider funktioniert das ganze nicht, in den Textboxen erscheint nichts.

Die Variable Nummer habe ich erstellt.
Die Textboxen sind mit Variablen versehen.

LoadVariables:

PHP:
onClipEvent (load) {
	loadVariables("read.php?"Nummer, this, "POST");	
	}


read.php

PHP:
<?php
ob_start();
//Administration:

//Konfiguration lesen, Datenbank laden:
include 'skripte/skripte.php';
$config=readconfig();
opendb();

if ($HTTP_POST_VARS[Nummer]){
  $nr=$HTTP_POST_VARS[Nummer];
  $anfrage="SELECT * FROM mitglieder WHERE Nr='$nr'";
  $such=mysql_query($anfrage);
  $ergebnis=mysql_fetch_assoc($such);
  if ($ergebnis){
    $inhalte=Array( 0=>'Name', 1=>'Vorname', 2=>'Adresse', 3=>'PLZ', 4=>'Ort', 5=>'Email', 6=>'Aktiv', 7=>'Land');
    foreach ($inhalte as $value){
      echo "&$value = ".$ergebnis[$value]."\r\n";
    }
  }
  else {
    echo "null";
  }
}
mysql_close ($db);
ob_end_flush();
?>

Was ist daran Falsch? Müssen die Variablennamen in Flash nochmals definiert werden?
Oder liegt es daran, dass die Textboxen gleich nach dem laden erscheinen, obwohl das PHP-Skript noch nicht bereit war?

Hm, wäre sehr dankbar für die Hilfe.

Gruss

Dani
 
Hi,

1. loadVariables ist veraltet. Verwende lieber das LoadVars-Objekt, welches Dir zusätzliche Möglichkeiten bietet, den Empfang der Daten zu überwachen.

2. Diese Syntax macht keinen Sinn:
Code:
loadVariables("read.php?"Nummer, this, "POST");
Die Zeile dürfte sogar einen Syntaxfehler ausgeben, da die Strings nicht korrekt verkettet sind. Richtig im Sinne von "korrekte Syntax" wäre so etwas:
Code:
loadVariables("read.php?Nummer=" + Nummer, this, "POST");

3. Auch im PHP-Code haben sich Fehler eingeschlichen, z.B. hier:
PHP:
$HTTP_POST_VARS[Nummer];
PHP sucht in diesem Fall nach einer Konstanten mit der Bezeichnung >>Nummer<<. Du willst aber den Wert mit dem Schlüssel "Nummer" auslesen, daher musst Du ihn in Anführungszeichen setzen:
PHP:
$HTTP_POST_VARS["Nummer"]

4. Dein Script gibt nun verschiedene Variablen-Wert-Paare aus. Du hast aber nicht erwähnt, wie Du diese Werte in Flash anzeigen lassen willst: Hast Du auf dem entsprechenden MovieClip Textfelder bzw. Textfeldvariablen mit den jeweiligen Variablenbezeichnern?

5. Idealerweise solltest Du AS-Code nicht auf MovieClip-Instanzen setzen, sondern direkt auf die Zeitleiste (es gibt z.B. in einigen Browserversionen einen Bug, der dazu führt, dass "on(load)" bei einem Seitenreload nicht aufgerufen wird).

Gruß
.
 
Hallo

Herzlichen Dank für Deine schnelle Antwort!

1. Ok, LoadVars kenne ich noch nicht, muss mich darüber erst schlau machen.

2. Habe ich jetzt einmal geändert, Flash hat jedoch vorhin keinen Syntaxfehler ausgegeben. ;)

3. Das PHP Skript habe ich auch korrigiert.

4. Ja, habe auf dem Movieclip Dynamische Textfelder mit den Variablenwerten: Name, Vorname, Ort, PLZ, Adresse, Land, Email, Aktiv.

5. Ok, werde ich machen.

Hm, habe den 2. und 3. Schritt kurz gemacht. Jedoch bleiben die Textfelder noch immer leer.
Benötigt man noch ein Preloader?

Danke im voraus

Gruss
 
Hi,

poste bitte
  1. Deine .fla, damit ich die Filmstruktur auf Fehler untersuchen kann, sowie

  2. die Ausgabe des PHP-Scripts (sprich: was es ausgibt, wenn Du eine gültige Nummer per $_POST übergibst.

Gruß
.
 
Hallo

FLA ist im Anhang. Habe es jetzt einmal mit LoadVars ausprobiert. In den Textfelder steht einfach dann nur undefined. Bin auch nicht sicher, ob ich das mit den Variablen richtig gemacht habe. Kenne mich in PHP nicht besonders gut aus.

Das PHP-Skript hat ein Kollege erstellt. Es sollte folgendes zurückgeben:

&Name = Gjovig
&Vorname = Bruce
&Adresse = 4200 James Ray Drive
&PLZ = 58203
&Ort = Grand Forks
&Email = gjovig.bruce@muster.ch
&Aktiv = 1
&Land = CH

Danke vielmals!

Gruss

Dani
 

Anhänge

Hi,

Sorry, die Frage ist irgendwie untergegangen. ;)

Folgendes:
Code:
lv.onLoad = function() {
	txt_Name	= $Name;
	txt_Vorname	= $Vorname;
	txt_Adresse	= $Adresse;
	txt_Ort		= $Ort;
	txt_PLZ		= $PLZ;
	txt_Land	= $Land;
	txt_Aktiv	= $Aktiv;
	txt_Email	= $Email;
}
Ist auch syntaktisch falsch. Variablen werden in Flash nicht mit dem Zeichen "$" markiert. Ausserdem musst Du auf die Variablen als Member des LoadVars-Objekts zugreifen:
Code:
lv.onLoad = function() {
	txt_Name = this.Name;
	txt_Vorname = this.Vorname;
	txt_Adresse = this.Adresse;
	txt_Ort = this.Ort;
	txt_PLZ = this.PLZ;
	txt_Land = this.Land;
	txt_Aktiv = this.Aktiv;
	txt_Email = this.Email;
}

Gruß
.
 
Hallo

Es funktioniert leider immer noch nicht.
Habe den Code überarbeitet, aber er meldet mir das er die Datei nicht öffnen kann. Kann Flash eine Datei öffnen, die mit einem Schutz versehen ist?

Code:
// read.php auslesen

var lv:LoadVars = new LoadVars();
lv.load("read.php?Nummer=" + Nummer, "_blank" , "POST");

// Wenn die Daten geladen sind, sollen die Daten 
// auf die Textfelder importiert werden

lv.onLoad = function(success:Boolean) {
    if (success) {
    status 	=	"Daten geladen";
	txt_Name	= this.Name;
	txt_Vorname	= this.Vorname;
	txt_Adresse	= this.Adresse;
	txt_Ort		= this.Ort;
	txt_PLZ		= this.PLZ;
	txt_Land	= this.Land;
	txt_Aktiv	= this.Aktiv;
	txt_Email	= this.Email;
    } else {
    status	=	"Daten konnten nicht geladen werden";
    }
};

Der Benutzername und das Passwort ist im meinem Code schon richtig geschrieben. Aus Sicherheitsgründen.. ;)

Danke im voraus

Gruss
 
Zuletzt bearbeitet:
Hi,

wenn Du mit einem LoadVars-Objekt auf fremde Server zugreifen willst, musst Du auf diesem Server eine Richtliniendatei (crossdomain.xml) anlegen, die den entfernten Zugriff erlaubt. Ansonsten wird der Zugriff durch die Sicherheitsbeschränkungen des Flashplayers unterbunden.

Ein "Workaround" für den Fall, dass der externe Server nicht Deiner ist (vorausgesetzt, Du hast überhaupt die Rechte, die externe Quelle anzuzapfen), wäre, mit dem LoadVars-Objekt ein Script auf Deinem eigenen Server zu starten, welches die externe Seite abfragt und das Ergebnis an Flash zurück liefert.

Gruß
.
 
Hallo

Danke für die Info.
Doch leider, funktioniert es immer noch nicht. :confused:
Die .htaccess Datei wurde entfernt. Die Flashdatei liegt am gleichen Ort wie die read.php und er spuckt immer noch keine Daten raus. Woran kann es noch liegen?

Habe es mit einem relativen sowie auch absoluten Pfad ausprobiert.

Code:
var lv:LoadVars = new LoadVars();
lv.load("read.php?Nummer=" + Nummer , "_blank","POST");

// Wenn die Daten geladen sind, sollen die Daten 
// auf die Textfelder importiert werden

lv.onLoad = function(success:Boolean) {
    if (success) {
    status 	=	"Daten geladen";
	txt_Name	= this.Name;
	txt_Vorname	= this.Vorname;
	txt_Adresse	= this.Adresse;
	txt_Ort		= this.Ort;
	txt_PLZ		= this.PLZ;
	txt_Land	= this.Land;
	txt_Aktiv	= this.Aktiv;
	txt_Email	= this.Email;
    } else {
    status	=	"Daten konnten nicht geladen werden";
    };
};

Danke und Gruss
 
Zuletzt bearbeitet:
Zurück