webForumDet fria alternativet

Dela upp fältinnehåll på flera sidor!

ASP

22 svar · 622 visningar · startad av Asa

Medlem sedan dec. 20011 860 inlägg
Frågan#1

Jag vill dela upp innehållet i ett PM fält ifrån en databas på flera sidor. Hur gör jag då? Ex 2000 tecken på en sida!

Medlem sedan feb. 20022 594 inlägg
#2

Använd Mid() för att dela upp, sen kan du ju använda en session eller querystringen för att skicka vidare till nästa sida hur många tecken du visat.

Medlem sedan okt. 20005 273 inlägg
#3
[red]

If Request.QueryString("page") = "" then
     Response.Write Left(objRS("pm"), 2000)
     page = 1
Else
     page = Cint(Request.QueryString("page")) --1
     Response.Write mid(objRS("pm"), (page*2000), ((page + 1) * 2000))
End If
If Len(objRS("pm")) > (page * 2000) then
     Response.write "<a href="&Request.ServerVaribles("SCRIPT_NAME")&"?page="&page&">fortsätt>></a>"
End If[/red]

Men jag skulle nog hitta på nått räkna ord script (har för mig att det finns nått sånt i script arkiet........

Och detta är ju helt otestat ;)
<redigerat>jag gjorde om detta lite......och detta är ju ännu mer otestat</redigerat>
mvh icaaq

Medlem sedan juli 20011 084 inlägg
#4

edit: För sent :OO

Medlem sedan feb. 20022 594 inlägg
#5
--1

icaaq :) Nu är du fast i träsket mellan C# och ASP, VBScript va? :)

Menar du --1 så är det smartaste nog att skriva +1 istället :)

Medlem sedan okt. 20005 273 inlägg
#6

Ekström skrev:

--1

icaaq :) Nu är du fast i träsket mellan C# och ASP, VBScript va? :)

Menar du --1 så är det smartaste nog att skriva +1 istället :)

Det funkar ju ;)

Medlem sedan feb. 20022 594 inlägg
#7

Det gör det, men om jag ska vara ärlig tror jag faktiskt inte det var riktigt meningen. :) Trodde inte det skulle fungera i varken C# eller ASP, men det funkade ju fint med dubbla negationer i ASP.

Medlem sedan juni 200032 967 inlägg
#8

Det är klart att det fungerar, men det är inte rätt. Vill man att saker och ting skall adderas, då använder man additionstecknet, plus. Det ser ut så här: +

Man skriver inte kod med armbågarna, bara för att man kan. ;)

Mvh,

Medlem sedan feb. 20022 594 inlägg
#9

Haha. :e

Jag har sagt det förr och säger det igen; icaaq är mästaren på hårdkodning!

(Nu har ju detta förstås inget med dagens bravader att göra, men han skriver alltid med armbågarna, som Marsvinet uttrycker det :) )

Medlem sedan dec. 200012 464 inlägg
#10

Det brukar vara problem med flera referenser till kolumner av typen PM i ett recordset. Det brukar vara bäst att plocka ut dom i en lokal variabel.

pm = objRS("pm")
If Request.QueryString("page") = "" then
     Response.Write Left(pm, 2000)
     page = 1
Else
     page = Cint(Request.QueryString("page")) --1
     Response.Write mid(pm, (page*2000), ((page + 1) * 2000))
End If
If Len(pm) > (page * 2000) then
     Response.write "<a href="&Request.ServerVaribles("SCRIPT_NAME")&"?page="&page&">fortsätt>></a>"
End If

-- är bara för att tala om för VB att man vill göra aritmetik och inte strängkonkatenering.

Medlem sedan juni 200032 967 inlägg
#11

LarsG skrev:

-- är bara för att tala om för VB att man vill göra aritmetik och inte strängkonkatenering.

Jo, men det är mer korrekt att se till att variablerna har rätt subtyper redan från början. IMHO. :)

Mvh,

Medlem sedan dec. 20011 860 inlägg
#12

