webForumDet fria alternativet

att välja en specifik post i en array?

ASP

8 svar · 265 visningar · startad av Eclipse

Medlem sedan juli 20003 825 inlägg
Frågan#1

Förstår ni scenariot?

Säg att jag listar alla nyheter. 10 stycken. Jag dumpar dom i en array med namn och datum och allt. Så finns det en nyhet som har dagens datum. Längst ner på sidan vill jag skriva ut *just den* nyheten i sin helhet.

(Ett rätt korkat exempel, men jag orkar inte förklara så det får duga som illustration...)

SELECT * FROM array(minaNyheter) WHERE datum = dagensDatum.

---
FOR j = 0 TO UBound(minaNyheter, 2)
-- IF minaNyheter(2,j) = date() THEN response.write ...
NEXT

Det går att göra en FOR loop men den känns rätt klumpig och omständig. Därför fiskar jag efter alternativ! :-)

Medlem sedan dec. 19996 522 inlägg
#2

vet du exakt vart i arrayen den ligger så är det ju bara att skriva ut den..om den ligger på samma plats hela tiden. Om du tex alltid har en nyhet / dag.

Plockar du tex alltid ut 10 och har dem i en 2 dim. array och har sorteringsordning så att den med senast datum kommer först så är det ju alltid på den första positionen i arrayen du finner den senaste nyheten på första plattsen i arrayen arrRs(x,0)

Medlem sedan juli 20003 825 inlägg
#3

Om jag vet var en viss post befinner sig så är det okej. men om jag inte vet var den befinner sig, den kanse inte ens finns! Hur gör jag då?

Min fråga är alltså, hur skriver jag FOR loopen på ett enklare manéer?

***
Det är inte Nyheter det rör sig om i detta faller. Det är länkar. Man klickar på en rubrik och sedan klickar man på en länk.

När jag ska lägga till nya länkar listas befintliga rubriker i en drop-down meny och den för tillfället aktiva menun äår markerad (SELECTED).

Det där med nyheterna drog jag bara som en enklare variant på samma tema.

Medlem sedan dec. 200012 464 inlägg
#4

Det finns inget enklare sätt. Om inte arrayen är sorterad så måste du söka igenom alla värden. Om den är sorterad stigande med avseende på datum så kan du avbryta sökningen när du hittar ett datum som är större än dagens.

Medlem sedan juni 200032 967 inlägg
#5

Om du tidigare i koden också loopar igenom arrayen, kan du göra din kontroll där.

IF minaNyheter(2,j) = date() THEN intIndex = j

Sedan använder du bara intIndex för att bestämma vilken post du skall skriva ut underst.

Mvh,

Medlem sedan juli 20003 825 inlägg
#6

Bra @nders! Det var en rätt trevlig variant. Jag glömde att säga det, men jag har redan loopat igenom koden en gång.

Jag tänkte inte på att det skulle kunna göra hela skillnaden...

Medlem sedan dec. 1999707 inlägg
#7

Det enklaste är väl att få/lägga allt i ett recordset och använda sig av sort()-metoden eller Filter()-metoden.

Medlem sedan juli 20003 825 inlägg
#8

Hur då? Visa med lite kod!

Medlem sedan dec. 1999707 inlägg
#9
Set recNew = Server.CreateObject("ADODB.Recordset")

recNew.CursorLocation = 3
recNew.cursorType     = 3
recNew.lockType       = 3
		
recNew.Fields.Append "id", 200, 40, 40
recNew.Open

For i = 0 to 100
	recNew.Fields("id").value = i
	recNew.Update()
Next

recNew.Sort = "id desc"
257 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)