Hello @ All!
Ich möchte aus einer MySQL Datenbank Variablen an eine Flash-Seite übergeben.
Mit Hilfe der AS2-Funktion execute_queries wird ein String (app_context) an ein PHP-Skript gesendet. Dort wird mit dem "app_context" eine MySQL-Anfrage formuliert und die Ergebnisse (ca. 1700 Datensätze) als String (bzw. als XML) zusammengesetzt und in der Variablen "sql_result" zurückgegeben. Die Funktion "execute_queries" ruft nach erfolgreichem laden (also nach Übergabe des kompletten MySQL-Query Ergebnisses in XML-Form) die Funktion splitVarXML auf. Dort wird das zurückgegebene XML mit einer for ... in Schleife aufgeteilt. Ergebnis sind dann "dynamisch generierte Variablen". Das funktioniert in IE7 und Firefox 2 bzw. 3 mit Flashplayer <= 8 problemlos, unter Firefox 2 und 3 mit Flashplayer >= 9 dauert es eine Ewigkeit, bis die Verarbeitung (also offensichtlich die for...in-Schleife) abgeschlossen ist. Wenn die Daten aus einer lokalen MySQL-Datenbank stammen, dauert es auch in Firefox 2 und 3 mit Flashplayer >= 9 nur ein paar Sekunden.
Warum hängt sich Firefox bei diesem Vorgang auf?
Beispielseite: Restaurant EN'TE | Martinsplatz 2a | 53113 Bonn 0228 639322 | Webdesign by PERIMETRIK Bonn
Hier der ActionScript-Code
Und hier das PHP-Script:
Vielen Dank für Anregungen und Tipps
--
Greetz, J!
Ich möchte aus einer MySQL Datenbank Variablen an eine Flash-Seite übergeben.
Mit Hilfe der AS2-Funktion execute_queries wird ein String (app_context) an ein PHP-Skript gesendet. Dort wird mit dem "app_context" eine MySQL-Anfrage formuliert und die Ergebnisse (ca. 1700 Datensätze) als String (bzw. als XML) zusammengesetzt und in der Variablen "sql_result" zurückgegeben. Die Funktion "execute_queries" ruft nach erfolgreichem laden (also nach Übergabe des kompletten MySQL-Query Ergebnisses in XML-Form) die Funktion splitVarXML auf. Dort wird das zurückgegebene XML mit einer for ... in Schleife aufgeteilt. Ergebnis sind dann "dynamisch generierte Variablen". Das funktioniert in IE7 und Firefox 2 bzw. 3 mit Flashplayer <= 8 problemlos, unter Firefox 2 und 3 mit Flashplayer >= 9 dauert es eine Ewigkeit, bis die Verarbeitung (also offensichtlich die for...in-Schleife) abgeschlossen ist. Wenn die Daten aus einer lokalen MySQL-Datenbank stammen, dauert es auch in Firefox 2 und 3 mit Flashplayer >= 9 nur ein paar Sekunden.
Warum hängt sich Firefox bei diesem Vorgang auf?
Beispielseite: Restaurant EN'TE | Martinsplatz 2a | 53113 Bonn 0228 639322 | Webdesign by PERIMETRIK Bonn
Hier der ActionScript-Code
Code:
function execute_queries(query_contexts) {
var query_context:String = String(query_contexts.shift());
var load_vars:LoadVars = new LoadVars();
load_vars.onLoad = function(eq_test) {
if (eq_test) {
splitVarXML(load_vars.sql_result, query_contexts);
} else {
// LOAD VARS NICHT ERFOLGREICH
}
};
load_vars.app_context = query_context;
file = "get_settings.php?cache="+(new Date().getTime());
load_vars.sendAndLoad(file, load_vars, "POST");
}
function splitVarXML (varXML, query_contexts) {
var pk_vars:XML = new XML();
var settings_pointer: Number = 0;
pk_vars.parseXML(varXML);
pk_vars.ignoreWhite = true;
temp_xml_array = new Array();
temp_xml_array = pk_vars.firstChild.childNodes;
for (settings_pointer in temp_xml_array) {
var var_label:String = temp_xml_array[settings_pointer].attributes.label;
switch(temp_xml_array[settings_pointer].attributes.valuetype) {
case "array":
[var_label] = temp_xml_array[settings_pointer].attributes.value.split(",");
killWhiteSpace(_level10[var_label])
break;
case "bool":
[var_label] = Boolean(Number(temp_xml_array[settings_pointer].attributes.value));
break;
case "number":
[var_label] = Number(temp_xml_array[settings_pointer].attributes.value);
break;
case "string":
case "color":
[var_label] = String(temp_xml_array[settings_pointer].attributes.value);
break;
case "reference":
[var_label] = _level10[temp_xml_array[settings_pointer].attributes.value];
break;
default:
[var_label] = temp_xml_array[settings_pointer].attributes.value;
break;
}
}
if (query_contexts.length > 0) {
execute_queries(query_contexts);
} else {
var bool_settings_queries_finished:Boolean = true;
}
}
PHP-Code:
<?php
$xml = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'
. '<settings>';
for ($i=0;$i<$records;$i++) {
$ergebnis[$i]=mysql_fetch_array($result);
$xml.= '<setting';
$xml.= ' label="'.$ergebnis[$i][label].'"';
$xml.= ' value="'.$ergebnis[$i][value].'"';
$xml.= ' valuetype="'.$ergebnis[$i][valuetype].'"';
$xml.= '/>';
}
$xml.= '</settings>';
echo '&sql_result='.$xml.'&';
?>
--
Greetz, J!
