webForumDet fria alternativet

Nytt script > WordLeft

19 svar · 236 visningar · startad av Pace

PaceMedlem sedan juni 20019 024 inlägg
#1

Här!

WordLeft - Denna funktionen visar exempelvis de tio första orden i en sträng och lägger på tre punkter (...) om strängen är längre.

Diskussion kring fel och dylikt i denna tråden!

------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."

[Redigerat av Pace den 02 nov 2001]

GimboMedlem sedan dec. 20001 626 inlägg
#2

Om man vill hämt de tio första orden från en databas, hur går man till väga då??

PaceMedlem sedan juni 20019 024 inlägg
#3

De tio första orden går inte, bara de tio första bokstäverna (LEFT(fält, 10) i SQL frågan).

Men du kan ju ta ut hela texten, och sedan köra WordLeft funktionen på texten, så får du exempelvis enbart tio ord.

------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."

LarsGMedlem sedan dec. 200012 464 inlägg
#4

Då anropar du bara funktionen så här

response.write WordLeft(rs("NewsColumn"),10)

Om man vill få till det direkt med select så får man skriva en egen sql-funktion för det. Alla dbms har inte stöd för det (t.ex. Access och Mysql).

red: 10 var det
------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 02 nov 2001]

PaceMedlem sedan juni 20019 024 inlägg
#5

En annan sak jag vill påpeka är att ni gärna kan betygsätta fler script! På så vis får ju alla en vägledning om scriptets användarfunktionalitet.

------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."

icaaqMedlem sedan okt. 20005 273 inlägg
#6

Perfa, precis vad jag vill ha :e

------------------
Icaaq, mannen med korven. (!)

RinaldoMedlem sedan mars 20014 214 inlägg
#7

Du får en femma av mig sörru :)

------------------
Den som inte vet att tiga vet inte att tala

cascaMedlem sedan feb. 20005 891 inlägg
#8

Är det bara jag som är dum, eller varför inte bara använda den inbyggda funktionen LEFT()? ;)

------------------
Nu undrar du kanske varför jag skrev sådär..

M@rtinMedlem sedan dec. 19992 085 inlägg
#9

För att det gäller ord och inte bokstäver ;)

------------------
//M@rtin || Peachy.nu\\

ni taLar Bra laTiN

PaceMedlem sedan juni 20019 024 inlägg
#10

Du får en femma av mig sörru

Nää, det var inte så jag menade mig. ;) Visst uppskattar jag en femma, men betygsätt allt annat också, på så vis får vi alla vägledning! :)

Är det bara jag som är dum

Ja.

------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."

SkarreMedlem sedan apr. 20012 427 inlägg
#11

Kan man inte göra en liknande funktion där man kan bestämma högsta antal tecken, men om gränsen går mitt i ett ord fortsätter det till ordets slut. Jag hoppas ni förstår vad jag menar. Annars kan det bli ganska stora skillnader i texternas längd (om någon text har många långa ord).

------------------
// Skarre

LarsGMedlem sedan dec. 200012 464 inlägg
#12
function wordEnd(Str,maxLength)
wordEnd = left(str,instr(mid(str,maxLength)," ")+maxLength-1)
end function

------------------
essentitia preter non sans multiplicandum

RinaldoMedlem sedan mars 20014 214 inlägg
#13

Jag tycker scriptet är värt en femma eftersom det funkar jättebra till det de ska användas till...

------------------
Den som inte vet att tiga vet inte att tala

PercyMedlem sedan mars 2000187 inlägg
#14

Är jag den enda som inte får det att fungera?
använder mig av följande kodsnytt för att få ut texten, men jag få inte ut ett enda tecken!

<%=WordLeft(rs("content"),10)%>

men om jag använder följande kodrad fungerar det alldeles utmärkt med undantaget att den visar hela texten.

<%=rs("content")%>

någon som har någon lösning på varför den inte visar någon text? sidan genererar ej heller något felmeddelande.

tack på förhand!

PaceMedlem sedan juni 20019 024 inlägg
#15

