webForumDet fria alternativet

Slumpa unikt.

ASPur ASP

17 svar · 1 028 visningar · startad av limpon

Medlem sedan sep. 2001175 inlägg
Frågan#1

Jag tänkte slumpa ut poster i sidvisningen.

Då är det så här.
Jag har
[id] [nyhet]

då vill jag slumpa bland alla nyheter.
men samma nyhet ska inte kunna bli 2 ggr.
fast jag slumpar den 5 ggr.

	ReDim Order(5),Svar(5)

	' Pos 0 är rätt svar, övriga är fel svar '

	Order(0) = 0 'Plats för rätt svar'
	Order(1) = 1
	Order(2) = 2
	Order(3) = 3
	Order(4) = 4

For i = 0 To Ubound(order)
Randomize
slump = Int(Rnd * Order(i))+1
response.write slump
Next

Alltså slumptalet ska inte kunna komma 2 gånger då jag skriver ut det.
talen 0-4 ska slumpas ut i slumpad ordning.

Medlem sedan jan. 20032 285 inlägg
#2

Såhär kan du väl göra?

blnSlump = False
i = 0

Do Until blnSlump
  Randomize
  intSlump = Int(Rnd * UBound(Order)) + 1
  If InStr(strSlump, intSlump) = 0 Then
    strSlump = strSlump & " " & intSlump
    If i = UBound(Order) - 1 Then
      blnSlump = True
    End If
    i = i + 1
  End If
Loop
Response.Write(strSlump)
Medlem sedan sep. 2001175 inlägg
#3

Tack perfekt, funkar kanon tack igen!

Medlem sedan sep. 2001175 inlägg
#4

Kan man dela in strslump i en array för just nu står det då man skriver
response.write (strslump)
står det 1 2 3 4 5.

Är lite dålig än på arrayer men jag håller på o försöka lära mig.
Bara man får se koden några gånger brukar den sätta sig i lillhuvudet efter ett tag.
Tacksam för snabbt svar.

Medlem sedan jan. 20032 285 inlägg
#5

Byt ut

Response.Write(strSlump)

till

arrSlump = Split(strSlump)
' Gör vad du vill, t.ex:
For i = 0 To UBound(arrSlump)
  Response.Write(arrSlump(i) & "<br>")
Next
Medlem sedan sep. 2001175 inlägg
#6

aha det verkar jäkligt lätt med arrayer.
Tack igen sebbe.

Medlem sedan maj 2003361 inlägg
#7

Varför funkar denna "array-slump" bara bra tills man har en array på 10? Då krashar IIS..

Red. Jag gissar att det är Randomize som inte kan ge högre tal än 9? Hur löser jag så jag kan använda högre tal?

Medlem sedan juli 20011 129 inlägg
#8

Det är inte bara så att du glömt att Dim:a arrayen efter du utökade arrayen. Arrayer klarar betydligt mer än 9 och det gör också Randomize()

Medlem sedan maj 2003361 inlägg
#9

Jag körde denna kod, om det står 9 i arrayen så funkar det utmärkt , men när det är 10 så krashar IIS.

ReDim Order(10)

blnSlump = False
i = 0

Do Until blnSlump
  Randomize
  intSlump = Int(Rnd * UBound(Order)) + 1
  If InStr(strSlump, intSlump) = 0 Then
    strSlump = strSlump & " " & intSlump
    If i = UBound(Order) - 1 Then
      blnSlump = True
    End If
    i = i + 1
  End If
Loop
Response.Write(strSlump)
Medlem sedan nov. 2001402 inlägg
#10

Hej,

Jag är nybörjare på asp och undrar om någon vänlig själ kan och vill omvandla den här koden (eller har en annan bättre) till en komplett kod från if till end if som slumpar ut dessa includes i random ordning (utan att någon include upprepas).

så att vid nästa sidvisning kan det bli t.ex. så här:

<!-- #include file="include_slump3.asp" -->
<!-- #include file="include_slump1.asp" -->
<!-- #include file="include_slump2.asp" -->
<!-- #include file="include_slump5.asp" -->
<!-- #include file="include_slump4.asp" -->

I nästa en annan ordning och så vidare.

I varje include tänkte jag ha en annonskod och på så vis turas de om att hamna högst upp.

