Visa antal träffar?
37 svar · 798 visningar · startad av Korak · sida 2 av 2
Frågan, av Korak
Sitter och försöker få ihop ett sökscript. Det jag inte får till är att få fram antal träffar efter en sökning. Någon som kan hjälpa mig? Så här ser scriptet ut (falt1 är Id): <td><b>Sökresultat</b> Antal tfräffar: <%Fattar=Noll%></td> </tr> <tr> <td><img src="dot.gif" width="284" height="10"></td> </tr> <%Falt = Trim(Request.Form("falt")) If Len(Request.For
Läs frågan i sin helhet →<%
Set Conn = Server.CreateObject("ADODB.Connection")
Set RecSet = Server.CreateObject("ADODB.Recordset")
Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & db
SQL = "Select count(*) AS traffar From " & Tabbe & " Where " & Falt & " Like '%" & Request.Form("sokord") & "%' Order By " & falt1 & " Desc"
RecSet.Open SQL, Conn
%>
<td><b>Sökresultat</b> Antal tfräffar: <%=RecSet("traffar")%></td>
</tr>
<tr>
<td><img src="dot.gif" width="284" height="10"></td>
</tr>
<%Falt = Trim(Request.Form("falt"))
If Len(Request.Form("sokord")) > 0 then
If RecSet.EOF Then
Response.write "<tr><td>Sökordet <b>" & Request.Form("sokord") & "</b> gav inga fräffar!</td></tr><tr><td><img src=dot.gif width='100%'></td></tr>"
Else
Do Until RecSet.EOF
Response.Write "<tr height=15><td>" & Left(RecSet(falt4),10) & "</td></tr>"
Response.Write "<tr height=15><td><a href=java script:res('" & link & "?do=visa&id=" & RecSet(falt1) & "');>" & Left(RecSet(falt2),50) & "</a></td></tr>"
Response.Write "<tr><td><img src=dot.gif width='100%'></td></tr>"
RecSet.MoveNext
Loop
RecSet.Close
Set RecSet = Nothing
End If
Else
Response.write "<tr><td class=normal>Du måste skriva in ett sökord!</td></tr><tr><td><img src=dot.gif width='100%'></td></tr>"
End If%>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Set RecSet = Server.CreateObject("ADODB.Recordset")
Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & db
SQL = "Select count(*) AS traffar From " & Tabbe & " Where " & Falt & " Like '%" & Request.Form("sokord") & "%' Order By " & falt1 & " Desc"
Response.write SQL
Response.End
RecSet.Open SQL, Conn
%>
Denna kod borde visa i browsern hur den färdiga SQL-frågan ser ut. Är det något som saknas? Hur ser den ut?
Mvh,
Nu hände det nåt nytt, så här blev det efter en sökning:
Select count(*) AS traffar From news Where Like '%nyhet%' Order By Id Desc
Det saknas något:
Select count(*) AS traffar From news Where [b]här ska det stå ett fältnamn[/b] Like '%nyhet%' Order By Id Desc
Variabeln Falt är alltså tom. Var får den sitt värde?
Mvh,
Hmm, nu börjar det kanske närma sig en lösning.
Så här ser tabell och fält ut:
Tabbe = "news"
falt1 = "Id"
falt2 = "news_title"
falt3 = "news_text"
falt4 = "news_date"
Glömde...ett tillägg:
Den hämtar alltså från falt3 = "news_text" vid en sökning.
Hmm.
Bara Falt då?
SQL = "Select count(*) AS traffar From " & Tabbe & " Where " & [b]Falt[/b] & " Like '%" & Request.Form("sokord") & "%' Order By " & falt1 & " Desc"
Ska inte det fetmarkerade vara antingen falt2, falt3 eller falt4?
Mvh,
Den får aldrig nåt värde på koden som visades innan.
Däremot finns falt1, falt2, falt3 och falt4.
( Oj, såg inte att det fanns en sida till :r )
Det trodde jag också, jag var bombsäker på att falt3 skulle funka.
Testade alla alt. innan jag postade förra inlägget, det blev samma felmedd. som vanligt.
Det känns ju som det är exakt rätt.
Så här ser den fungerande kodsnutten ut innan man lagt in "visa antal träffar":
<td><b>Sökresultat:</b></td>
</tr>
<tr>
<td> </td>
</tr>
<%Falt = Trim(Request.Form("falt"))
If Len(Request.Form("sokord")) > 0 then
Set Conn = Server.CreateObject("ADODB.Connection")
Set RecSet = Server.CreateObject("ADODB.Recordset")
Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & db
SQL = "Select * From " & Tabbe & " Where " & Falt & " Like '%" & Request.Form("sokord") & "%' Order By " & falt1 & " Desc"
RecSet.Open SQL, Conn
If RecSet.EOF Then
Response.write "<tr><td>Sökordet <b>" & Request.Form("sokord") & "</b> gav inga fräffar!</td></tr><tr><td><img src=dot.gif width='100%'></td></tr>"
Else
Do Until RecSet.EOF
Response.Write "<tr height=15><td>" & Left(RecSet(falt4),10) & "</td></tr>"
Response.Write "<tr height=15><td><a href=javascript:res('" & link & "?do=visa&id=" & RecSet(falt1) & "');>" & Left(RecSet(falt2),50) & "</a></td></tr>"
Response.Write "<tr><td><img src=dot.gif width='100%'></td></tr>"
RecSet.MoveNext
Loop
RecSet.Close
Set RecSet = Nothing
End If
Else
Response.write "<tr><td>Du måste skriva in ett sökord!</td></tr><tr><td><img src=dot.gif width='100%'></td></tr>"
End If%>
Vad är det som blir fel...jag fattar inte. Otroligt märkligt.
Då gör vi så här, att vi provar att använda ADO, mha RecordCount.
Märk det feta.
<td><b>Sökresultat:</b></td>
</tr>
<tr>
<td> </td>
</tr>
<%Falt = Trim(Request.Form("falt"))
If Len(Request.Form("sokord")) > 0 then
Set Conn = Server.CreateObject("ADODB.Connection")
Set RecSet = Server.CreateObject("ADODB.Recordset")
Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & db
SQL = "Select * From " & Tabbe & " Where " & Falt & " Like '%" & Request.Form("sokord") & "%' Order By " & falt1 & " Desc"
RecSet.Open SQL, Conn[b], 3, 3 'Något osäker på dessa parametrar dock[/b]
If RecSet.EOF Then
Response.write "<tr><td>Sökordet <b>" & Request.Form("sokord") & "</b> gav inga fräffar!</td></tr><tr><td><img src=dot.gif width='100%'></td></tr>"
Else
Do Until RecSet.EOF
Response.Write "<tr height=15><td>" & Left(RecSet(falt4),10) & "</td></tr>"
Response.Write "<tr height=15><td><a href=java script:res('" & link & "?do=visa&id=" & RecSet(falt1) & "');>" & Left(RecSet(falt2),50) & "</a></td></tr>"
Response.Write "<tr><td><img src=dot.gif width='100%'></td></tr>"
RecSet.MoveNext
Loop
[b]Response.write "<tr><td>" & RecSet.RecordCount & " poster funna</td></tr>"[/b]
RecSet.Close
Set RecSet = Nothing
End If
Else
Response.write "<tr><td>Du måste skriva in ett sökord!</td></tr><tr><td><img src=dot.gif width='100%'></td></tr>"
End If%>
Mvh,
Fungerade alldeles förträffligt perfekt:
http://www.eskobar.nu/nyheter/sok.asp
Tack så otroligt mycket!
Jag trodde verkligen att det var kört :)
Jag igen :)
Ingen fara, nu är det bara en liten fråga...tror jag.
När jag la in allt på rätt sida blev det lite konstigt med include-menyer mm i popup-fönstret.
Jag gjorde därför en separat popup.asp för att visa nyheten:
<%
db = Server.MapPath("nyheter.mdb")
Tabbe = "news"
falt1 = "Id"
falt2 = "news_title"
falt3 = "news_text"
falt4 = "news_date"
%>
<html>
<head>
<title>Nyheter - Popup</title>
</head>
<body>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & db
Set RecSet = Conn.Execute("Select * From " & Tabbe & " Where id=" & Request.QueryString("id"))%>
<table cellspacing="0" cellpadding="0" width="100%">
<tr>
<td><%=RecSet(falt4)%></td>
</tr>
<tr>
<td><b><%=RecSet(falt2)%></b></td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td><%=Replace(RecSet(falt3), vbCrLf, "<br>")%></td>
</tr>
</table>
</body>
</html>
Nu undrar jag bara om jag på något smidigt sätt kan lägga in så att html ej tillåts att visas på denna sida?
I många av nyheterna finns länkar mm som självklart blir väldigt konstigt när de öppnas i det lilla popup-fönstret.
Vad menar du med inte tillåtas, ska HTML bara skrivas ut som vanligt utan att bli "funktionell" kan du använda server.htmlEncode annars får du replaca din HTML-kod med antingen funktionen replace eller regular expressions.
Det var lite korkat formulerat av mig.
Det jag menade är att jag vill att länkar visas som vanlig text.
Om du testar att söka på exempelvis "skiva" och sedan klickar på översta nyheten så förstår du vad jag menar:
http://www.eskobar.nu/nyheter/sok.asp
Det blir ju lite "fel" om man klickar på en länk i popup-fönstret.
Hej, är det bara länkar det gäller kan du ju bara skriva ut posten rakt upp och ner utan att lägga in det i <a href="URL">länk</a>
Men vill du ha kontroll på allt som du skriver ut använder du server.htmlEncode:
response.write "<p> " & server.htmlEncode(rs("strField")) & " </p>"
Hej igen, jag kom på en fuling. Du kan ju stänga ditt pop-up fönster när någon klickar på länken och öppna länken i fönstret under:
response.write "<a href=""javascript:opener.location=('www.sidan.asp'); self.close();"">Länk</a>"
Istället för https://www.sidan.asp lägger du in din variabel som innehåller en URL.
Hmm, jag är inte så haj på det här.
Om man säger så här...går det på något sätt att få in "visa alla <a href="URL">länk</a> som vanlig text istället" i denna kodsnutt:
<%=Replace(RecSet(falt3), vbCrLf, "<br>")%>
Tillägg:
Skrev texten ovanför innan jag hann läsa ditt inlägg ovan.
Tack för "fuling-tipset" men jag tror det blir lite väl förvirrande för folk.
Tycker redan popup-fönster är på gränsen till vad som är "tillåtet".
Funderar faktiskt på att skippa popup-varianten och länka direkt till nyheten istället.
Testar att göra så nu.
Jepp så får det bli, utan popup. Nu är allt som jag vill ha det.
Jag lovar att inte posta fler inlägg i denna tråd. :)
Tack än en gång för all hjälp!
