webForumDet fria alternativet

Visa antal träffar?

ASPur ASP

37 svar · 798 visningar · startad av Korak

Medlem sedan maj 2001133 inlägg
Frågan#1

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.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 " & Tabell & " 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 class=normal>Du måste skriva in ett sökord!</td></tr><tr><td><img src=dot.gif width='100%'></td></tr>"
   End If%>
Medlem sedan sep. 2001269 inlägg
#2
<%
        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 " & Tabell & " 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%>

Kanske :OO
men jag tror jag pillade sönder dina tabeller lite :(

Medlem sedan maj 2001133 inlägg
#3

Funkade inte. Jag får detta felmeddelande vid en sökning på ordet chat:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14' 
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'Like '%chat%''. 

/nyheter/sok.asp, line 79

Detta är rad 79:

<%
        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"
        <!-- Detta är rad 79 --> RecSet.Open SQL, Conn
%>
Medlem sedan dec. 200012 464 inlägg
#4

Kan du lägga till en utskrift av sql-frågan och visa resultatet?

SQL = "Select count(*) AS traffar From " & Tabbe & _
" Where " & Falt & " Like '%" & Request.Form("sokord") & _
"%' Order By " & falt1 & " Desc"
response.write sql 
response.end

En sak är att du använde Tabell tidigare men eas har Tabbe i sin kod

Medlem sedan maj 2001133 inlägg
#5

Postar hela koden, kanske är lättast så.
Här är hela söksidan exakt som den ser ut:

<%
soknamn = "Sök efter Nyhet:"

link = "sok.asp"  
db = Server.MapPath("nyheter.mdb")

Tabbe = "news"     

falt1 = "Id"

falt2 = "news_title"
falt3 = "news_text"
falt4 = "news_date"
%>

<html>
<head>
<title>S&ouml;k</title>

<script language="JavaScript" type="text/javascript">
<!--
function res(sida){
window.open(sida,"popup","scrollbars=1,resizable=0,width=420,height=150"); }
//-->
</script>

</head>
<body>

<%If Request.QueryString("do") = "" Then%>
<table cellspacing="0" cellpadding="0" width="250" border="0">
  <tr> 
      
    <td><b>S&ouml;k efter Nyhet:</b></td>
  </tr>
  <tr> 
      
    <td>&nbsp;</td>
   </tr>
   <tr> 
    <form name="sok" method="post" action="<%=link%>?do=sok">
      <td><input type="text" name="sokord" size="22" maxlength="20">&nbsp;
          <input type="hidden" name="falt" value="<%=falt3%>">
       &nbsp;<input type="submit" name="Submit" value="Sök"></td>
    </form>
   </tr>
</table>
<%End If

If Request.QueryString("do") = "sok" Then%>

<table cellspacing="0" cellpadding="0" width="250" border="0">
  <tr> 
      <td><b><%=soknamn%></b></td>
  </tr>
  <tr> 
      
    <td>&nbsp;</td>
    </tr>
  <tr> 
    <form name="sok" method="post" action="<%=link%>?do=sok">
      <td><input type="text" name="sokord" size="22" maxlength="20">&nbsp;
       <input type="hidden" name="falt" value="<%=falt3%>">
       &nbsp;<input type="submit" name="Submit" value="Sök"></td>
    </form>
 </tr>
  <tr> 
      
    <td>&nbsp;</td>
  </tr>
  <tr> 
    <td><b>Sökresultat:</b></td>
  </tr>
  <tr> 
      
    <td>&nbsp;</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%>
</table>

<%End If

If Request.QueryString("do") = "visa" Then
  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 background="dot.gif">&nbsp;</td>
    </tr>
    <tr> 
      <td><%=Replace(RecSet(falt3), vbCrLf, "<br>")%></td>
    </tr>
 </table>
<%End If%>

</body>
</html>
Medlem sedan dec. 200012 464 inlägg
#6

Nej, det är bara den sql-sats som ger fel som är intressant.

vad blir resultatet av response.write ?

Medlem sedan maj 2001133 inlägg
#7

Jag förstår mig inte på det där med "utskrift av sql-frågan...".
Provade att lägga in det på alla möjliga sätt men får bara samma felmeddelande.

Hela koden som jag postade ovan är sidan som den ser ut nu (förutom ett stylesheet), utan någon "antal träffar" kod.
Allt funkar som det ska, skulle bara vilja få in "antal träffar" i den.
Så här ser det ut:
http://www.eskobar.nu/nyheter/sok.asp

Medlem sedan apr. 200221 inlägg
#8

OK, om du ska visa hur många träffar din sökning returnerade
så är det väl enklast att använda en variabel som räknar varje träff?

SearchCount = SearchCount + 1

Bara kläm in koden, före RecSet.MoveNext så ska det gå bra.
Sedan är det bara att skriva ut resultatet, från variabeln. ;)

