webForumDet fria alternativet

Söka i databas

ASPur ASP

3 svar · 172 visningar · startad av Jörgen HP

Medlem sedan feb. 20012 412 inlägg
Frågan#1

Hej!

Har gjort ett script för att söka igenom en databas. Min fråga, finns det kanske ett smartare och bättre sätt att göra på?

Lite kod:

<%@ LANGUAGE="VBScript" %>

<%
Dim sokning
sokning = Request("sokning")

Set Connection = Server.CreateObject("ADODB.Connection")

Connection.Open "DSN="

SQLStmt = "SELECT \* FROM Link "
SQLStmt = SQLStmt & "WHERE beskrivning LIKE '%" & sokning & "%' "
SQLStmt = SQLStmt & "OR "
SQLStmt = SQLStmt & "titel LIKE '%" & sokning & "%' "
SQLStmt = SQLStmt & "ORDER BY Titel "

Set RS = Connection.Execute(SQLStmt)

%>

<html>
<head></head>

<body>

<%

CurrentRecord = 0

Do While CheckRS(RS)%>

<a href="<%= RS("url") %>"><font size="3"><strong><%= RS("titel") %></strong></font></a>

<p><%= RS("beskrivning") %> </p>

<%
RS.MoveNext

CurrentRecord = CurrentRecord + 1

Loop
%>

<% If CurrentRecord = 0 Then %>

<p>Tyvärr fanns det ingenting som matchade din sökning.</p>

<%
End If
Connection.Close
%>

</html>

Mvh
Jörgen

Medlem sedan dec. 20002 526 inlägg
#2

jag vet inte...men jag tycker du kan sätta ihop sql satsen lite kanske...? det har jag gjort... på en ända lång rad :e

din kod ser väldigt lång ut, men det är den ju inte om man kollar på alla mellanrum som du har ;) men eftersom jag är ganska ny på det med asp kan jag inte säga så mkt... :( har försökt iaf :e

Medlem sedan juni 2000547 inlägg
#3

Min första fråga blir: Vad använder du CurrentRecord till? för att räkna antalet träffar? Gör om till ett Recordset och använd istället RecordCount i så fall.

<%@ LANGUAGE="VBScript" %>
<%
sokning = Request("sokning")
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "DSN="
SQLStmt = "SELECT * FROM Link WHERE beskrivning LIKE '%" & sokning & "%' " & "OR titel LIKE '%" & sokning & "%' ORDER BY Titel"
Set RS = Server.CreateObject(!ADODB.Recordset")
RS.Open SQLStmt, Connection, 1, 3
%>
<html>
  <body>
  <%
  If not (RS.EOF or RS.BF) Then
    Do While not (RS.EOF or RS.BF)
      %>
      <a href="<%= RS("url") %>">
        <font size="3">
          <strong>
            <%= RS("titel") %>
          </strong>
        </font>
      </a>
      <p>
        <%= RS("beskrivning") %>
      </p>
      <%
      RS.MoveNext
    Loop
  Else
      %>
      <p>
        Tyvärr fanns det ingenting som matchade din sökning.
      </p>
      <%
  End If
  Connection.Close
  %>
  </body>
</html>

Lite mindre kod. Kanske inte det mest effektiva sättet, men det funar bra prestandamässigt för mig och detta är liknande det sätt jag använder för en sökning i ett recordset.

------------------
~~~~~~~~~~~~~~~~~~~~
Silvio Fumei
silvio@fumei.net
www.fumei.net
~~~~~~~~~~~~~~~~~~~~

Medlem sedan juni 2000547 inlägg
#4

Glömde vissta att stoppa in en variabel för antalet träffar också. Det görs genom att lägga in följande kod efter öppningen av RS.

AntalTraffar = RS.RecordCount

Ha överseende med stavfelen i vissa delar av ovantsående kod, men klockan är ändå ett på natten och jag har nyss kommit hem från jobbet.

------------------
~~~~~~~~~~~~~~~~~~~~
Silvio Fumei
silvio@fumei.net
www.fumei.net
~~~~~~~~~~~~~~~~~~~~

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