webForumDet fria alternativet

Korta ner informartion

ASP

21 svar · 1 111 visningar · startad av devotion

Medlem sedan jan. 20013 582 inlägg
Frågan#1

Hej!
När jag hämtar data från databasen vill jag att det ska rymmas i en cell i tabellen och endast vara en rad.

Ex

Installation av central i ga...

Dvs blir texten längre än säg 30 tecken så avslutas den med tre punkter (...)

Har testat följande kod som fungerar på många tecken. Men när databasen bara innhåller ett ord blir ju resultatet så här:

Felsökning...

I det senare fallet ryms hela texten i cellen och de tre punkterna ska inte skrivas ut.

Nu skrivs ju punkterna ut för att jag har angett det i html-koden, men finns det något annat sätt att lösa det på så punkterna inte kommer med vid korta texter?

<%=Left((visaUppdrag.Fields.Item("Task").Value), 25)%>...

Mvh

Medlem sedan mars 20033 686 inlägg
#2

Kan du inte kolla om ordet innehåller mer än 25 bokstäver med en If-sats då?

Medlem sedan juni 2002256 inlägg
#3
<%
	Private Function max_l(txt,l)
	Dim str
	str = txt

	If Len(str) > l Then
	max_l = Left(str,l)& "..."
	Else
	max_l = str
	End If
	End Function

	Response.Write(max_l(visaUppdrag.Fields.Item("Task").Value), 25))
%>
Medlem sedan aug. 20011 087 inlägg
#4

Här har du en funktion som du hugger av mellan ord istället för mitt i ifall det passar dig bättre.
Inga punkter men det kan du säkert enkelt modifiera.

Instring är texten du vill korta ner och incount är max antal tecken.

function formatLongText(inString,inCount)

if len(InString) > inCount and not inCount = 0 then
LongString = InString
InString = Left(InString, inCount)
if not Replace(InString," ","") = InString then
iLastSpace = InStrRev(InString, " ")
InString = Left(InString, iLastSpace-1)
end if
inString = inString & chr(133)
end if

inString = replace(inString,chr(34),chr(148))
inString = replace(inString,chr(39),chr(146))
formatLongText = inString
end function

Medlem sedan jan. 20013 582 inlägg
#5

Hej igen!

Tycker att Denkans kod verkar smidig. MEN får följande felmeddelande:

Teknisk information (för supportpersonal)

Feltyp:
Kompileringsfel i Microsoft VBScript (0x800A03EA)
Syntaxfel
/visaUppdrag.asp, line 189, column 8
Private Function max_l(txt,l)
-------^

Webbläsare:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) 

Sida:
GET /visaUppdrag.asp 

Tid:
den 29 oktober 2004, 18:46:33 

Mer information:
Microsoft Support

Vad är det som är fel???

Mvh

Medlem sedan juni 2002256 inlägg
#6

Märkligt...
Aja, då struntar vi att sätta den som Private.

<%
	Function max_l(txt,l)
	Dim str
	str = txt

	If Len(str) > l Then
	max_l = Left(str,l)& "..."
	Else
	max_l = str
	End If
	End Function

	Response.Write(max_l(visaUppdrag.Fields.Item("Task").Value), 25))
%>

Enjoy!

Medlem sedan jan. 20013 582 inlägg
#7

Nu fick jag detta felet....

Teknisk information (för supportpersonal)

Feltyp:
Kompileringsfel i Microsoft VBScript (0x800A03EA)
Syntaxfel
/visaUppdrag.asp, line 189
Function max_l(txt,l)

Webbläsare:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) 

Sida:
GET /visaUppdrag.asp 

Tid:
den 30 oktober 2004, 08:58:08 

Mer information:
Microsoft Support

Mvh

Medlem sedan jan. 20013 582 inlägg
#8

Tar upp denna tråden igen...

Några bra ideér??

Mvh

Medlem sedan dec. 20003 563 inlägg
#9

Om det enda felet som finns kvar är det två inlägg upp så beror det på en höger-parantes för mycket.

Response.Write(max_l(visaUppdrag.Fields.Item("Task").Value, 25))
Medlem sedan jan. 20013 582 inlägg
#10

Var det bara parantesproble....??

Hmmm :OO

....får kolla det...

Mvh

Medlem sedan jan. 20013 582 inlägg
#11

