18. oktober 2002 - 10:33Der er
34 kommentarer og 1 løsning
Loop fx 5 gange??
Mit script looper til alt er vist sådan:
1,2,3,4,5,6,7,8 (og slutter ikke med komma)
Kvordan får jeg den til at loope fx. 5 gange og derefter skrive 1,2,3,4,5.... ??
Her er min kode:
<% DO UNTIL objRec2.EOF %> <%=("<a onfocus=""this.blur()"" href=""se_denne_side.asp?kategori=" & objRec2("Id") & """>" & objRec2("u_kategoriNavn") & "</a>")%> <% objRec2.movenext If NOT objRec2.EOF then response.write ", " If objRec2.EOF then response.write "" LOOP %>
<% For X = 1 TO 5 If NOT objRec2.EOF Then response.write "<a onfocus=""this.blur()"" href=""se_denne_side.asp?kategori=" & objRec2("Id") & """>" & objRec2("u_kategoriNavn") & "</a>" If X < 5 Then response.write "," Else response.write "" End IF objRec2.movenext End If NEXT %>
<% for i = 1 to 5 If NOT objRec2.EOF Then response.write "<a onfocus=""this.blur()"" href=""se_denne_side.asp?kategori=" & objRec2("Id") & """>" & objRec2("u_kategoriNavn") & "</a>"
If i = 1 then response.write "" elseif i < 5 Then response.write "," elseif response.write "" end iF objRec2.movenext end If next %>
<% Lobs = 5 ' her kan du skrive det antal gange den skal loope
For X = 1 TO int(Lobs) If NOT objRec2.EOF Then response.write "<a onfocus=""this.blur()"" href=""se_denne_side.asp?kategori=" & objRec2("Id") & """>" & objRec2("u_kategoriNavn") & "</a>" If X < int(Lobs) Then response.write "," Else response.write "" End IF objRec2.movenext End If NEXT %>
Lobs = 8 ' her kan du skrive det antal gange den skal loope
For X = 1 TO int(Lobs) If NOT objRec2.EOF Then response.write "<a onfocus=""this.blur()"" href=""se_denne_side.asp?kategori=" & objRec2("Id") & """>" & objRec2("u_kategoriNavn") & "</a>" If X < int(Lobs) Then response.write ", " Else response.write "..." End IF objRec2.movenext End If NEXT %>
Men der er stadig et problem. For når der ligger mindre i db'en end der er loops, så slutter den jo stadig med at skrive ", " og der skal den slutte med "" - Men hvordan gør jeg ??
Øj hvor er der mange ting der skal tages højde for i sådan et lille script *GG*
<% Lobs = 5 ' her kan du skrive det antal gange den skal loope Max = objRec2.RecordCount
For X = 1 TO int(Lobs) If NOT objRec2.EOF Then response.write "<a onfocus=""this.blur()"" href=""se_denne_side.asp?kategori=" & objRec2("Id") & """>" & objRec2("u_kategoriNavn") & "</a>" If X < int(Lobs) AND X < int(Max) Then 'evt. skal den ændres til "If X < int(Lobs) AND X < int(Max) - 1" leg med det ! response.write "," Else response.write "" End IF objRec2.movenext End If NEXT %>
Hvad laver den her af fejl ???, den checker jo hvor mange poster der er i databasen !
<% Lobs = 5 Max = objRec2.RecordCount
For X = 1 TO int(Lobs) If NOT objRec2.EOF Then response.write "<a onfocus=""this.blur()"" href=""se_denne_side.asp?kategori=" & objRec2("Id") & """>" & objRec2("u_kategoriNavn") & "</a>" If (X < int(Lobs)) AND (X < int(Max)) Then response.write "," Else response.write "" End IF objRec2.movenext End If NEXT %>
Jeg vil gerne hjælpe hvis du er lidt samarbejdsvillig og fotæller hvad der sker !, jeg gider ikke og side og lave en database for at teste hvad du har lavet !
Jeg syntes jeg har sagt hvad det er fejlen er hos mig. Med dette script som står her:
<% Lobs = 8 ' her kan du skrive det antal gange den skal loope
For X = 1 TO int(Lobs) If NOT objRec2.EOF Then response.write "<a onfocus=""this.blur()"" href=""se_denne_side.asp?kategori=" & objRec2("Id") & """>" & objRec2("u_kategoriNavn") & "</a>" If X < int(Lobs) Then response.write ", " Else response.write "..." End IF objRec2.movenext End If NEXT %>
Virker det perfekt hvis der er over 8 poster.
Men hvis der er under 8 poster i databasen, så slutter det med et komma (,) og det skal det ikke! Der skal ikke være noget, altså skal der udskrives "" hvis der er under 8 poster!
Hvis man må have hjælp må, man gøre sig fortjent til det! M.a.o. så bør du skrive lidt mere om hvilke fejl du får, i stedet for bare at skrive at det ikke virker. Skriv også hvad du har prøvet for at få det til at virker (f.eks. ved at indsætte Response.Write "Loop nummer :" & i).
Jeg er sikker på at mit forslag fra 18/10-2002 12:30:10 virker (uagtet antal poster i databsen, ado cursor osv.). De ander bør muligvis også virke. Men hvis man f.eks. bruger objRec2.RecordCount kræver det at man bruger den rigtige cursor ((adOpenForwardOnly, adOpenForwardOnly, adOpenStatic, adOpenKeyset, adOpenDynamic), i modsætning til Do While Not objRec2.EOF som altid vil virke, og i øvrigt også performer bedre i de fleste situationer. Hvis man ikke bruer den rigige cursor returenre objRec2.RecordCount -1, hvilket betyder at den ikke er i stand til at tælle antal rækker på forhånd.
Så fortæl mig lige hvorfor mit forslag ikke virker, og prøv at lade som om at du rent faktisk prøver at får det til at virker ;-)
Jeg syntes nu at jeg for 3. gang prøver at beskrive hvad det er der går galt!
Hvis der er under 8 poster i databasen, så slutter det med et komma (,) og det skal det ikke! Der skal ikke være noget, altså skal der udskrives "" hvis der er under 8 poster!
tje_mentum: I dit tilfælde udskriver den kun poster under en af mine hovedkategorier, alle de andre er tomme - hvordan det så kan lade sig at gøre, det er uvidst!!
Ok... jeg medgiver at dette er svært at se hvilke kommentarer der er svar på hvad her, men jeg taler kun om det script jeg sendte, og det er først nu du har fortalt andet end "det virker ikke", og du gør dig stadig ikke megen umage med at forklare hvilke problem du har.
Prøv lige med følgende script (måske havde jeg et " " omrking kategoriid'et, som ikke burde være der):
<% Dim seperator Dim i Dim debug
debug = True 'Kan ændres til false for at skjule debug informationer
If debug = True Then Response.wirte "Start loop<br>"
Do While Not objRec2.EOF
If debug = True Then Response.wirte "i = " & i & "<br>"
If i < 5 Then Response.Write seperator 'Ved første loop er den tom seperator = ", " Else Response.Write "..." If debug = True Then Response.wirte "Exit loop<br>" Exit Do End If
If debug = True Then Response.wirte "id = " & objRec2("Id") & "<br>" If debug = True Then Response.wirte "u_kategoriNavn = " & objRec2 _ ("u_kategoriNavn") & "<br>"
'Jeg har ændret denne linje til det du oprindligt skrev... men den 'syntax indeholder mange fejlmuligheder i modsæning til min 'omrskrivning, som i øvrigt også giver rigtig farvekodning i 'udviklingsværktøjer som f.eks. Visual InterDev. response.write "<a onfocus=""this.blur()"" href=""se_denne_side.asp?kategori=" & objRec2("Id") & """>" & objRec2("u_kategoriNavn") & "</a>"
i = i + 1 objRec2.movenext Loop %>
Hvis det virker i en af hovedkategorieren, har du så gjort dig ulejlighed med at undersøge hvad forskellen på den der virker og de der ikke gør er? Prøv at skrive en "stil" om hvad du prøver, hvilket resultat du får osv. Jeg/vi har jo ingen chance for at gætte hvad der går galt, når du ikke skriver noget. Det er ok, at være nybegynder, men selv eksperter er ikke tankelæser. Prøv evt. at sende lidt mere af dit scipt, incl. din database adgang, og html kode. Evt. hele asp siden.
Har du nogle specielle data i din database? Indeholder dine tekster " eller ' tegn?
ok, jeg har lige testet denne: 20/10-2002 12:43:11, men jeg får altså en masse fejl på den, - som jeg gerne vil fortælle på, men jeg er lidt mere inde i denne:
<% Lobs = 8 ' her kan du skrive det antal gange den skal loope
For X = 1 TO int(Lobs) If NOT objRec2.EOF Then response.write "<a onfocus=""this.blur()"" href=""se_denne_side.asp?kategori=" & objRec2("Id") & """>" & objRec2("u_kategoriNavn") & "</a>" If X < int(Lobs) Then response.write ", " Else response.write "..." End IF objRec2.movenext End If NEXT %>
Og vil derfor helst fortsætte med at bruge den - håber du forstår :)
Jeg har også prøvet denne: 20/10-2002 12:52:28 -men her sker igen det at, den bliver udskrevet rigtigt når der fx er mere end 5 opster i db'en!
Så ser det sådan ud:
post1, post2, post3, post4, post5... (juhhh)
Men når der fx er 3 poster ser det sådan ud:
post1, post2, post3, (øvv)
skulle se sådan ud:
post1, post2, post3 (altså uden komma)
Er det noget du kan få til at virke ved at bruge det script jeg lige har skrevet ovenfor??
Ja jeg er ikke meget for det, for jeg mener det er forkeret at loope et bestemt antal gange, når antallet af rækker ikke er garanteret. Men here goes:
<% Lobs = 8 ' her kan du skrive det antal gange den skal loope
For X = 1 To Int(Lobs) If NOT objRec2.EOF Then Response.Write "<a onfocus=""this.blur()"" href=""se_denne_side.asp?kategori=" & objRec2("Id") & """>" & objRec2("u_kategoriNavn") & "</a>"
'Flyt denne her op, så vi kan teste om .EOF = True objRec2.movenext
'Tilføj denne linje, så der ikke tilføjes "..." eller "," hvis dette var den sidste post If objRec2.EOF Then Exit For
If X < Int(Lobs) Then Response.Write ", " Else Response.Write "..." End If End If Next %>
Jeg ved godt at det ikke er så smart at loope et bestemt antal gange, men det er også kun lige i dette tilfælde at jeg gør det, andre steder på sitet, bliver det loopet til .EOF - men tak , for det var lige det jeg manglede, nu virker det :)
Men du skal jo lige klikke i radiebuttom svar, så jeg kan give dig nogle point, med mindre du ikke vil have nogle!!
Synes godt om
Ny brugerNybegynder
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.