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!