Avatar billede sevelsted Nybegynder
14. september 2005 - 16:00 Der er 55 kommentarer og
1 løsning

Hjælp til paging

Hej Eksperter

Jeg er i gang med at lave et design hvor teksten ikke har så meget plads.

Det jeg gerne vil have en af jer til at hjælpe med, er at paging, så når der ikke er mere plads på siden, så laver scriptet selv flere sider…
Jeg har set flere eksempler på paging, men ikke lige nogen, hvor man deler tekst op.

Jeg håber at der er en af jer der vil hjælpe mig med at sætte paging ind på denne side:

http://www.lumination.dk/test/default.asp?emne=leucos&bill=sortiment

”Der er lavet tekst på siden for at vise nogenlunde hvordan det skal se ud”


Her er koden fra siden.
------------------------------------------------------

<%
Set Query = Conn.Execute("SELECT * From undersider Where emne = '" & emne & "' ")
%>
<% Do until Query.EOF%>
<table  WIDTH="350" HEIGHT="100%" cellspacing="0" cellpadding="0" border="0">
<tr valign="top"><td id="auto">
<DIV style="OVERFLOW: auto; HEIGHT: 100%">

<table WIDTH="350" HEIGHT="100%" cellspacing="0" cellpadding="0" border="0" valign="top">
  <tr valign="top">
    <td width="66%" HEIGHT="30" colspan="2" valign="center"><br><h1><%=Query("overskrift")%></h1></td>
    <td width="34%" HEIGHT="30" align="right" valign="center"><a href="java script:history.back(-1)">Tilbage</a></td>
  </tr>
  <tr>
    <td width="100%" colspan="3">
    <br>
<h2><%=Query("indhold")%></h2>
    </td>
  </tr>
  <tr>
    <td width="33%" HEIGHT="10" align="left"><<-- Tilbage</td>
    <td width="33%" HEIGHT="10" align="center">1 2 3 4</td>
    <td width="34%" HEIGHT="10" align="right">Frem -->></td>
  </tr>
</table>

</div>
</td>
</tr>
</table>
<%Query.MoveNext
loop
%>


------------------------------------------------------

Jeg håber der er en der kan hjælpe…

\\-- Sevelsted
Avatar billede nielle Nybegynder
14. september 2005 - 17:28 #1
Hvad mener du med "ikke er mere plads på siden"? Der er jo temmeligt meget plads på en HTML-side.

Hvis du mener at hver HTML-side skal kunne udskrives på en enkelt A4-side, så er opgaven temmelig svær, for ikke at sige umulig. Dette afhænger nemlig bl.a. af opsætningen på den printer som brugeren har (og denne oplysning er jo ikke tilgængelig hos serveren hvor ASP-scriptet køre), samt af den skriftstørrelse brugeren benytter i sin browser. Selv hvis det kunne lade sig gøre så ville det endda også være nogle meget tunge peregninger som ville sænke load-tiden på din side.

Hvis du i stedet blot ønsker at der skal vises f.eks. 20 poster pr. side, så kan det sagtens lade sig gøre.
Avatar billede misimo Nybegynder
14. september 2005 - 17:30 #2
Du kan jo prøve den her fra activedeveloper.dk
http://activedeveloper.dk/artikler/default.asp?articleid=31

Bruger den selv, virker fint.
Avatar billede sevelsted Nybegynder
14. september 2005 - 17:35 #3
Nielle > Hvis du klikker på linket, og ser siden, vil de kunne se hvad jeg taler om, grunden til at teksten kan fylde formeget, skyldes at tabellen teksten str i ikke er ret stor..

misimo > Jeg har kigget på scriptet som Knappen har lavet, men det flere links han trægger ud af en database, jeg trækker kun et felt ud, men et felt med for meget tekst til kun at kunne fylde en side...

Jeg skylder også at sige at jeg gerne vil undgå scroll
Avatar billede nielle Nybegynder
14. september 2005 - 18:29 #4
De <br>-tags som står i teksten ... kommer de fra selve databasen eller hvad?
Avatar billede sevelsted Nybegynder
14. september 2005 - 19:41 #5
JA De er skrevet i databasen.
Avatar billede nielle Nybegynder
14. september 2005 - 20:32 #6
Ifølge din kode kan du forvente at der går mere end en post pr. side - ellers er der jo ingen grund til at have en Do-Until løkke.

Men i dit link indgår der faktisk kun en enkelt post.

Forholder det sig altid sådan? Een side = een post?

... og så er det vel egentlig teksten i denne ene post, som skal fordeles over flere sider eller hvad?
Avatar billede sevelsted Nybegynder
15. september 2005 - 08:45 #7
Ja, enig, løkken er overflødig :-)

Og ja, det er helt rigtig set, at det er teksten i den end post
"<%=Query("indhold")%></"
Der skal deles ud på flere sider..

