Om man vill hämt de tio första orden från en databas, hur går man till väga då??
Nytt script > WordLeft
19 svar · 280 visningar · startad av Pace
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.
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
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.
Perfa, precis vad jag vill ha
Du får en femma av mig sörru
Är det bara jag som är dum, eller varför inte bara använda den inbyggda funktionen LEFT()?
För att det gäller ord och inte bokstäver
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.
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).
function wordEnd(Str,maxLength)
wordEnd = left(str,instr(mid(str,maxLength)," ")+maxLength-1)
end function
Jag tycker scriptet är värt en femma eftersom det funkar jättebra till det de ska användas till...
Ä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!
Det måste vara någon global variabel som spökar. Hur ser resten av koden ut?
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>
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
tackar så mkt för hjälpsamheten!
Ingen fara.
mkt användarbar o kulig grej

