Mysql tabelle in Flash darstellen

Hi,

dieses:
Code:
var entries = new Array();

var xm = new XML();

xm.ignoreWhite = true;

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

xm.load("mannixml.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]);
}
funktioniert mit dieser XML-Datei:
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"/>

1. musst Du die "ignoreWhite"-Eigenschaft des XML-Objektes auf "true" stellen (das habe ich in meinem vorherigen Posting vergessen, aber Du hättest es auch selbst bemerken können ;)).

2. War Deine XML-Deklaration fehlerhaft

3. darf die trace-Aktion nicht ausserhalb der parse-Methode stehen. XML.load arbeitet asynchron, daher wird die parse-Methode bei Deiner Schreibweise erst nach der trace-Aktion ausgeführt.

Gruß
.
 
Vielen vielen dank hab das nun geschafft und kann es auch ausgeben.

Code:
var entries = new Array();
var xm = new XML();
xm.ignoreWhite = true;
xm.onLoad = function() {
	parse(this.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++;
		}
	}
	for(var i = 0; i < entries.length; i++){
		trace(entries[i]);
		var xkord = i*10;
		var ykord = i*10;
		_root.createTextField("mytext",i,xkord,ykord,200,100);
		mytext.text = entries[i];
	}
}

Das gibt er nun aus:

a,a@1,1
b,b@2,2
c,c@3,3
d,d@4,4

Nun dann sind noch 2 Probleme. Wie schaffe ich es das er mir für jedes element ein eigene ausgabe macht und nicht nur für immer die erste zeile und dann kommas.
Und so wie ich oben die Textfelder gemacht habe geht das irgendwie auch net, da er immer nur das im textfeld hat d,d@4,4
 
Hi,

man weist ja auch nicht ein Objekt mit mehreren Membern einfach einem Textfeld zu:
Code:
mytext.text = entries[i];
Wozu wolltest Du dann überhaupt ein mehrdimensionales Arrray? ;)

Erstelle lieber für jedes Attribut ein eigenes Textfeld und ordne diese Textfelder in einer Zeile nebeneinander an.

Gruß
.
 
ok das habe ich schon einmal nun geschaft:
Code:
for(var i = 0; i < entries.length; i++){
		var c = 0;
		for(var c = 0; c < entries[i].length; c++){
			trace(entries[i][ c]);
		}
	}
Dabei gibt er nun folgendes aus:

a
a@1
1
b
b@2
2
c
c@3
3
d
d@4
4

Nun habe ich noch ein bisschen weitergemacht:

Code:
	for(var i = 0; i < entries.length; i++){
		var c = 0;
		for(var c = 0; c < entries[i].length; c++ ){
			trace(entries[i][ c]);
			_root.createTextField("mytext",1,kordx,kordy,200,100);
			mytext.text = entries[i][ c];
			kordx+10; 
			kordy+10;
		}
	}

Kann mal bitte einer schauen ob ich bis jetzt noch keinen fehler gemacht habe und ich hab auch noch ein problem wie mache ich das mit dem instanzname des Textfeld das diese auch immer mitgeht :(
und kann man dann auch jeder Spalte einzeln eine Breite geben oder müssen die alle gleich groß sein.
 
Hi,

Du solltest kordy ausserhalb der inneren Schleife inkrementieren, da sonst auch jede Spalte innerhalb einer Zeile um 10 Pixel nach unten rutscht.

Die Instanznamen kannst Du so inkrementieren:
Code:
_root.createTextField("mytext" + i + "_" + c, _root.getNextHighestDepth(), kordx, kordy, 200, 100);
Beachte, dass auch die Tiefe inkrementiert werden muss, da Deine Textfelder sich sonst gegenseitig überschreiben.

Gruß
.
 
Gut also wieder fragen:
wie schaffe ich das mit den variablen bei .text

So geht ja nicht :(
Code:
mytext+i_+c.text = entries[i][ c];


So und wie meinst du das mit inkrementieren
Sollen die in der 1 for scheilfe erhöht werden oder wie ^^
Man ich weiß nicht was ich ohne das forum machen würde vielen dank mal nochmal
 
ahh ok habs geschafft, hab nun noch das mit den kordinaten angepasst.

Code:
for(var i = 0; i < entries.length; i++){
		var c = 0; 
		for(var c = 0; c < entries[i].length; c++ ){
			trace(entries[i][ c]);
			_root.createTextField("mytext" + i + "_" + c, _root.getNextHighestDepth(), kordx, kordy, 200, 100);
			_root["mytext" + i + "_" + c].text = entries[i][ c];
			kordx = i*100;
				
		}		 
	}

aber wo muss ich nun kordy erhöhen damit die neuen einträge eine zeile weiter untenstehen? und kann man auch jeder spalte einzeln eine breite zuweißen?
 
Wie ich schon sagte: Zwischen der inneren und der äusseren Schleife, damit jede neue Zeile eine neue vertikale Koordinate bekommt:
Code:
for(var i = 0; i < entries.length; i++){
		var c = 0; 
		for(var c = 0; c < entries[i].length; c++ ){
			trace(entries[i][ c]);
			_root.createTextField("mytext" + i + "_" + c, _root.getNextHighestDepth(), kordx, kordy, 200, 100);
			_root["mytext" + i + "_" + c].text = entries[i][ c];
			kordx = i*100;
		}	
		kordy += 20; // Zeilenabstand
	}


Gruß
.
 

Neue Beiträge

Zurück