Er det noget du kan hjælpe med, kan det i det heletaget lade sig gøre ?
Avatar billede nielle Nybegynder
15. september 2005 - 10:20 #8
Hvis I selv sørger for at indsætte <br>-tags på en sådan måde at der gælder at:

1 <br>-tag = 1 linje

- altså sådan forstået at der ikke kommer andre linjeskift ind i teksten, f.eks. pga. at linjerne bliver for lange, så er det ikke helt umuligt at lave en løsning. Det bliver nok ikke nogen 100% fejlfri løsning, men det vil sikkert virker ok i langt de fleste tilfælde.

Løsningen består i at:

1) Trække teksten ud af databasen.
2) Splitte teksen op ved <br>-tags. Dette gøres ved brug af Split-funktionen.
3) Derefter har du teksten i et array – en arraypost pr. tekstlinje.
4) Du skal have defineret en konstant, som angiver hvor mange linjer der kan være på en side; Hvis antallet af poster i arrayet fra 3 overstiger denne konstant, så skal der m.a.o. pages.
5) Denne del burde være rimelig nem at implementere på stort set samme måde som når man laver paging på posterne fra en database – der laves bare paging over et array i stedet for et recordset.

Lyder det som en fornuftig løsning?
Avatar billede sevelsted Nybegynder
15. september 2005 - 11:12 #9
Det lyder som en mulighed.

Men hvis jeg ikke bruger <br> tags i databasen, kan man så lave et script, som opdeler teksten i flere sider, ekx. ved at bestemme hvormange linier der maksimalt må være på siden, eller evt. antal tegn...?
Avatar billede nielle Nybegynder
15. september 2005 - 11:26 #10
Problemet er at du så skal til selv at beregne dig frem til hvor at der bliver indsat linjeskift.

Dette afhænger af skriftstørrelse, de enkelte bogstaver i ordene  (”iii” fylder meget mindre end ”www”), og hvor at der er mellemrum i ordene. Desuden skal der tages højde for at nogle ord måske er for brede til at kunne være på en enkelt linje. Alt dette bliver pludseligt til nogle meget besværlige beregninger, og det bliver et rent helvede hvis du så senere ønsker at skifte til en anden skrifttype eller størrelse.

Ved selv at indsætte <br>-tags der hvor der skal skiftes linje, spare du dig alt dette besvær.

Et relateret spørgsmål: Kan du risikere at der skal indgå billeder eller anden grafik midt i din tekst?
Avatar billede sevelsted Nybegynder
15. september 2005 - 19:52 #11
Nej, der skal kun være tekst.

Kan det lade sig gøre, hvis man bestemmer sig for at der ekx. skal være 15 linier på hver side...?
Avatar billede nielle Nybegynder
15. september 2005 - 20:26 #12
Problemet er ikke at bestemme sig til hvor mange linjer der må være pr. side - det er sådan set bare at tælle op og så se hvornår det bliver for mange.

Nej, problemet består i at beregne sig til hvor mange linjer en given blok af tekst vil strække sig over.
Avatar billede sevelsted Nybegynder
27. september 2005 - 10:04 #13
Hvis scriptet bliver lavet, kan jeg så ikke rette mig ind efter det ?

Ellers må jeg lave en max. matal tegn, og tælle ud fra det jegn som fylder mest...

Jeg vil nemmelig gerne det til at virke...
Avatar billede nielle Nybegynder
27. september 2005 - 21:46 #14
Hvor meget er du selv i stand til at kode? Jeg vil meget gerne hjælpe dig rigtig meget, men jeg vil altså ikke kode det alt sammen for dig. Det er hjælp til selvhjælp.

Som sagt ville det være meget simpelt at løse problemet, hvis I selv kunne indsætte <br>-tags der hvor der skulle være linjeskift. Men det er altså en noget større opgave, hvis scriptet selv skal regne sig frem til det. Foruden at programmerings-opgaven altså bliver noget mere omfattende, så har det også den uheldige konsekvens at din side bliver tungere at loade og at serveren bliver langt mere belastet. Jeg synes at det er værd at overveje om det er det værd.
Avatar billede sevelsted Nybegynder
28. september 2005 - 16:21 #15
Jeg kan selv lave noget af det, hvis jeg bliver guidet i den rigtige retning.

Det er helt fint med mig selv at sætte <br> tagsene, og hvis det er lettere sådan, så kører v bare på :-)
Avatar billede nielle Nybegynder
28. september 2005 - 19:13 #16
Når du har <br>-tags i din tekst-streng, kan du bruge Split() til at lave et array. Og har du først et array så er det blot at lave Paging på dette. Dette kunne f.eks. gøres over denne skabelon:

