Flash & PHP & MySQL: Daten laden und anzeigen

stuffjm

Mitglied
Hallo miteinander,
Ich hab ein kleines Problem in Flash. Dort versuch ich mittels Actionsscript 3 Daten aus einer Datenbank auszulesen und anzuzeigen (Ziel ist ein Menü, dass sich die Daten aus einer Tabelle holt). Es klappt alles wunderbar, nur bei der Ausgabe erscheint kein Text im Flash Player. Fehlermeldungen gibt es aber keine, die Daten können geladen werden.
Ich hab schon "vieles" ausprobiert, komme aber zu keinem Ergebnis :( Gibt es jemanden der eine Idee hat woran das liegen könnte?
Vielen Dank;

Der Actionscript Code:
Code:
function readData():void {
	var myLoader:URLLoader = new URLLoader();
	var myRequest:URLRequest = new URLRequest("/php/mainmenu.php");
	myLoader.dataFormat=URLLoaderDataFormat.VARIABLES;
	myLoader.load(myRequest);
	myLoader.addEventListener(Event.COMPLETE,completeHandler);
	myLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR,securityErrorHandler);
	myLoader.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
}
function completeHandler(e:Event):void {
	var anzData:uint=uint(e.target.data.counter);
	for (var i:uint = 0; i<anzData; i++) {
		var id:uint=e.target.data["id"+i];
		var menutitle:String = e.target.data["menutitle"+i];
		var menutitle_alt:String = e.target.data["menutitle_alt"+i];
		var menutype:String = e.target.data["menutype"+i];
		var menutarget:uint = e.target.data["menutarget"+i];
		var menuorder:uint = e.target.data["menuorder"+i];
		flashData_arr.push({id:id,menutitle:menutitle, menutitle_alt:menutitle_alt, menutype:menutype, menutarget:menutarget, menuorder:menuorder});
	}
	renderData();
}
function securityErrorHandler(e:SecurityErrorEvent):void {
	status_txt.text="Fehler beim Übertragen der Daten";
}
function ioErrorHandler(e:IOErrorEvent):void {
	status_txt.text="Fehler beim Übertragen der Daten";
}
function renderData():void {
	ausgabe_txt.htmlText="";
	var outputStr:String="";
	for (var i:uint = 0; i<flashData_arr.length; i++) {
		outputStr+=flashData_arr[i].menutitle;
		outputStr+=flashData_arr[i].menutitle_alt;
		outputStr+=flashData_arr[i].menutype;
		outputStr+=flashData_arr[i].menutarget;
	}
	ausgabe_txt.htmlText=outputStr;
}

var flashData_arr:Array = new Array();
readData();

Die Daten werden geladen (readData) in einem Array gespeichert (flashData_arr) und sollten dann provisorisch in einem auf der Bühne platzierten Textfeld ausgegeben werden ausgabe_txt.



Ausgabe PHP Code::
Code:
id0=1&menutitle0=Filme&menutitle_alt0=films&menutype0=mainmenu&menutarget0=1&menuorder0=1&counter=1

PHP Code:
PHP:
<?php
	include 'inc/dbdata.inc.php';
	function encode($str) {
		$str = urlencode($str);
		return $str;
	}
		
	$conn = mysql_connect($server,$benutzer,$kennwort);	
	$db = "affilm_db";
	$db_selected = mysql_select_db($db, $conn);
	if (!db_selected){
		die("Datenbank konnte nicht ausgewählt werden.");
	}
	if (!conn) {
		die("Verbindung konnte nicht hergestellt werden.");
	}
	
	$table = "menu";
	$sql_query = "SELECT * FROM $table";
	$result=mysql_query($sql_query, $conn);
	if(!result) {
		die("Ungültige Abfrage");
	}
	
	$counter = 0;
	while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){
		$id = encode($row["id"]);
		$menutitle = encode($row["menutitle"]);
		$menutitle_alt = encode($row["menutitle_alt"]);
		$menutype = encode($row["menutype"]);
		$menutarget = encode($row["menutarget"]);
		$menuorder = encode($row["menuorder"]);
		// Output
		if($counter == 0) {
			$output = "id".$counter."=".$id;
		} else {
			$output.= '&id'.$counter.'='.$id;
		}
		$output.= '&menutitle'.$counter.'='."$menutitle";
		$output.= '&menutitle_alt'.$counter.'='."$menutitle_alt";
		$output.= '&menutype'.$counter.'='."$menutype";
		$output.= '&menutarget'.$counter.'='."$menutarget";
		$output.= '&menuorder'.$counter.'='."$menuorder";
		$counter++;
	}
	
	$output.="&counter="."$counter";
	echo "$output";
?>

Ich hab noch einen Screenshot des Actionsscript Codes zur besseren Übersicht angehängt.
 

Anhänge

  • flash.jpg
    flash.jpg
    346,9 KB · Aufrufe: 45
Hallo stuffjm,
funktioniert es, wenn du dir einfach stumpf die geladenen Daten als Text ausgeben lässt? Also z.B. status_txt.text=e.currentTarget.data; ? Wie genau ist die Ordnerstruktur von den Dateien, also wo liegt die swf, wo die html, wo die php?
 
Hall Jens
Danke für deine Antwort. Hab ich schon probiert, nicht mal mit trace gibts ne Ausgabe.
Die Ordnerstruktur ist folgende:
? home/
**?mainmenu.html
**?mainmenu.swf
**?php/
*****?mainmenu.php
*****?inc/
*********?dbdata.inc.php
 
Trace funktioniert ja auch nur lokal, für php muss es schon online sein. Was passiert, wenn du die php direkt aufrufst?
 
Wenn ich die php Datei auf meinem Server aufrufe kommt die gewünschte Ausgabe (s.o.)
Code:
id0=1&menutitle0=Filme&menutitle_alt0=films&menutype0=mainmenu&menutarget0=1&menuorder0=1&counter=1
 
Zurück