Avatar billede agg-zeus Nybegynder
22. april 2002 - 21:53 Der er 15 kommentarer og
1 løsning

nyhedting...

Jeg har flere steder set nyhedssider, hvor der kun er skrevet et bestemt antal tegn af nyheden og så et link hvor man kan læse hele nyheden. Hvordan laver man det?
Avatar billede eagleeye Praktikant
22. april 2002 - 21:59 #1
den lette er med left:

MAX_ANTAL_CHAR = 30
if len(dinStreng) > MAX_ANTAL_CHAR then
  response.write LEFT(dinStreng,MAX_ANTAL_CHAR) & "..."
else
  response.write dinStreng
end if
Avatar billede 123abc123 Nybegynder
22. april 2002 - 22:01 #2
eller:

<a href=laes_nyhed.asp?id=<%=rs("id")%>><%= left(rs("tekst"),50)%></a>
Avatar billede eagleeye Praktikant
22. april 2002 - 22:03 #3
Her en function som klipper i en lang linie ved et mellemrum bagud, angiv streng og længde:


Function CutString (YourString, intCut)
if len(YourString) > intCut then
  posstart = InStrRev(YourString, " ",intCut)
  if (posstart <> 0) then
    YourString = Left(YourString, posstart) & "..."
    Exit Function
  end if
end if
CutString = YourString
End function


Response.write CutString(dinStreng,75)
Avatar billede 123abc123 Nybegynder
22. april 2002 - 22:13 #4
mener nu min er nemmere :)
Avatar billede eagleeye Praktikant
22. april 2002 - 22:16 #5
Jeps den klikker også fuldstændig ukritsik selv midt i ord. Ligeledes sætter min ... så man kan se at der er mere til strengen og ikke bare slutter under
Avatar billede 123abc123 Nybegynder
22. april 2002 - 22:17 #6
men så kan denne kode jo komme ind

      <%
      If len(rs("tekst")) > 50 then
      Response.Write "...(<a href=laes_nyhed?ID="& rs("ID") &"' onfocus='blur()'>læs mere</a>)"
      End if     
      %>
Avatar billede 123abc123 Nybegynder
22. april 2002 - 22:18 #7
altså :

<%= left(rs("tekst"),50)%><%
      If len(rs("tekst")) > 50 then
      Response.Write "...(<a href=laes_nyhed?ID="& rs("ID") &"' onfocus='blur()'>læs mere</a>)"
      End if     
      %>
Avatar billede eagleeye Praktikant
22. april 2002 - 22:24 #8
Ja, men skal vi nu ikke lade agg-zeus bruger en af de to eller måske endda en blanding af vores forslag som passer til hans ønsker/behov til koden.

Hvis der nu er krav om at der kun må klippes i et mellemrum for ikke at hvavde halve ord i teksten, så skal man havde lidt mere kode som jeg har vist...
Avatar billede agg-zeus Nybegynder
23. april 2002 - 18:39 #9
eagleye får pointne, da jeg synes hans løsning er bedst... Takker...
Avatar billede agg-zeus Nybegynder
23. april 2002 - 18:49 #10
Har et lille problem, den siger hele tiden at "variablen posstart er udefineret" ! Hvorfor det!?

Hele scriptet ser således ud:



set rs = server.createobject("adodb.recordset")


sql = "Select top 3 * from news Order by maanedaar desc, dag desc;"
rs.open sql,cn
Dim posstart
Function CutString (YourString, intCut)
if len(YourString) > intCut then
  posstart = InStrRev(YourString, " ",intCut)
  if (posstart <> 0) then
    YourString = Left(YourString, posstart) & "..."
    Exit Function
  end if
end if
CutString = YourString
End function

Do While not rs.EOF



Dim nyhed
nyhed = Replace(rs.fields("nyhed"),"''","'")
nyhed = CutString(nyhed,75)


Response.Write "<tr><td><div class=""infobox"">"&rs.fields("dag")&"-"&rs.fields("maanedaar")&" <br>" _
& "<i>"&nyhed&"</i><br>&nbsp;&nbsp;&nbsp;[<a href='asp/newsall.asp?newsid="&rs.fields("newsid")&"' target='center'>Læs mere</a>]</div></td></tr>" _
& "<tr><td><hr size=""1"" color=""#CCCCCC""></td></tr>"

    rs.movenext
Loop
Avatar billede eagleeye Praktikant
23. april 2002 - 19:49 #11
du skal nok havde Dim posstart ind i functionen:


Function CutString (YourString, intCut)
Dim posstart
if len(YourString) > intCut then
  posstart = InStrRev(YourString, " ",intCut)
  if (posstart <> 0) then
    YourString = Left(YourString, posstart) & "..."
    Exit Function
  end if
end if
CutString = YourString
End function
Avatar billede agg-zeus Nybegynder
23. april 2002 - 20:40 #12
Nu skriver den ikke nogen nyhed... der er bare tomt!!!
Avatar billede eagleeye Praktikant
23. april 2002 - 20:46 #13
Function CutString (YourString, intCut)
Dim posstart
if len(YourString) > intCut then
  posstart = InStrRev(YourString, " ",intCut)
  if (posstart <> 0) then
    CutString = Left(YourString, posstart) & "..."
    Exit Function
  end if
end if
CutString = YourString
End function
Avatar billede agg-zeus Nybegynder
23. april 2002 - 20:47 #14
eagleeye >>> Jeg kan ikke få det til at virke...
Avatar billede eagleeye Praktikant
23. april 2002 - 20:49 #15
Prøv den sidste der er en lille retelse i...
Avatar billede agg-zeus Nybegynder
23. april 2002 - 20:53 #16
Lækkert... nu virker den.. tak..
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