<%
Tekst = "Den italienske familievirksomhed Leucos blev grundlagt i 1962<br>og har dermed over 40 års erfaring med produktion af belys-<br>ningsprodukter af

meget høj kvalitet.<br><br>Leucos bygger på den århundredgamle, venetianske glasmager-<br>tradition, som har sin oprindelse på øen Murano.<br><br>Lamperne

fra Leucos er designet af Italiens førende arkitekter,<br>Jorge Pensi, Matteo Thun, Renato Toso m.fl.,<br><br>Alle glasskærme er fremstillet i 4 lag

mundblæst glas: ét lag med<br>glassets farve, ét lag opalglas for optimal refleksion af lyset inden<br>i skærmen og til sidst det yderste lag på begge sider,

det klarer<br>krystalglas, der sikre at de flotte farver bevares i uendelig tid.<br><br>Hvis du søger variation i design og typer af belysning, så

er<br>Leucos et godt sted at begynde.<br><br>Hos Leucos går nutidigt design hånd i hånd med den højeste<br>kvalitet i materialer og håndværksmæssig

udførelse, så hver<br>enkelt lampe er et uforligneligt kunstværk."

Dim TekstArr
TekstArr = Split(Tekst, "<br>")

' Paging

LinjerPrSide = 8

Offset = Request.QueryString("Offset")
If Offset = "" Then Offset = 0 Else Offset = CInt(Offset)

FlereSider = False
LinjeNr = 0
For Idx=0 To UBound(TekstArr)
    LinjeNr = LinjeNr+1

    If LinjeNr > Offset+LinjerPrSide Then
        FlereSider = True
        Exit For
    End If

    If LinjeNr > Offset Then
        Response.Write LinjeNr & ": " & TekstArr(Idx) & "<br>"
    End If
Next

If Offset > 0 Then
    Response.Write "<a href='?Offset=" & Offset-LinjerPrSide & "'>Forrige side</a>"
End If

If FlereSider Then
    Response.Write "<a href='?Offset=" & Offset+LinjerPrSide & "'>Næste side</a>"
Else
    Response.Write "DEBUG: " & LinjeNr & " " & UBound(TekstArr)+1
End If
%>
Avatar billede sevelsted Nybegynder
29. september 2005 - 17:31 #17
Det ser super ud, jeg sidder lige og prøver at finde hoved og hale i hvor jeg skal sætte de forskellige ting ind, i forhold til det kodning jeg har lavet.
(Se spørgsmålet)

???
Er det mig der er dum :-) ?
Avatar billede nielle Nybegynder
29. september 2005 - 18:19 #18
Nej da. :^)

Jeg har med vilje lavet det ovenstående script så simpelt som muligt - der er f.eks. ikke noget database indblandet. Pointen er at vi helst lige skal have selve pagingen på plads før at vi pakker det ind i resten af løsningen.

Teksten er i eksemplet hårdkodet ind i scriptet. Den skal selvfølgelig hentes fra databasen. Det kunne se nogenlunde sådan her ud:

<%
Set Query = Conn.Execute("SELECT * FROM undersider WHERE emne = '" & emne & "'")

If Not Query.EOF Then
    Tekst = Query("indhold")

    ' Her kommer så resten af paging-scriptet.
End If
%>

Dit nuværende URL ser sådan her ud:

http://www.lumination.dk/test/default.asp?emne=leucos&bill=sortiment

- og der skal nu have et Offset på.

http://www.lumination.dk/test/default.asp?emne=leucos&bill=sortiment&Offset=0

Det opnår du – så vidt jeg kan bedømme - med disse to Forrige- og Næste-link i bunden af paging-scriptet.

If Offset > 0 Then
    Response.Write "<a href='?emne=" & emne & "&bill=" & bill & "&Offset=" & Offset-LinjerPrSide & "'>Forrige side</a>"
End If

If FlereSider Then
    Response.Write "<a href='?emne=" & emne & "&bill=" & bill & "&Offset=" & Offset+LinjerPrSide & "'>Næste side</a>"
End If
Avatar billede sevelsted Nybegynder
29. september 2005 - 18:42 #19
Jeh har lige prøvet at sætte det ind:

Såden ser det ud...

<%
Set Query = Conn.Execute("SELECT * From undersider Where emne = '" & emne & "' ")
%>
<% Do until Query.EOF%>
<table  WIDTH="350" HEIGHT="100%" cellspacing="0" cellpadding="0" border="0">
<tr valign="top"><td id="auto">
<DIV style="OVERFLOW: auto; HEIGHT: 100%">

<table WIDTH="350" HEIGHT="100%" cellspacing="0" cellpadding="0" border="0" valign="top">
  <tr valign="top">
    <td width="66%" HEIGHT="30" colspan="2" valign="center"><br><h1><%=Query("overskrift")%></h1></td>
    <td width="34%" HEIGHT="30" align="right" valign="center"><a href="java script:history.back(-1)">Tilbage</a></td>
  </tr>
  <tr>
    <td width="100%" colspan="3">
    <br>