Det måste vara någon global variabel som spökar. Hur ser resten av koden ut?

------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."

PercyMedlem sedan mars 2000187 inlägg
#16

koder ser ut enligt följande:

<%
Function WordLeft(strText, intNoOfWords)
	Dim arrText, strippedText, I
	arrText = Split(strText, " ")
	If UBound(arrText) => intNoOfWords Then
		For I = 0 To (intNoOfWords - 1)
			If i = (intNoOfWords - 1) Then
				strippedText = strippedText & arrText(i) & "..."
			Else
				strippedText = strippedText & arrText(i) & " "
			End if
		Next
	Else
		strippedText = strText
	End If
	WordLeft = strippedTextEnd
End Function
%>
<html>
<head>
<title>Nyheter</title>
</head>
<body bgcolor="#FFFFFF">
<link rel="stylesheet" href="../style1.css">
<%
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\databas.mdb"
%>
<% If (Request.QueryString("id") = "") Then
SQLStmt = "SELECT *, Format$([time],'hh:mm') AS FormTime FROM news ORDER BY id DESC"
Set rs = Connection.Execute(SQLStmt)
%>
<table align="center" border="0" width="400">
<tr><td colspan="2"><b>Nyheter <%=Date%></b></td></tr>
<tr><td background="../images/dots.gif" height="3" width="90%" colspan="2"></td></tr>
<tr><td>&nbsp;</td></tr>
<%Do Until rs.EOF%>
<tr><td align="left"><b><%=rs("header")%></b> [<%=rs("datum")%> <i><%=rs("formtime")%></i>]<br><%=WordLeft(rs("content"),10)%> <b><a href="news.asp?id=<%=rs("id")%>"><b>Läs mer</b></a></td></tr><%
RS.MoveNext
Loop
RS.Close
Connection.Close
%>
<tr><td>&nbsp;</td></tr>
<tr><td background="../images/dots.gif" height="3" width="90%" colspan="2"></td></tr>
<tr><td colspan="2"><!--#include virtual="copyright.inc"--></td></tr>
<% Else
SQLStmt = "SELECT *, Format$([time],'hh:mm') AS FormTime FROM news WHERE id = " & Request.QueryString("id") & ""
Set RS = Connection.Execute(SQLStmt)
%>
<table align="center" border="0" width="400" cellpadding="2" cellspacing="0">
<tr><td><b><%=rs("header")%></b> <%=rs("datum")%>, <i><%=rs("formtime")%></i></td></tr>
<tr><td background="../images/dots.gif" height="3" width="90%"></td></tr>
<tr><td><%=rs("content")%></td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td><%=rs("author")%></td></tr>
<tr><td>&nbsp;<br><a href="news.asp">&laquo; Tillbaka</a></td></tr>
<tr><td background="../images/dots.gif" height="3" width="90%"></td></tr>
<tr><td><!--#include virtual="copyright.inc"--></td></tr>
<%
rs.Close
Connection.Close
End If
%>
</table>
</body>
</html>
PaceMedlem sedan juni 20019 024 inlägg
#17

Du har råkat lägga till 'End' på slutet av variabeln. Det ska bara vara strippedText.

Function WordLeft(strText, intNoOfWords)
Dim arrText, strippedText, I
arrText = Split(strText, " ")
If UBound(arrText) => intNoOfWords Then
For I = 0 To (intNoOfWords - 1)
If i = (intNoOfWords - 1) Then
strippedText = strippedText & arrText(i) & "..."
Else
strippedText = strippedText & arrText(i) & " "
End if
Next
Else
strippedText = strText
End If
WordLeft = strippedText[b]End[/b]
End Function

------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."

PercyMedlem sedan mars 2000187 inlägg
#18

tackar så mkt för hjälpsamheten!

PaceMedlem sedan juni 20019 024 inlägg
#19

Ingen fara. ;)

------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."

CactuzMedlem sedan okt. 2001670 inlägg
#20

mkt användarbar o kulig grej :e :e :e

131 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)