webForumDet fria alternativet

Hjälp med sökmotorproblem

ASP

1 svar · 173 visningar · startad av daniel234

Medlem sedan sep. 2004131 inlägg
Frågan#1

Vi har en sökmotor där man skaunna söa i namn och bildinfo från databasen. Man ska kunna söka i båda sammtidigt utan att välja.

Som det ser ut nu så fungerar det endast när man antingen väljer att söka i namn eller i bildinfo.

Vill helt enkelt ha bort valmöjlighetsknappen.

Någon som vet hur man ska ändra detta?

Kod:

<%
soknamn = "Sök i våran databas:"

link1 = "sok.asp"
link2 = "visa.asp" '**************SÖKSIDANS NAMN(DENNA FIL)************
db = Server.MapPath("db/galleri.mdb")

Tabbe = "bilder" '******************DATABASENS TABELLNAMN*************************

falt1 = "Id"

'***********DE FÄLTEN I DATABASEN SOM DU VILL KUNNA SÖKA I******************

falt2 = "Namn"
falt3 = "Bildinfo"

%>

<html>
<head>
<title>Sökfunktion</title>
<link rel="stylesheet" href="../sok/stil.css" type="text/css">
</head>
<body>

<%If Request.QueryString("do") = "" Then%>
<table cellspacing="0" cellpadding="0" width="250" border="0">
<tr>
<td>Sök i våran databas:</td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<form name="sok" method="post" action="<%=link1%>?do=sok">
<td><input type="text" name="sokord" size="22" maxlength="20"> 
<select name="falt">
<option value="<%=falt2%>" name="falt"><%=falt2%>
<option value="<%=falt3%>" name="falt"><%=falt3%>
</select>
 <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><%=soknamn%></td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<form name="sok" method="post" action="<%=link1%>?do=sok">
<td><input type="text" name="sokord" size="22" maxlength="20"> 
<select name="falt">
<option value="<%=falt2%>" name="falt"><%=falt2%>
<option value="<%=falt3%>" name="falt"><%=falt3%>
</select>
 <input type="submit" name="Submit" value="Sök"></td>
</form>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td><b>Sökresultat</b></td>
</tr>
<tr>
<td> </td>
</tr>
<%Falt = Trim(Request.Form("falt"))

    Set Conn = Server.CreateObject("ADODB.Connection")
    Set RecSet    = Server.CreateObject("ADODB.Recordset")
    Conn.Open "Driver={Microsoft Access Driver (\*.mdb)}; DBQ=" & db

Const perSida= 10
Sidan = Request.QueryString("sida")
If Sidan = "" then
sida = 1
Else
sida = Sidan
End If

With RecSet
.CursorLocation = 3
.CacheSize = perSida
End With

If Request.QueryString("ord") = "" Then
SQL = "Select * From " & Tabbe & " Where " & Falt & " Like '%" & Request.Form("sokord") & "%' Order By " & falt1 & " Desc"
Else
SQL = "Select * From " & Tabbe & " Where "& Request.QueryString("val") &" Like '%" & Request.QueryString("ord") & "%' Order By " & falt1 & " Desc"
End If
RecSet.Open SQL, Conn

If RecSet.EOF Then
        Response.write "\<tr\>\<td class=normal\>Sökordet \<b\>" & Request.Form("sokord") & "\</b\> gav inga fräffar!\</td\>\</tr\>\<tr\>\<td\>\</td\>\</tr\>"
    Else

With RecSet
.MoveFirst
.PageSize = perSida
.AbsolutePage = sida
End With

Sidor = RecSet.PageCount
X = 0
Do While Not RecSet.EOF And X < RecSet.PageSize
Response.Write "<tr height=15><td class=normal><b>»</b> <a href='" & link2 & "?id=" & RecSet(falt2) & "';>" & (RecSet(falt2)) & "</a></td></tr>"
Response.Write "<tr><td></td></tr>"
X=X+1
RecSet.MoveNext
Loop

RecSet.Close
Set RecSet = Nothing
    End If%\>
\<tr\>
  \<td\>
  \<%
    For Sid = 1 To Sidor 

If Request.QueryString("ord") = "" Then
If (Int(Sid)) = (Int(sida)) Then Response.Write "<b>" & Sid & "</b>" Else Response.Write " <a href=" & link1 & "?do=sok&ord=" & Request.Form("sokord") & "&val=" & Request.Form("Falt") & "&sida="& Sid &">" & Sid & "</a> " End If
Else
If (Int(Sid)) = (Int(sida)) Then Response.Write "<b>" & Sid & "</b>" Else Response.Write " <a href=" & link1 & "?do=sok&ord=" & Request.QueryString("ord") & "&val=" & Request.QueryString("val") & "&sida="& Sid &">" & Sid & "</a> " End If
End If
Next%>
</b>
</td>
</tr>
</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><b><%=RecSet(falt2)%> - <%=RecSet(falt4)%></b></td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td class="normal"><%=Replace(RecSet(falt3), vbCrLf, "<br>")%></td>
</tr>
</table>
<%End If%>

</body>
</html>

Medlem sedan apr. 20031 660 inlägg
#2

HEJ!

1. Ta bort allt som har med falt2 och falt 3 att göra.
2. Ersätt ... Where " & Falt & " Like... med endast LIKE, du ska ju inte ha några fält.
3. Ta samtidigt bort Tabbe, sätt bilder istället, du har ändå bara en tabell.
4. Skriv din kod mellan [KOD]-taggarna, betydligt lättare att läsa!

274 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
132 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
133 ms — ändringar (db)