Funkar inge bra :( Och sen vill jag ha << tillbaka länk oxå!

http://www.gruvsjo.com/demo/patrikJ/

Medlem sedan dec. 200012 464 inlägg
#13

Vad händer? Fel, eller ?

Tillbakalänk

pm = objRS("pm")
If Request.QueryString("page") = "" then
     page = 1
Else
     page = Cint(Request.QueryString("page")) 
end if
textLength = len(pm)
if  textLength > (page-1) * 2000 then
    Response.Write mid(pm, (page-1)*2000, 2000))
else
    Response.write "Slut"
end if

if  page > 1 then 
    Response.write "<a href="&Request.ServerVaribles("SCRIPT_NAME")&"?page="&page-1&">Föregående>></a>"
end if

If   textLength > (page * 2000) then
     Response.write "<a href="&Request.ServerVaribles("SCRIPT_NAME")&"?page="&page+1&">Nästa>></a>"
End If

Jag ändrade lite också.

Medlem sedan dec. 20011 860 inlägg
#14

Slut på programsats förväntas.

Response.Write mid(pm, (page-1)*2000, 2000))

Blev inge bättre fast jag tog bort )

Nu blev det detta fel

Ogiltigt proceduranrop eller argument.: 'mid'

Medlem sedan okt. 20005 273 inlägg
#15
[red]Response.Write mid(pm, ((page-1)*2000), 2000)[/red]
Medlem sedan dec. 20011 860 inlägg
#16

Fortfarande

Ogiltigt proceduranrop eller argument.: 'mid'

Medlem sedan okt. 20005 273 inlägg
#17
[red]pm = objRS("pm")
If Request.QueryString("page") = "" OR Request.QueryString = 0 then
     page = 1
Else
     page = Cint(Request.QueryString("page")) 
end if
textLength = len(pm)
If (page-1) = 0 Then
    Response.Write Left(pm, 2000)
Else
    if  textLength > (page-1) * 2000 then
        Response.Write mid(pm, (page-1)*2000, 2000))
    else
        Response.write "Slut"
    end if
End If

if  page > 1 then 
    Response.write "<a href="&Request.ServerVaribles("SCRIPT_NAME")&"?page="&page-1&">Föregående>></a>"
end if

If   textLength > (page * 2000) then
     Response.write "<a href="&Request.ServerVaribles("SCRIPT_NAME")&"?page="&page+1&">Nästa>></a>"
End If[/red]

Så kanske....igen otestat

Medlem sedan dec. 20011 860 inlägg
#18

Tackar men så här blev det för att funka men hur gör jag för att inte dela texten mitt i ett ord:

pm = Replace(objRS("texten"), vbCrLf, "<BR>")
If Request.QueryString("page") = "" then
     page = 1
Else
     page = Cint(Request.QueryString("page")) 
end if
textLength = len(pm)
If (page-1) = 0 Then
    Response.Write Left(pm, 2000)
Else
    if  textLength > (page-1) * 2000 then
        Response.Write mid(pm, ((page-1)*2000), 2000)
    else
        Response.write "Slut"
    end if
End If
    Response.write "<p>"
if  page > 1 then 
    Response.write "<a href=index.asp?page="&page-1&">Föregående</a> &nbsp;"
end if

If   textLength > (page * 2000) then
     Response.write "<a href=index.asp?page="&page+1&">Nästa</a>"
End If
Medlem sedan aug. 20021 752 inlägg
#19

Har inte läst hela topicen men tror jag kan svara :)

Sök efter närmaste punkt efter 2000 tecken och klipp av där den punkten är.

InStr(2000,pm,".")

Denna kod retunerar var punkten finns, självklart får du öka 2000 varje gång med det värdet som du fick gången innan osv, precis som du har gjort tidigare men lite mer dynamiskt.

/Viktor

Medlem sedan dec. 200012 464 inlägg
#20

Det är inte så enkelt.

I stället för att skicka pagenummer mellan sidaorna så måste du skicka offset. Dvs om du visar 1993 tecken på första sidan så måste du veta att du skall fortsätta på offset 1994 (eller 1995) på nästa sida.

257 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)