Mysql tabelle in Flash darstellen

ahh ok das Printip habe ich verstanden nun noch eine Frage zu XML.

ich habe ja dieses hier:
Code:
<?xml version="1.0" encoding="iso-8859-1"?>
	<zeile name="a" email="a@1" icq="1"/>
	<zeile name="b" email="b@2" icq="2"/>
	<zeile name="c" email="c@3" icq="3"/>
	<zeile name="d" email="d@4" icq="4"/>

Nun wenn ich nun das ausgebenach dem ich das XMLfile geladen habe
Code:
trace(XMLdaten.childNodes[0]); bekomme ich dieses hier <zeile name="a" email="a@1" icq="1" />

wenn ich nun das ausgeben lasse XMLdaten.childNodes[0].attributes bekomme ich das:
[type Object]

Aber so wie ich es verstanden habe sollte es doch so ein array sein zB:
Code:
daten[name][a] oder daten[email][b@2]

Aber wie ich schaff ich nun das hier mir nicht die zeilen ins array schreibt sondern einmal name oder email und einmal das was dahinter in "" steht
 
Hi,

das "attributes"-Objekt ist ein Objekt mit Membern, die wie die Attributnamen benannt sind. Namen und E-Mail bekommst DU z.B. so:
Code:
XMLdaten.childNodes[0].attributes.name;

// bzw.

XMLdaten.childNodes[0].attributes.email;

Gruß

P.S.: Mit den Array-Zugriffsoperatoren kannst Du auch auf die Member eines Objektes zugreifen; dabei musst Du die Memberbezeichner allerdings in Anführungsstriche setzen:
Code:
XMLdaten.childNodes[0].attributes["email"];
.
 
ok ich hab das mal ausprobiert das geht auch super.
Kann man nun aber auch irgendwie das hier:
Code:
XMLdaten.childNodes[0].attributes["email"];

so schreiben das "email" eine Variable ist. Denn so kann ich ja keine for schleife machen oder. Also würde es zB nur die attribute auszugeben irgendwie so
Code:
XMLdaten.attributes[i]

oder so ?
 
sonst gibt es noch einen anderen weg einen memberanzeige zu bauen.
Ich habe mir das so vorgestellt in etwa.

+------------------+
|Sqaud 1 |
+------------------+
|Sqaud 2 |
+------------------+
|Sqaud 3 |
+------------------+

wenn man nun auf einen dieser squads drückt sollte dann etwas herunterfahren:

+--------------------------------------------+
|Sqaud 1 |
+--------------------------------------------+
|Member 1 | Info zu Member1 |
+------------------+------------------------+
|Member 2 | Info zu Member2 |
+------------------+------------------------+
|Member 3 | Info zu Member3 |
+------------------+------------------------+
|Sqaud 2 |
+--------------------------------------------+
|Sqaud 3 |
+--------------------------------------------+

oder so:

+--------------------------------------------+
|Sqaud 1 |
+--------------------------------------------+
|Sqaud 2 |
+--------------------------------------------+
|Member 1 | Info zu Member1 |
+------------------+------------------------+
|Member 2 | Info zu Member2 |
+------------------+------------------------+
|Member 3 | Info zu Member3 |
+------------------+------------------------+
|Sqaud 3 |
+--------------------------------------------+

Aber wie schaff ich sowas ? :confused:
 
Hi,

Dein letztes Posting habe ich nicht verstanden, aber selbstverständlich kannst Du auch Variablen als Index für den Array-Operator verwenden:
Code:
var attr = "email",

trace(meinXML.childNodes[0].attributes[attr]);

Du kannst auf folgende Weise alle Attribute eines Knotens durchlaufen:
Code:
for (var i in meinXML.childNodes[0].attributes) {
    trace(i + ":: " + meinXML.childNodes[0].attributes[i]);
}

Gruß
.
 
nun was ich nicht kapier ist wie ich das 2d array hinbekomme. Ein einfaches kapier ich aber wie schaffe ich es jedem attributdas zuzuweißen das ich eben daten[attribut][childnodes] habe. Oder soll ich die gar nicht erreichen... ich blick irgendwie noch nicht durch
 