<h2><%=Query("indhold")%>

<%
LinjerPrSide = 8

Offset = Request.QueryString("Offset")
If Offset = "" Then Offset = 0 Else Offset = CInt(Offset)

FlereSider = False
LinjeNr = 0
For Idx=0 To UBound(TekstArr)
    LinjeNr = LinjeNr+1

    If LinjeNr > Offset+LinjerPrSide Then
        FlereSider = True
        Exit For
    End If

    If LinjeNr > Offset Then
        Response.Write LinjeNr & ": " & TekstArr(Idx) & "<br>"
    End If
Next
If Offset > 0 Then
    Response.Write "<a href='?emne=" & emne & "&bill=" & bill & "&Offset=" & Offset-LinjerPrSide & "'>Forrige side</a>"
End If

If FlereSider Then
    Response.Write "<a href='?emne=" & emne & "&bill=" & bill & "&Offset=" & Offset+LinjerPrSide & "'>Næste side</a>"
End If
%></h2>
    </td>
  </tr>
  <tr>
    <td width="33%" HEIGHT="10" align="left"><<-- Tilbage</td>
    <td width="33%" HEIGHT="10" align="center">1 2 3 4</td>
    <td width="34%" HEIGHT="10" align="right">Frem -->></td>
  </tr>
</table>

</div>
</td>
</tr>
</table>
<%Query.MoveNext
loop
%>


Men jeg får denne fejl:
Se link..    http://www.lumination.dk/test/default.asp?emne=leucos&bill=sortiment&Offset=0
Avatar billede nielle Nybegynder
29. september 2005 - 19:02 #20
Du skal i hvert fald starte med at slette denne her udskrift:

<%=Query("indhold")%>

- sådan at vi lidt bedre kan se hvad der sker.
Avatar billede sevelsted Nybegynder
29. september 2005 - 19:05 #21
Sådan.
Avatar billede nielle Nybegynder
29. september 2005 - 19:14 #22
Underligt... Det ser ud til at være ved linjen:

LinjerPrSide = 8

Har du sat dit script op sådan at du *skal* Dim'e alle variable inden at du begynder at nruge dem?
Avatar billede sevelsted Nybegynder
29. september 2005 - 19:16 #23
Ja, og jeg har skrevet dem ind under Dim
Avatar billede sevelsted Nybegynder
29. september 2005 - 19:17 #24
Jeg har dette i linie 27:

For Idx=0 To UBound(TekstArr)
Avatar billede nielle Nybegynder
29. september 2005 - 19:54 #25
Ok, med så skyldes fejlen jo nok at du manglere at få defineret dit TekstArr:

Dim TekstArr
TekstArr = Split(Tekst, "<br>")
Avatar billede sevelsted Nybegynder
29. september 2005 - 20:08 #26
Ingen forskel:

Her er det der er Dim'et:

Dim Conn, intPage, emne, bill, butikken, sortiment, kontakt, nyhedsbrev, strDSN, Query, DSN, strMode, tempConn, strError, strNavn, strEmail, strKommentar, strSQL, strAddLine, myConn, dtmDato, rs, omlumination, email, LinjerPrSide, Offset, FlereSider, LinjeNr, TekstArr, UBound
Avatar billede nielle Nybegynder
29. september 2005 - 20:32 #27
Tekst = Query("indhold")
Dim TekstArr
TekstArr = Split(Tekst, "<br>")
Avatar billede sevelsted Nybegynder
30. september 2005 - 07:01 #28
???
Avatar billede nielle Nybegynder
30. september 2005 - 08:15 #29
Dit nuværende script (29/09-2005 18:42:00) starter sådan her:

<%
LinjerPrSide = 8

Offset = Request.QueryString("Offset")
If Offset = "" Then Offset = 0 Else Offset = CInt(Offset)

FlereSider = False
LinjeNr = 0
For Idx=0 To UBound(TekstArr)
    ...

Det vil sige et du begynder at bruge variablen TekstArr uden at den er sat til noget - og det fejler selvfølgeligt. Din kode skal derfor ændres til:

<%
Tekst = Query("indhold")
Dim TekstArr
TekstArr = Split(Tekst, "<br>")

LinjerPrSide = 8

Offset = Request.QueryString("Offset")
If Offset = "" Then Offset = 0 Else Offset = CInt(Offset)

FlereSider = False
LinjeNr = 0
For Idx=0 To UBound(TekstArr)
    ...