Medlem sedan maj 2001133 inlägg
#9

Det är samma felmeddelande som förrut när jag lägger koden där.

Medlem sedan mars 20015 287 inlägg
#10

Är du säker på att du satt kodbiten på rätt ställe?

Medlem sedan maj 2001133 inlägg
#11

Är du säker på att du satt kodbiten på rätt ställe?

Nej, jag är maximalt osäker. Jag är för dålig på sånt här.
Jag klistrade in den där Zaxxus sa. "före RecSet.MoveNext"
Tror nästan jag struntar i att lägga in "antal träffar".

Hela sökscriptet som det ser ut nu, fungerannde, utan några "visa antal" kodförsök la jag in för 3 inlägg sedan.
Om någon vill komma med tips på hur jag kan baka in "visa antal träffar" efter en sökning så är det varmt välkommet.
Annars är det inte i hela världen, det är ju ingen funktion som är absolut nödvändig.
Scriptet ligger uppe här: http://www.eskobar.nu/nyheter/sok.asp

Hur som helst, tack för tipsen!

Medlem sedan apr. 200221 inlägg
#12

Vad för typ av felmeddelande får du om du lägger in den koden där jag sa att du skulle placera den?

Medlem sedan maj 2001133 inlägg
#13

Samma som tidigare.
Vid en sökning på ordet chat:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14' 
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'Like '%chat%''. 

/nyheter/sok.asp, line 79
Medlem sedan apr. 200221 inlägg
#14

Testa med att ersätta ' (apostroferna) med " (citattecken) i Like satsen.

Medlem sedan maj 2001133 inlägg
#15

Tyvärr, det funkade inte heller. Det blev:

Microsoft VBScript compilation error '800a0408' 

Invalid character 

/nyheter/sok.asp, line 98 

SQL = "Select count(*) AS traffar From " & Tabbe & _" Where " & Falt & " Like "%" & Request.Form("sokord") & _"%" Order By " & falt1 & " Desc"
----------------------------------------------------^

Jag tror faktiskt att jag ger upp den här grejen nu.
Trodde aldrig att det skulle vara så här knepigt att få fram "din sökning gav X antal träffar".

Medlem sedan juni 200032 969 inlägg
#16

I SQL-frågan har du med ett par _ som härstammar från LarsGs kod. Dessa markerar att strängen fortsätter på nästa rad. Du har dock dragit ihop SQL-frågan till en rad igen, och då måste du ta bort dessa tecken.

Runt sökordet skall du ha apostrofer.

SQL = "Select count(*) AS traffar From " & Tabbe & " Where " & Falt & " Like '%" & Request.Form("sokord") & "%' Order By " & falt1 & " Desc"

Mvh,

Medlem sedan juli 20012 450 inlägg
#17

och sen tabbe - tabell som nån sa...
men nu funkar sökningen väl?

Medlem sedan maj 2001133 inlägg
#18

Tabbe är det korrekta, det var jag som råkade skriva Tabell i första inlägget.
Inget av de nya tipsen funkade. Apostrofer runt sökord blev:

Microsoft VBScript compilation error '800a03ea' 

Syntax error 

/nyheter/sok.asp, line 78 

SQL = "Select count(*) AS traffar From " & Tabbe & " Where " & Falt & " Like '%" & Request.Form('sokord') & "%' Order By " & falt1 & " Desc"
------------------------------------------------------------------------------------------------^
Medlem sedan juni 200032 969 inlägg
#19

Du missuppfattade mig.

Jag gjorde alla nödvändiga ändringar till SQL-frågan i mitt inlägg. Prova därför med den.

Mvh,

Medlem sedan maj 2001133 inlägg
#20

Så gjorde jag först, det blir samma fel.
Jag ser ingen skillnad i din SQL-fråga och den Eas postade tidigare.
Förrutom det här med Tabbe/Tabell då som var mitt fel.

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