Avatar billede plato Juniormester
21. januar 2004 - 10:12 Der er 9 kommentarer og
1 løsning

Del langt ord ASP

Hejsa NG.

Jeg bruger følgende kode til at vise en kommentar til en givende ting:

Sub PrintComment(intid)
Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open Application("Provider")

    SQl = "SELECT comments.user, comments.date, comments.comment FROM comments  WHERE comments.movieid = " & intId & " ORDER BY CDate(date) DESC"

    Set Rs = Conn.Execute(Sql)


                     
Do While NOT Rs.EOF
       
Response.Write("<tr valign='top'> ")
                Response.Write("<td width='35'>&nbsp;</td>")
               
                Response.Write("<td width='340' class='tekstboks'>")   
                Response.Write("<b>" &Rs("user") &"</b> skrev om filmen&nbsp&nbsp(" & rs("date") & ")<br><br>" & vbcrlf )
                Response.write(Replace(Rs("comment"), vbcrlf, "<br>" & vbcrlf))
            Response.Write("</td>")
                    Response.Write("</tr>")
                   
Response.Write("<tr valign='top'> ")
                      Response.Write("<td colspan='2'><table width='375' border='0' align='right' cellpadding='0' cellspacing='0'>")
                          Response.Write("<tr> ")
                            Response.Write("<td width='25'>&nbsp;</td>")
                            Response.Write("<td width='350' class='bottomborder'>&nbsp;</td>")
                          Response.Write("</tr>")
                        Response.Write("</table></td>")
                    Response.Write("</tr>")
   

   


Rs.MoveNext
        Loop
       

   

    Rs.Close
    Set Rs = Nothing
    Conn.Close
    Set Conn = Nothing
End Sub

Selvom TD er sat til en bestemt bredde, bryder et langt ord TD'en i rs("comment"), og det hele kommer til at se ud ad ¤&¤%&¤ til.

F.eks. kjhsdfshdfhsdkfjhsdjkfhsdkfhksdfhskdjfhsdkjfhsdkjfhsdjkf
Kunne være et langt link.

Kan man ikke gøre noget ved det?
Avatar billede mm12010 Nybegynder
21. januar 2004 - 10:23 #1
jeg kan klare det i @LANGUAGE="JavaScript"

hvis det kan bruges eller du selv kan oversætte det så sig til...
Avatar billede eagleeye Praktikant
21. januar 2004 - 10:28 #2
Her er et eksempel, der muligvis løser problemet:

<%
' en test streng:
str = "dette er noget tekst med et laaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaangt ord"

response.write "<br><br>Original: " & str ' kan slettes efter test..

MAX_LEN = 20 ' max længde per ord.. det retter du bare..
NYT_TEGN = " "  'Indsættes i langt ord. Evt kan <br> for linjeskift brugers
ordArr = Split(str, " ")
for i = lbound(ordArr) to ubound(ordArr)
tmp = ordArr(i)
  if len(ordArr(i)) >= MAX_LEN then
    for a = 0 to len(ordArr(i)) / MAX_LEN
      if len(tmp) >= MAX_LEN then
        strNy = strNy & NYT_TEGN & left(tmp, MAX_LEN) & vbCrLf
        tmp = mid(tmp, MAX_LEN + 1)
      end if
    next

  end if
strNy = strNy & " " & tmp
next

response.write "<br><br>Ny: " & strNy
%>
Avatar billede plato Juniormester
21. januar 2004 - 10:28 #3
For mit vedkommende skal det skæres ud i pap. :-)
Avatar billede eagleeye Praktikant
21. januar 2004 - 10:29 #4
Det kan så sættes ind i en function så du ikke skal havde koden midt inde i det andet.
Avatar billede plato Juniormester
21. januar 2004 - 10:29 #5
eagle..

Vil du være sød at sætte det ind i ovenstående kode?
Avatar billede eagleeye Praktikant
21. januar 2004 - 10:39 #6
Jeg antager det er i denne linje det skal ind:

Response.write(Replace(Rs("comment"), vbcrlf, "<br>" & vbcrlf))


Prøv at ligge dette kode ind i bunden af din fil:
<%
function delord(str, max_antal_karakter)
MAX_LEN = max_antal_karakter ' max længde per ord.. det retter du bare..
NYT_TEGN = " "  'Indsættes i langt ord. Evt kan <br> for linjeskift brugers
ordArr = Split(str, " ")
for i = lbound(ordArr) to ubound(ordArr)
tmp = ordArr(i)
  if len(ordArr(i)) >= MAX_LEN then
    for a = 0 to len(ordArr(i)) / MAX_LEN
      if len(tmp) >= MAX_LEN then
        strNy = strNy & NYT_TEGN & left(tmp, MAX_LEN) & vbCrLf
        tmp = mid(tmp, MAX_LEN + 1)
      end if
    next
  end if
strNy = strNy & " " & tmp
next
delord = strNy
end function
%>



og lav denne linje:
Response.write(Replace(Rs("comment"), vbcrlf, "<br>" & vbcrlf))

Om til:
Response.write(delord(Replace(Rs("comment"), vbcrlf, "<br>" & vbcrlf),20))



P.S: eksperten er F***** på hos mig lige i øjeblibber får en masse timeouts og sql fejl..
Avatar billede plato Juniormester
21. januar 2004 - 11:31 #7
Kører heller ikke godt her.

Din løsning virker, og det er fedt.

Der er dog et lille mén.

http://www.filmnet.dk/filmnet/trailer.asp?Id=1620

Hvis du ser indlæg fra DzM (17-12-2003) kan du se hvorfor jeg skulle bruge det.
Men, der er et < br> efter hans link.. (Det var der ikke før)

Hvorfor gør den det?
Avatar billede eagleeye Praktikant
21. januar 2004 - 11:46 #8
hvis du har sat funktionen ind uden at ændre noget så skulle den ikke indsætte <br> i teksten.

Umiddelbart ser det ud som om den har sat mellemrum lige midt i <br> samt linje skift

Du kan prøve at lave denne linje:
Response.write(delord(Replace(Rs("comment"), vbcrlf, "<br>" & vbcrlf),20))


om til så den først deler og så laver vbcrlf om til <br>:
Response.write(Replace(delord(Rs("comment"),20), vbcrlf, "<br>" & vbcrlf))
Avatar billede plato Juniormester
21. januar 2004 - 11:55 #9
Du er sgu dygtig!!

Du har løst mange af mine hårvridende situationer :-)

Tak! :-)

Og smid så lige det svar ;-)
Avatar billede eagleeye Praktikant
21. januar 2004 - 11:59 #10
Selv tak.

Ok her et et svar ;))
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