Avatar billede sevelsted Nybegynder
30. september 2005 - 09:18 #30
Så ser koderne sådan ud såm her under, men nu kan siden slet ikke vises.. :-(


<%
Set Query = Conn.Execute("SELECT * From undersider Where emne = '" & emne & "' ")
%>
<% Do until Query.EOF%>
<table  WIDTH="350" HEIGHT="100%" cellspacing="0" cellpadding="0" border="0">
<tr valign="top"><td id="auto">
<DIV style="OVERFLOW: auto; HEIGHT: 100%">

<table WIDTH="350" HEIGHT="100%" cellspacing="0" cellpadding="0" border="0" valign="top">
  <tr valign="top">
    <td width="66%" HEIGHT="30" colspan="2" valign="center"><br><h1><%=Query("overskrift")%></h1></td>
    <td width="34%" HEIGHT="30" align="right" valign="center"><a href="java script:history.back(-1)">Tilbage</a></td>
  </tr>
  <tr>
    <td width="100%" colspan="3">
    <br>
<h2>

<%

Tekst = Query("indhold")
Dim TekstArr
TekstArr = Split(Tekst, "<br>")


LinjerPrSide = 8

Offset = Request.QueryString("Offset")
If Offset = "" Then Offset = 0 Else Offset = CInt(Offset)

FlereSider = False
LinjeNr = 0
For Idx=0 To UBound(TekstArr)
    LinjeNr = LinjeNr+1

    If LinjeNr > Offset+LinjerPrSide Then
        FlereSider = True
        Exit For
    End If

    If LinjeNr > Offset Then
        Response.Write LinjeNr & ": " & TekstArr(Idx) & "<br>"
    End If
Next
If Offset > 0 Then
    Response.Write "<a href='?emne=" & emne & "&bill=" & bill & "&Offset=" & Offset-LinjerPrSide & "'>Forrige side</a>"
End If

If FlereSider Then
    Response.Write "<a href='?emne=" & emne & "&bill=" & bill & "&Offset=" & Offset+LinjerPrSide & "'>Næste side</a>"
End If
%></h2>
    </td>
  </tr>
  <tr>
    <td width="33%" HEIGHT="10" align="left"><<-- Tilbage</td>
    <td width="33%" HEIGHT="10" align="center">1 2 3 4</td>
    <td width="34%" HEIGHT="10" align="right">Frem -->></td>
  </tr>
</table>

</div>
</td>
</tr>
</table>
<%Query.MoveNext
loop
%>
Avatar billede nielle Nybegynder
30. september 2005 - 17:32 #31
Prøv med dette her:

<%
emne = Request.QueryString("emne")
bill = Request.QueryString("bill")

Set Query = Conn.Execute("SELECT * FROM undersider WHERE emne = '" & emne & "'")
If Not Query.EOF Then
%>
<table WIDTH="350" HEIGHT="100%" cellspacing="0" cellpadding="0" border="0">
    <tr valign="top">
        <td id="auto">
            <div style="OVERFLOW: auto; HEIGHT: 100%">
                <table WIDTH="350" HEIGHT="100%" cellspacing="0" cellpadding="0" border="0" valign="top">
                    <tr valign="top">
                        <td width="66%" HEIGHT="30" colspan="2" valign="center">
                            <h1><% =Query("overskrift") %></h1>
                        </td>
                        <td width="34%" HEIGHT="30" align="right" valign="center">
                            <a href="java script:history.back(-1)">Tilbage</a>
                        </td>
                    </tr>
                    <tr>
                        <td width="100%" colspan="3">
                            <h2>
<%
    Tekst = Query("indhold")
    Dim TekstArr
    TekstArr = Split(Tekst, "<br>")

    LinjerPrSide = 8

    Offset = Request.QueryString("Offset")
    If Offset = "" Then Offset = 0 Else Offset = CInt(Offset)

    FlereSider = False
    LinjeNr = 0
    For Idx=0 To UBound(TekstArr)
        LinjeNr = LinjeNr+1

        If LinjeNr > Offset+LinjerPrSide Then
            FlereSider = True
            Exit For
        End If

        If LinjeNr > Offset Then
            Response.Write LinjeNr & ": " & TekstArr(Idx) & "<br>"
        End If
    Next

    If Offset > 0 Then
        Response.Write "<a href='?emne=" & emne & "&bill=" & bill & "&Offset=" & Offset-LinjerPrSide & "'>Forrige side</a>"
    End If

    If FlereSider Then
        Response.Write "<a href='?emne=" & emne & "&bill=" & bill & "&Offset=" & Offset+LinjerPrSide & "'>Næste side</a>"
    End If
%>
                            </h2>
                        </td>
                    </tr>
                </table>
            </div>
        </td>
    </tr>
</table>
<%
End If
%>
Avatar billede nielle Nybegynder
30. september 2005 - 17:36 #32
Du skal fjerne:

Tekst = Query("indhold")
Dim TekstArr  <----------------------- Den der linje
TekstArr = Split(Tekst, "<br>")

- hvis du allerede har Dim'et den andet sted.
Avatar billede sevelsted Nybegynder
01. oktober 2005 - 06:52 #33
Jeg fik denne fejl med det nye :


Microsoft VBScript runtime error '800a000d'

Type mismatch

/test/sider/lysendepoesi.asp, line 36


Linie 36:

    For Idx=0 To UBound(TekstArr)
Avatar billede nielle Nybegynder
01. oktober 2005 - 07:19 #34
Hvordan ser din kode ud nu? Og har du stadig TextArr dim'et på den måde du angav i 29/09-2005 20:08:17?
Avatar billede sevelsted Nybegynder
01. oktober 2005 - 08:46 #35
Ja, TextArr er dimmet på index siden, som 29/09-2005 20:08:17.



Koden ser sådan ud :

<%
emne = Request.QueryString("emne")
bill = Request.QueryString("bill")

Set Query = Conn.Execute("SELECT * FROM undersider WHERE emne = '" & emne & "'")
If Not Query.EOF Then
%>
<table WIDTH="350" HEIGHT="100%" cellspacing="0" cellpadding="0" border="0">
    <tr valign="top">
        <td id="auto">
            <div style="OVERFLOW: auto; HEIGHT: 100%">
                <table WIDTH="350" HEIGHT="100%" cellspacing="0" cellpadding="0" border="0" valign="top">
                    <tr valign="top">
                        <td width="66%" HEIGHT="30" colspan="2" valign="center">
                            <h1><% =Query("overskrift") %></h1>
                        </td>
                        <td width="34%" HEIGHT="30" align="right" valign="center">
                            <a href="java script:history.back(-1)">Tilbage</a>
                        </td>
                    </tr>
                    <tr>
                        <td width="100%" colspan="3">
                            <h2>
<%
    Tekst = Query("indhold")

    TekstArr = Split(Tekst, "<br>")

    LinjerPrSide = 8

    Offset = Request.QueryString("Offset")
    If Offset = "" Then Offset = 0 Else Offset = CInt(Offset)

    FlereSider = False
    LinjeNr = 0
    For Idx=0 To UBound(TekstArr)
        LinjeNr = LinjeNr+1

        If LinjeNr > Offset+LinjerPrSide Then
            FlereSider = True
            Exit For
        End If

        If LinjeNr > Offset Then
            Response.Write LinjeNr & ": " & TekstArr(Idx) & "<br>"
        End If
    Next

    If Offset > 0 Then
        Response.Write "<a href='?emne=" & emne & "&bill=" & bill & "&Offset=" & Offset-LinjerPrSide & "'>Forrige side</a>"
    End If

    If FlereSider Then
        Response.Write "<a href='?emne=" & emne & "&bill=" & bill & "&Offset=" & Offset+LinjerPrSide & "'>Næste side</a>"
    End If
%>
                            </h2>
                        </td>
                    </tr>
                </table>
            </div>
        </td>
    </tr>
</table>
<%
End If
%>
Avatar billede nielle Nybegynder
01. oktober 2005 - 09:35 #36
Prøv at tilføje Idx til dine dim'ere.
Avatar billede sevelsted Nybegynder
01. oktober 2005 - 11:59 #37
Samme resultat desværre :-(
Avatar billede nielle Nybegynder
01. oktober 2005 - 12:36 #38
Kunne du køre scriptet i 28/09-2005 19:13:02?
Avatar billede sevelsted Nybegynder
01. oktober 2005 - 12:40 #39
Jeg har lige prøvet igen med scriptet fra 28/09-2005 19:13:02 og nej det kan ikke vise siden :-(
Avatar billede nielle Nybegynder
02. oktober 2005 - 08:59 #40
Ok, men det virker ellers ok hos mig:

http://www.frip.dk/nielle/e648016.asp

Du skal dog lige være opmærksom på at Eksperten har gjort noget underligt med denne linje:

Tekst = "Den italienske ...

Det skal altsammen sales til en enkelt ***lang*** linje. Hvis du ikke allerede har gjort dette, så prøv lige med det igen.
Avatar billede sevelsted Nybegynder
08. oktober 2005 - 14:33 #41
Har du lavet det med udtræk fra en database...?
Avatar billede nielle Nybegynder
08. oktober 2005 - 16:03 #42
Nej, jeg har ikke lige nogen database ved hånden. Det burde nu heller ikke have nogen betydning?
Avatar billede sevelsted Nybegynder
10. oktober 2005 - 10:25 #43
:-(
Det virker ikke hos mig, her er koderne og linket:

http://www.lumination.dk/test/default.asp?emne=leucos&bill=sortiment


<%
emne = Request.QueryString("emne")
bill = Request.QueryString("bill")

Set Query = Conn.Execute("SELECT * FROM undersider WHERE emne = '" & emne & "'")
If Not Query.EOF Then
%>
<table WIDTH="350" HEIGHT="100%" cellspacing="0" cellpadding="0" border="0">
    <tr valign="top">
        <td id="auto">
            <div style="OVERFLOW: auto; HEIGHT: 100%">
                <table WIDTH="350" HEIGHT="100%" cellspacing="0" cellpadding="0" border="0" valign="top">
                    <tr valign="top">
                        <td width="66%" HEIGHT="30" colspan="2" valign="center">
                            <h1><% =Query("overskrift") %></h1>
                        </td>
                        <td width="34%" HEIGHT="30" align="right" valign="center">
                            <a href="java script:history.back(-1)">Tilbage</a>
                        </td>
                    </tr>
                    <tr>
                        <td width="100%" colspan="3">
                            <h2>
<%
    Tekst = Query("indhold")

    TekstArr = Split(Tekst, "<br>")

    LinjerPrSide = 8

    Offset = Request.QueryString("Offset")
    If Offset = "" Then Offset = 0 Else Offset = CInt(Offset)

    FlereSider = False
    LinjeNr = 0
    For Idx = 0 To UBound(TekstArr)
        LinjeNr = LinjeNr+1

        If LinjeNr > Offset+LinjerPrSide Then
            FlereSider = True
            Exit For
        End If

        If LinjeNr > Offset Then
            Response.Write LinjeNr & ": " & TekstArr(Idx) & "<br>"
        End If
    Next

    If Offset > 0 Then
        Response.Write "<a href='?emne=" & emne & "&bill=" & bill & "&Offset=" & Offset-LinjerPrSide & "'>Forrige side</a>"
    End If

    If FlereSider Then
        Response.Write "<a href='?emne=" & emne & "&bill=" & bill & "&Offset=" & Offset+LinjerPrSide & "'>Næste side</a>"
    End If
%>
                            </h2>
                        </td>
                    </tr>
                </table>
            </div>
        </td>
    </tr>
</table>
<%
End If
%>
Avatar billede nielle Nybegynder
10. oktober 2005 - 18:10 #44
Meget mystisk... for jeg kan tage den kode og kopiere den råt ind i min egen test, hvor den så fungere ved blot at ændre linjen:

Tekst = Query("indhold")

- til at tage teksten fra en streng i stedet for en database.

En mulighed er at du har et ulovligt tegn et eller andet sted - et tegn som ligner et almindelig whitespace og derfor effektivt er usynligt. Du kan prøve at fjerne alle indrykningerne og så se om skriptet pludselig kan køre.

Hvis dette ikke hjælper, er det tid til noget seriøs debugging-kode! Prøv f.eks. med dette sådan at man kan se hvor langt scriptet når før fejlen opstår:

<%
    Response.Write "DEBUG #1<br>"

    Tekst = Query("indhold")

    Response.Write "DEBUG #2<br>"

    TekstArr = Split(Tekst, "<br>")

    Response.Write "DEBUG #3<br>"

    LinjerPrSide = 8

    Response.Write "DEBUG #4<br>"

    Offset = Request.QueryString("Offset")

    Response.Write "DEBUG #5<br>"

    If Offset = "" Then Offset = 0 Else Offset = CInt(Offset)

    Response.Write "DEBUG #6<br>"

    FlereSider = False
    LinjeNr = 0

    Response.Write "DEBUG #7<br>"

    For Idx = 0 To UBound(TekstArr)
        Response.Write "DEBUG #8<br>"

        LinjeNr = LinjeNr+1

        Response.Write "DEBUG #9<br>"

        If LinjeNr > Offset+LinjerPrSide Then
            Response.Write "DEBUG #10<br>"

            FlereSider = True
            Exit For

            Response.Write "DEBUG #11<br>"
        End If

        Response.Write "DEBUG #12<br>"

        If LinjeNr > Offset Then
            Response.Write LinjeNr & ": " & TekstArr(Idx) & "<br>"
        End If

        Response.Write "DEBUG #13<br>"
    Next

    Response.Write "DEBUG #14<br>"

    If Offset > 0 Then
        Response.Write "<a href='?emne=" & emne & "&bill=" & bill & "&Offset=" & Offset-LinjerPrSide & "'>Forrige side</a>"
    End If

    Response.Write "DEBUG #15<br>"

    If FlereSider Then
        Response.Write "<a href='?emne=" & emne & "&bill=" & bill & "&Offset=" & Offset+LinjerPrSide & "'>Næste side</a>"
    End If

    Response.Write "DEBUG #16<br>"
%>
Avatar billede nielle Nybegynder
18. oktober 2005 - 22:40 #45
Hmmmm?
Avatar billede sevelsted Nybegynder
19. oktober 2005 - 09:15 #46
Sorry, har lige haft en computer crash... :-(

Men er oppe igen...

Jeg har indsat det sidste i stedet for det vi havede før, så nu ser koderne således ud:

<%
emne = Request.QueryString("emne")
bill = Request.QueryString("bill")

Set Query = Conn.Execute("SELECT * FROM undersider WHERE emne = '" & emne & "'")
If Not Query.EOF Then
%>
<table WIDTH="350" HEIGHT="100%" cellspacing="0" cellpadding="0" border="0">
    <tr valign="top">
        <td id="auto">
            <div style="OVERFLOW: auto; HEIGHT: 100%">
                <table WIDTH="350" HEIGHT="100%" cellspacing="0" cellpadding="0" border="0" valign="top">
                    <tr valign="top">
                        <td width="66%" HEIGHT="30" colspan="2" valign="center">
                            <h1><% =Query("overskrift") %></h1>
                        </td>
                        <td width="34%" HEIGHT="30" align="right" valign="center">
                            <a href="java script:history.back(-1)">Tilbage</a>
                        </td>
                    </tr>
                    <tr>
                        <td width="100%" colspan="3">
                            <h2>
<%
    Tekst = Query("indhold")

    TekstArr = Split(Tekst, "<br>")

    LinjerPrSide = 8

    Offset = Request.QueryString("Offset")
    If Offset = "" Then Offset = 0 Else Offset = CInt(Offset)

    FlereSider = False
    LinjeNr = 0
    For Idx = 0 To UBound(TekstArr)
        LinjeNr = LinjeNr+1

        If LinjeNr > Offset+LinjerPrSide Then
            FlereSider = True
            Exit For
        End If

        If LinjeNr > Offset Then
            Response.Write LinjeNr & ": " & TekstArr(Idx) & "<br>"
        End If
    Next

    If Offset > 0 Then
        Response.Write "<a href='?emne=" & emne & "&bill=" & bill & "&Offset=" & Offset-LinjerPrSide & "'>Forrige side</a>"
    End If

    If FlereSider Then
        Response.Write "<a href='?emne=" & emne & "&bill=" & bill & "&Offset=" & Offset+LinjerPrSide & "'>Næste side</a>"
    End If
%>
                            </h2>
                        </td>
                    </tr>
                </table>
            </div>
        </td>
    </tr>
</table>
<%
End If
%>
Avatar billede sevelsted Nybegynder
19. oktober 2005 - 09:19 #47
Sorry lille fejl, nu skulle den være rettet...
Fejl i linie 52
Avatar billede nielle Nybegynder
19. oktober 2005 - 09:25 #48
Fejler det? Hvad sker der?

... og hvis det fejler, har du så prøvet den debug-servion jeg postede 10/10-2005 18:10:20?
Avatar billede sevelsted Nybegynder
19. oktober 2005 - 09:31 #49
Det er med debug versionen, fra den 10/10

Det er ved linie 52 det er galt.

52    For Idx = 0 To UBound(TekstArr)
53        Response.Write "DEBUG #8<br>"
Avatar billede nielle Nybegynder
19. oktober 2005 - 17:56 #50
Jeg så lige i 29/09-2005 20:08:17 at du Dim'er UBound. Det skal du ikke... UBound er en funktion som eksistere i forvejen og ved at Dim'e den erstatter du denne funktion med en variabel - hvilket gør at funktionen så ikke kan bruges mere.
Avatar billede sevelsted Nybegynder
20. oktober 2005 - 10:16 #51
Ja ser du :-)
Så virker det :-)

Der er dog et lille minus, som jeg håber er en lille rettelse, der står 1:,2:,3: udfor hver linie, aætså hver linie får skrevet en nummer forand...

Kan i undgå det ?
Avatar billede sevelsted Nybegynder
20. oktober 2005 - 10:29 #52
Ja ser du :-)
Så virker det :-)

Der er dog et lille minus, som jeg håber er en lille rettelse, der står 1:,2:,3: udfor hver linie, altså hver linie får skrevet et linie nr. forand...

Kan vi undgå det ?
Avatar billede nielle Nybegynder
20. oktober 2005 - 17:21 #53
Sagten, du kan jo bare rette:

Response.Write LinjeNr & ": " & TekstArr(Idx) & "<br>"

- til:

Response.Write TekstArr(Idx) & "<br>"
Avatar billede sevelsted Nybegynder
22. oktober 2005 - 08:19 #54
Det er da fantastisk ;-)

Hvis du lige svarer, så tildeler jeg dig dine fortjænte point :-)
Avatar billede nielle Nybegynder
22. oktober 2005 - 11:28 #55
Svar :^)
Avatar billede nielle Nybegynder
22. oktober 2005 - 20:10 #56
Takker for point :^)
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
Kurser inden for grundlæggende programmering

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