Avatar billede wilweb Nybegynder
19. marts 2008 - 11:41 Der er 2 kommentarer

variabler fra php til dynamisk text felter

jeg henter 21 variabler fra php, virker! (highscore)
men jeg kan sku ikke finde ud af at få dem udskrevet til dynamiske text felter....
Jeg kan jo bare lave det hardkodet men, det bliver noget mega langt kode og det er jo ikke rart...

stop();
var loadVars_in:LoadVars = new LoadVars();
loadVars_in.load("hent_highscore.php");
loadVars_in.onLoad = function(success) {
if (success) {
// virker fint
_root.antal_txt.text = loadVars_in["antal"];
_root.player1 = loadVars_in["player1"];
_root.player2 = loadVars_in["player2"];
_root.player3 = loadVars_in["player3"];
_root.player4 = loadVars_in["player4"];
_root.player5 = loadVars_in["player5"];
_root.player6 = loadVars_in["player6"];
_root.player7 = loadVars_in["player7"];
_root.player8 = loadVars_in["player8"];
_root.player9 = loadVars_in["player9"];
_root.player10 = loadVars_in["player10"];
_root.score1 = loadVars_in["score1"];
_root.score2 = loadVars_in["score2"];
_root.score3 = loadVars_in["score3"];
_root.score4 = loadVars_in["score4"];
_root.score5 = loadVars_in["score5"];
_root.score6 = loadVars_in["score6"];
_root.score7 = loadVars_in["score7"];
_root.score8 = loadVars_in["score8"];
_root.score9 = loadVars_in["score9"];
_root.score10 = loadVars_in["score10"];
// de 2 her bliver skrevet
_root.sum_txt.text = _root.score1;
_root.player_txt.text = _root.player1;
//her skal variabler skrives ud i dynamiske tekst felter
//men der sker ikke en shit
for (i=1; i<11; i++) {
  var ycor = (30*i)+50;       
  this.createTextField("player_txt"+i,i,50,ycor,200,30);
  this["player_txt"+i].multiline = false;
  this["player_txt"+i].wordWrap = false;
  this["player_txt"+i].border = true;
  var myformat:TextFormat = new TextFormat();
  myformat.size = 20;
  this["player_txt"+i].text = this["player"+i];         
  this["player_txt"+i].setTextFormat(myformat);
}
} else {
//notify of failure
  _root.antal_txt.text = "Error i loading af databasen!";
}
};
Avatar billede maqhem Nybegynder
19. marts 2008 - 16:49 #1
Du skal lære at bruge løkker og tabs noget bedre. Så bliver koden kortere og pænere:

stop();
var loadVars_in:LoadVars = new LoadVars();

loadVars_in.load("hent_highscore.php");

loadVars_in.onLoad = function(success) {
    if (success) {
        _root.antal_txt.text = loadVars_in["antal"];
        var d:Array = ["player", "score"];
       
        for(var i:Number = 0; i < d.length; i++) {
            for(var j:Number = 1; j <= 10; j++) {
                this[d[i] + j] = loadVars_in[d[i] + j];
            }
        }
        _root.sum_txt.text = this.score1;
        _root.player_txt.text = this.player1;
        for (var i:Number = 1; i < 11; i++) {
            var ycor:Number = (30 * i) + 50;
            this.createTextField("player_txt" + i, i, 50, ycor, 200, 30);
            this["player_txt" + i].multiline = false;
            this["player_txt" + i].wordWrap = false;
            this["player_txt" + i].border = true;
            var myformat:TextFormat = new TextFormat();
            myformat.size = 20;
            this["player_txt" + i].text = this["player" + i];
            this["player_txt" + i].setTextFormat(myformat);
        }
    } else {
        _root.antal_txt.text = "Error i loading af databasen!";
    }
}

Hey! Nu blev det pludseligt til at overskue ;)

Og så får du lige en lille eksperten.dk-lektion: denne hjemmesides slogan er "hjælp til selvhjælp." Vi hjælper folk, så de kan hjælpe sig selv. Vi laver ikke folks arbejde. Så nu vil jeg fortælle dig lidt om, hvordan du selv kan teste din kode igennem. Dette er hurtigst og nemmest - og den mest pointvenlige.

1. Funktionen, der kan løse alle problemer, hedder trace. Prop en trace ind alle de steder, hvor du har problemer eller måske problemer. Sådan kunne det se ud:

stop();
var loadVars_in:LoadVars = new LoadVars();

loadVars_in.load("hent_highscore.php");

loadVars_in.onLoad = function(success) {
    if (success) {
       
        trace("Hentes mine data overhovedet korrekt?");
        trace(loadVars_in);
       
        _root.antal_txt.text = loadVars_in["antal"];
        var d:Array = ["player", "score"];
       
        for(var i:Number = 0; i < d.length; i++) {
            for(var j:Number = 1; j <= 10; j++) {
               
                trace("Nu sættes this[" + d[i] + j.toString() + "] til " + loadVars_in[d[i] + j]);
               
                this[d[i] + j] = loadVars_in[d[i] + j];
            }
        }
        _root.sum_txt.text = this.score1;
        _root.player_txt.text = this.player1;
        for (var i:Number = 1; i < 11; i++) {
            var ycor:Number = (30 * i) + 50;
            this.createTextField("player_txt" + i, i, 50, ycor, 200, 30);
            this["player_txt" + i].multiline = false;
            this["player_txt" + i].wordWrap = false;
            this["player_txt" + i].border = true;
            var myformat:TextFormat = new TextFormat();
            myformat.size = 20;
           
            trace("Nu har jeg lavet et tekstfelt. Hvad bliver der skrevet til tekstfeltet?");
            trace(this["player" + i]);
           
            this["player_txt" + i].text = this["player" + i];
            this["player_txt" + i].setTextFormat(myformat);
        }
    } else {
        _root.antal_txt.text = "Error i loading af databasen!";
    }
}

Så kan du følge din kode hele vejen igennem for at finde fejlen. Og når du har fundet fejlen, kan du få hjælp til, hvad du skal gøre.
Avatar billede wilweb Nybegynder
22. april 2008 - 15:56 #2
undskyld jeg var lige væk...
Det er et utroligt flot svar, jeg har ikke testet det endnu men smid du bare et svar, min ven
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester