Pace Medlem sedan juni 2001 9 024 inlägg Frågan 2 nov. 2001 16:11 #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]
G Gimbo Medlem sedan dec. 2000 1 626 inlägg Om man vill hämt de tio första orden från en databas, hur går man till väga då??
Pace Medlem sedan juni 2001 9 024 inlägg 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."
L LarsG Medlem sedan dec. 2000 12 464 inlägg 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]
Pace Medlem sedan juni 2001 9 024 inlägg 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."
I icaaq Medlem sedan okt. 2000 5 273 inlägg Perfa, precis vad jag vill ha :e
------------------
Icaaq, mannen med korven. (!)
R Rinaldo Medlem sedan mars 2001 4 214 inlägg Du får en femma av mig sörru :)
------------------
Den som inte vet att tiga vet inte att tala
C casca Medlem sedan feb. 2000 5 891 inlägg Ä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 M@rtin Medlem sedan dec. 1999 2 085 inlägg För att det gäller ord och inte bokstäver ;)
------------------
//M@rtin || Peachy.nu \\
ni taLar Bra laTiN
Pace Medlem sedan juni 2001 9 024 inlägg
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."
Skarre Medlem sedan apr. 2001 2 427 inlägg 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
L LarsG Medlem sedan dec. 2000 12 464 inlägg function wordEnd(Str,maxLength)
wordEnd = left(str,instr(mid(str,maxLength)," ")+maxLength-1)
end function
------------------
essentitia preter non sans multiplicandum
R Rinaldo Medlem sedan mars 2001 4 214 inlägg 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
P Percy Medlem sedan mars 2000 187 inlägg Ä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!
Pace Medlem sedan juni 2001 9 024 inlägg 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."
P Percy Medlem sedan mars 2000 187 inlägg 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> </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> </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> </td></tr>
<tr><td><%=rs("author")%></td></tr>
<tr><td> <br><a href="news.asp">« 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>
Pace Medlem sedan juni 2001 9 024 inlägg 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."
P Percy Medlem sedan mars 2000 187 inlägg tackar så mkt för hjälpsamheten!
Pace Medlem sedan juni 2001 9 024 inlägg Ingen fara. ;)
------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."
C Cactuz Medlem sedan okt. 2001 670 inlägg mkt användarbar o kulig grej :e :e :e