Hi,

probiers mal so:
Code:
var entries = new Array();

var xm = new XML();

xm.onLoad = function() {
    parse(this.childNodes);
}

xm.load("daten.php");

function parse(obj) {
    for (var i=0; i<obj.length; i++) {
        entries[i] = new Object();
        for (var h in obj[i].attributes);
            entries[i][h + "_"] = obj[i].attributes[h];
        }
    }
}
Bei den Attributen "name" und "email" hättest Du dann folgende Einträge im Array "entries":
Code:
trace(entries[0]["name_"]); // "name"-Feld der ersten Zeile
trace(entries[0]["email_"]); // "email"-Feld der ersten Zeile
Den Unterstrich füge ich hinzu, weil z.B. "name" ein reserviertes Wort in Flash ist, und nicht als Eigenschaft verwendet werden kann.

Diese Variante erstellt nicht wirklich ein zweidimensionales Array, sondern vielmehr ein Array aus Objekten, deren Member den einzelnen Attributen entsprechen.

Willst Du ein zweidimensionales Array erstellen, kannst Du es so probieren:
Code:
function parse(obj) {
    for (var i=0; i<obj.length; i++) {
        entries[i] = new Array();
        var c = 0;
        for (var h in obj[i].attributes);
            entries[i][ c] = obj[i].attributes[h];
            c ++;
        }
    }
}
Danach hättest Du ein zweidimensionales Array der Art:
Code:
trace(entries[0][0]); // erstes Attribut der ersten Zeile
trace(entries[0][1]); // zweites Attribut der ersten Zeile

trace(entries[1][0]); // erstes Attribut der zweiten Zeile
Beachte, dass die Reihenfolge der Attribute im Array nicht unbedingt der Reihenfolge der Attribute im XML-Knoten entspricht (bei einer for..in-Schleife werden die Member in der Regel von hinten nach vorne durchlaufen).

Gruß
.
 
ok vielen dank aber ich hab das mal so versucht:
Code:
var entries = new Array();
var xm = new XML();
xm.onLoad = function() {
    parse(this.childNodes);
}
xm.load("daten.php");
function parse(obj) {
    for (var i=0; i<obj.length; i++) {
        entries[i] = new Array();
        var c = 0;
        for (var h in obj[i].attributes){
            entries[i][ c] = obj[i].attributes[h];
            c ++;
        }
    }
}
trace(entries[0][0]);

aber da kommt immer undefined :( ist es den sinnvoll dies so zumachen oder gibt es noch einen einfacheren weg.
 
Hi,

je nach Aufbau Deines XML-Objektes musst Du zuerst einen Knoten runter gehen:
Code:
xm.onLoad = function() {
  parse(this.firstChild.childNodes);
}

Eine "einfachere" Methode im Sinne von "weniger Code" gibt es nicht. Ob Du Dich für ein 2d- Array oder ein Objektbasiertes Modell entscheidest, hängt von Deinem Geschmack und Deinen Anforderungen ab. Je nach Weiterverwendung kannst Du auch völlig auf die Übertragung in ein Array verzichten, und direkt mit dem XML-Objekt arbeiten.

Gruß
.
 
Dann hätte ich das hier aber das geht auch nicht :( ohhh man das ist kompliziert

Code:
var entries = new Array();
var xm = new XML();
xm.onLoad = function() {
	parse(this.firstChild.childNodes);
};
xm.load("member.xml");
function parse(obj) {
	for (var i = 0; i<obj.length; i++) {
		entries[i] = new Array();
		var c = 0;
		for (var h in obj[i].attributes) {
			entries[i][ c] = obj[i].attributes[h];
			c++;
		}
	}
}
trace(entries[0][0]);

Bei dieser XML datei:

PHP:
<?xml version="1.0" encoding="iso-8859-1"?>
	<zeile name="a" email="a@1" icq="1"/>
	<zeile name="b" email="b@2" icq="2"/>
	<zeile name="c" email="c@3" icq="3"/>
	<zeile name="d" email="d@4" icq="4"/>
 
Zurück