Avatar billede mr-baluba Nybegynder
10. januar 2005 - 23:18 Der er 9 kommentarer og
1 løsning

sotering af entrys fra db

Hej folkens

På mit site www.meleemuseum.ullebulle.dk (under "weapons") har jeg et txtfield med tekst/links fra en db. Jeg ville gerne kunne sortere efter fx. navn.
Hvordan griber jeg det an?
Det er vel noget med at sende nogle sql commands til php'en? kan bare ikke lige helt gennemskue det...

Koden der henter hele moletjavsen:

var names = new LoadVars();
var mydata = new LoadVars();

mydata.onLoad = function(ok){
  if(ok)
    names.load("getnames.php");
};
names.onLoad = function(ok) {
  if(ok){
    listetxt.htmlText = "";
    for (var i = 0; i < this.n; i++) {
      listetxt.htmlText += "<A HREF=\"asfunction:cycle,"+i+"\">"+this["Name"+i]+"</A>";
    }
  }
}
function cycle (varNr) {
    tf_Name.htmlText = mydata["Name"+varNr];
    tf_Type.htmlText = mydata["Slags"+varNr];
      tf_Ql.htmlText = mydata["Ql"+varNr];
      tf_Description.htmlText = mydata["Description"+varNr];
      tf_Where.htmlText = mydata["Where"+varNr];
    loadMovie("images/"+mydata["Image"+varNr], this.pic);
}
mydata.load("test8.php");
stop ();
Avatar billede mr-baluba Nybegynder
10. januar 2005 - 23:22 #1
ps koden har jeg fået hjælp til herinde, men forstår nogenlunde hvad der sker... :P
Avatar billede barklund Nybegynder
11. januar 2005 - 00:12 #2
Du kan også sortere direkte i din actionscript - det går lidt hurtigere end at skulle have php'en til at gentage udtrækket med en ny sortering. Vi skriver det lige lidt om:

var names = new LoadVars();
var mydata = new LoadVars();
var entries = new Array();
mydata.onLoad = function(ok){
  if(ok)
    names.load("getnames.php");
};
names.onLoad = function(ok) {
  if(ok){
    for (var i = 0; i < entries.length; i++) {
        entries.push({name: mydata["Name"+i], type: mydata["Slags"+i], ql: mydata["Ql"+i], description: mydata["Description"+i], where: mydata["Where"+i], img: mydata["Image"+i]});
    }
    sortAndView();
  }
}
function sortAndView(prop) {
    if (prop === undefined) prop = "name";
    entries.sortOn(prop);
    for (var i = 0; i < entries.length; i++) {
        listetxt.htmlText += "<A HREF=\"asfunction:cycle,"+i+"\">"+entries[i].name+"</A>";
    }
}
function cycle (i) {
    var e = entries[i];
    tf_Name.htmlText = e.name;
    tf_Type.htmlText = e.type;
    tf_Ql.htmlText = e.ql;
    tf_Description.htmlText = e.description;
    tf_Where.htmlText = e.where;
    loadMovie("images/"+e.img, pic);
}
mydata.load("test8.php");
stop ();

Så kan du kalde sortAndView("where") eller tilsvarende, og så vil den sortere efter den angivne attribut. Ganske enkelt :)

--
Morten Barklund
Avatar billede mr-baluba Nybegynder
11. januar 2005 - 09:10 #3
Ja, det ser spændende ud. Smart at jeg ikke behøver snakke med db'en hver gang.
Roder med det når jeg kommer hjem fra skole. På forhånd tak :P
Avatar billede mr-baluba Nybegynder
11. januar 2005 - 12:06 #4
Hmm, det virker ikke. Der bliver slet ikke vist noget i textfeltet ved load af siden.
Prøvede at ændre "name" til "myname" og "type" til "mytype", da det så ud til at være reserverede ord - men uden resultat.
Jeg kan vel ikke rigtigt trace funktionerne da det jo skal uploades før det virker...(?)
Avatar billede mr-baluba Nybegynder
11. januar 2005 - 12:34 #5
og er det rigtigt forstået at jeg bare skal sætte flg kode på f.eks. en knap:

on(release){
    sortAndView("name");
}
Avatar billede mr-baluba Nybegynder
11. januar 2005 - 12:35 #6
virker lidt for simpelt :P
Avatar billede barklund Nybegynder
11. januar 2005 - 20:47 #7
Jo, det burde du bare kunne gøre. Og ingen grund til at skifte fra name og type - det kan de sagtens hedde.

Der er bare lige en fejl i første linje, der hedder:

for (var i = 0; i < entries.length; i++) {

Skal ændres til:

for (var i = 0; i < this.n; i++) {

Og så burde det spille :)

--
Morten Barklund
Avatar billede mr-baluba Nybegynder
12. januar 2005 - 12:02 #8
Jamen det er så smukt! Nu kører det. Skulle dog lige ændre lidt i sortAndView:

function sortAndView(prop) {
    listetxt.htmlText="";  <----
    if (prop === undefined) prop = "myname";
    entries.sortOn(prop);
    for (var i = 0; i < entries.length; i++) {
        listetxt.htmlText += "<A HREF=\"asfunction:cycle,"+i+"\">"+entries[i].myname+"</A>";
    }
}

Ellers blev den nye sortering blot føjet til for enden af listen, i stedet for at erstatte listen.
Men tusind tak for hjælpen endnu en gang :) Husk at svare.
Avatar billede barklund Nybegynder
12. januar 2005 - 12:58 #9
Ja selvfølgelig - jeg kaster lige et svar :)
Avatar billede barklund Nybegynder
12. januar 2005 - 13:31 #10
Tark for points :)
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
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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