Hej!
Har inte lyckats lösa detta problem....

Tycker Denkans förslag med en function verkar bra men får det inte att fungera...

Någon som vet hur man ska göra??

Mvh

Medlem sedan feb. 20032 027 inlägg
#12

så här är min som funkar:

<%
novellText = rs("novellText") 

If Len(novellText) > 50 Then
    Response.Write Left(novellText, 50) & "..."
Else
    Response.Write novellText
End If
%>
Medlem sedan jan. 20013 582 inlägg
#13

Tack för det... :)

Mvh

Medlem sedan feb. 20034 441 inlägg
#14

ConnyFox skrev:

Här har du en funktion som du hugger av mellan ord istället för mitt i ifall det passar dig bättre.
Inga punkter men det kan du säkert enkelt modifiera.

Instring är texten du vill korta ner och incount är max antal tecken.

function formatLongText(inString,inCount)

if len(InString) > inCount and not inCount = 0 then
LongString = InString
InString = Left(InString, inCount)
if not Replace(InString," ","") = InString then
iLastSpace = InStrRev(InString, " ")
InString = Left(InString, iLastSpace-1)
end if
inString = inString & chr(133)
end if

inString = replace(inString,chr(34),chr(148))
inString = replace(inString,chr(39),chr(146))
formatLongText = inString
end function

Jag använder detta script för att korta ner text, fast det måste vara någon annan variant av samma script, för jag får tre punkter eter texten som kortats av.

Problemet är att validatorn inte tycker om det, sidan "går aldrig igenom" då.
Vad ska man göra för att få sidan godkänd men samtidigt ha kvar de här punkterna?

Tack!

Medlem sedan juni 200032 967 inlägg
#15

Validatorn?

Medlem sedan feb. 20034 441 inlägg
#16

@nders skrev:

Validatorn?

Ja, W3's Validator när jag validerar sidan i XHTML 1.0

Medlem sedan juni 200032 967 inlägg
#17

Alltså. Validatorn bryr sig ju inte om innehållet på sidan, utan bara koden.

Det måste vara något annat fel, exempelvis att funktionen bryter av någon tagg eller så. Det skulle ju vara betydligt enklare att ta reda på om du visade funktionen och länk till sidan. Gissa är aldrig lätt.

Medlem sedan feb. 20034 441 inlägg
#18

@nders skrev:

Alltså. Validatorn bryr sig ju inte om innehållet på sidan, utan bara koden.

w3 skrev:

You have used an illegal character in your text...

Bör alltså ha med någon metatagg att göra, för den nämner UFT-8 i felbeskrivningen.

Dom här metataggarna har jag bla. med:

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Content-Language" content="sv" />

http://validator.w3.org/check?uri=http%3A%2F%2Fmickea.gotdns.org%2Fwebkungen2%2Fdefault.asp%3FmP%3Dforum&charset=(detect+automatically)&doctype=Inline&ss=1#line-181

Medlem sedan juni 200032 967 inlägg
#19

Punkter kan väl knappast vara illegal characters???
Däremot står på rad 181 en konstig fyrkant, kan inte den vara boven?

Medlem sedan feb. 20034 441 inlägg
#20

@nders skrev:

Punkter kan väl knappast vara illegal characters???
Däremot står på rad 181 en konstig fyrkant, kan inte den vara boven?

Men fyrkanten ÄR punterna. Det som är "..." när sidan visas i webläsaren blir den här fyrkanten när sidan valideras och därmed boven.

Här är "min" version av den här funktionen "formatLongText()":

Function flt(inString,inCount)
	If inString <> "" Then
		If Len(InString) > inCount And Not inCount = 0 Then
			LongString = InString
			InString = Left(InString, inCount) 
		If Not Replace(InString," ","") = InString Then
			iLastSpace = InStrRev(InString, " ")
			InString = Left(InString, iLastSpace-1)
		End if
			inString = inString & Chr(133)
		End If
			inString = Replace(inString,Chr(34),Chr(148))
			inString = Replace(inString,Chr(39),Chr(146))
	Else
		inString = "&nbsp;"
	End If
		flt = inString
End Function

Använder jag inte funktionen får jag inget fel, alltså måste det vara punkterna som ställer till det?

265 ms totalt · 3 externa anrop · v20260731065814-full.c4b5ca48
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)