Vet ni om det segar ner sidan mycket att använda includes så här eller om servern får tag på dem lätt och snabbt?

Medlem sedan nov. 2001402 inlägg
#11

de översta försvann visst, jag får ta och lära mig att använda kodrutor.. beklagar.

Medlem sedan juni 20019 519 inlägg
#12

Nej Brorsan. Du kan inte köra dynamisk kod i din include sträng. Om du skulle köra en sådan kod så blir det extremt ohålbart i längden. använd en databas för att lagra dina anonskoder och kör ut 1x med random.

Medlem sedan nov. 2001402 inlägg
#13

Hm, tack för svar. Problemet är att jag vet 0 om databaser, så jag kan inte lägga till det du säger. Har letat efter konsult att anlita timvis, men alla är busy till och med på arbetsförmedlingen.

Databasen är också rätt belastad och långsam, så tror jag tjänar på att inte blanda in den.

Behöver också scriptet på tisdag och hinner inte plugga databas i helgen, så måste skapa något tillfälligt.

Men jag kan ju provisoriskt testa använda ett slumpscript så länge som säger:

om slumptal = 1 then

(och annonserna uppradade i en ordning)

om slumptal = 2 then

(annonserna uppradade i en annan ordning)

om slumptal = 3 then

(annonserna uppradade i en tredje ordning)

och detta kan ju göras antingen genom att ha includes i olika ordning eller själva koden för annonserna direkt i olika ordning utan includes (vilket blir jobbigare eftersom varje kod då står 3-8 ggr beroende på antal annonsörer)

så om jag använder denna kod, hur jobbigt är det då för servern att bara lägga in 3-8 små includes? Är det kännbart?

Har på de flesta sidor ca 8 includes redan, menyer, databasscript osv.

Medlem sedan juni 20019 519 inlägg
#14

brorsan skrev:

Databasen är också rätt belastad och långsam, så tror jag tjänar på att inte blanda in den.

Kolla upp det först snälla ;)
Du tror inte att Select Case / If frågor är "krävande"?

Om du har problem med arbetskraft så kan du alltid posta på: Jobb & Tjänster (mot betalning) här på wF.

Ditt sätt som du skriver kommer att fungera men knappast något man hade använt i längden. Underhållning + uppdatering av .asp filen kommer bli betydligt jobbigare än att göra en enkel admin-gränssnitt för snabb uppdatering / inlägg av nya annonser.

Du behöver inte använda dig av include om du inte vill. du kan ju alltid skriva in dina annons koder inne i din if fråga. så slipper du ha 8 filer att hålla koll på.

Medlem sedan nov. 2001402 inlägg
#15

ok, noterat och jag ska kolla med arbetskraft där.

har ingen aning ifall de är krävande, you tell me! =) har inte läst en enda rad i nån bok/tutorial om asp-kodande utan bara tagit över en sida och lärt mig lite praktik genom att pyssla i koden, så jag vet 0 teori.

fast jag föredrar nog att ha 8 filer (döpta liknande och lätta att hitta) och bara ändra i en av dem när kunden vill byta annonsupplägg än att ha 8 ställen att byta på för en ändring och riskera att missa en av dem osv.

så min fråga är mer om 3-8 includes tar mycket extra kraft och tid rent servermässigt eller om det är marginellt?

jag kommer nästan enbart ha långsiktiga kunder med typ årsavtal, så är mer mån om att servern klarar det hela än att det ska vara supersmidigt för mig själv.

Medlem sedan nov. 2001402 inlägg
#16

och tack för all din tid, det uppskattas verkligen.

Medlem sedan juni 20019 519 inlägg
#17

1. "Krävnade"... det är nog ingen skala från 1-10 direkt man går på. Om du kodar dåligt så kommer sidan bli långsammare än om du kör mot en databas... det krävs lite extra kraft men vi snackar inte direkt med att datorns CPU ta 50% bara för att öppna en db koppling.

mitt tips är: gå på det som fungera för dig. Nu om du har tidspress och inte bestitter alla kunskaper inom ASP / databaser så kan man ju inte direkt lägga ner all sin tid på något som _kan_ fungera till leverans. Du får nog helt enkelt göra på det sätt du vet att det kommer fungera till leverans.

Medlem sedan nov. 2001402 inlägg
#18

yesyes, will do. Tack igen.

136 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)