webForumDet fria alternativet

Söken funkar inte

ASP

5 svar · 268 visningar · startad av streetrobban

Medlem sedan jan. 20011 140 inlägg
Frågan#1

Jag har en sök här som inte funkar riktigt. Jag har en sida som heter search.asp där man matar in vad man ska söka efter, den ser ut så här:

<form method="post" action="search2.asp">

<input type="text" name="search" class="input"><br>
<br>
<input type="submit" value=" Search " class="button">

</form>

Och såhär ser search2.asp koden ut, som inte funkar:

<!--#include file="inc_db.asp" -->

<% SQL = "SELECT * FROM news WHERE writer = " & Request.Form("search")
Set objRecSet = objConn.Execute(SQL)

if objRecSet.EOF Then
Response.Redirect("error.asp")
Else %>

<% Do Until ojbRecSet.EOF %>

<span class="topic"><b><%= objRecSet("topic")%></b></span><br>
<span class="news"><%= objRecSet("writer")%> - <%= objRecSet("date")%></span><br>
<%= objRecSet("news")%><br>
<br>

<% objRecSet.MoveNext
Loop %>

<% End if %>

<% objConn.Close
Set objRecSet = Nothing
Set objConn = Nothing %>

Mitt felmeddelande:

Microsoft OLE DB Provider for ODBC Drivers fel '80040e10' 

[Microsoft][Drivrutin för ODBC Microsoft Access] För få parametrar angavs. 1 förväntades. 

/asp/news/search2.asp, rad 76

Vad är felet?

Sedan undrar jag hur man gör för att söka i flera kolumner (inte bara "writer" kolumnen, alltså alla kolumner i news tabellen), och göra så att den skriver ut poster som innehåller texten, typ om man söker på "spel" så kommer nyheter innehållande texten "spelade" och "spelar" upp. Hoppas någon förstår mig.

Medlem sedan jan. 20011 140 inlägg
#2

Men vad dum jag är som söker efter att jag skrivit mitt inlägg. Nu fick jag det att funka. :r
Jag undrar dock hur man får texten man sökt på att bli fet (<b></b> ). Ex.
Om jag söker på "ping" å den hittar en post med "pingvin" så ska det se ut såhär:
pingvin

jag undrar fortfarande hur man gör för att söka i hela tabellen nyheter.

[Redigerat av streetrobban den 14 apr 2001]

Medlem sedan dec. 200012 464 inlägg
#3

Jag förmodar att du har bytt till like. Sökning i flera kolumner

s = "'%" & Request.Form("search") & "%'"
<% 
SQL = "SELECT * FROM news " & _
" WHERE writer like " & s & _
"    OR news like " & s & _
"    OR topic like " & s

För att få fetstil (s definierat enligt ovan)

<% Do Until ojbRecSet.EOF %>

<span class="topic"><b><%= objRecSet("topic")%></b></span><br>
<span class="news"><%= objRecSet("writer")%> - <%= objRecSet("date")%></span><br>
[b]
<%
n = replace(objRecSet("news"),s,"<b>" & s & "</b>")
%>
<%= n%><br>
[/b]
<br>

<% objRecSet.MoveNext
Loop %>

Ungefär något sådant.

Red: glömde en parenters

------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 14 apr 2001]

Medlem sedan jan. 20011 140 inlägg
#4

Ok, nu ser min kod ut såhär:

<!--#include file="inc_db.asp" -->

<% sok = "'%" & Request.Form("search") & "%'" %>

<% SQL = "SELECT * From news " & _
" WHERE writer like " & sok & _
" OR news like " & sok & _
" OR topic like " & sok & _
" OR datum like " & sok
Set objRecSet = objConn.Execute(SQL)

if objRecSet.EOF Then
Response.Redirect("error.asp")
Else %>

<% Do Until objRecSet.EOF %>

<span class="topic"><b><%= objRecSet("topic")%></b></span><br>
<span class="date"><%= objRecSet("writer")%> - <%= objRecSet("datum")%></span><br>
<%= objRecSet("news")%><br>
<br>

<% n = replace(objRecSet("news"),sok,"<b>" & sok & "</b>") %>
<%= n %><br>

<% objRecSet.MoveNext
Loop %>

<% End if %>

<% objConn.Close
Set objRecSet = Nothing
Set objConn = Nothing %>

När jag söker skrivs hela nyheten (som sökordet finns med i) ut, men sedan blir det ett fel. Efter nyheten.

Körningsfel i Microsoft VBScript fel '800a005e' 

Ogiltig användning av Null: 'replace' 

/asp/news/search2.asp, rad 97
Medlem sedan dec. 200012 464 inlägg
#5

Det verkar som dina kolumner i databasen är odefinierade, innehåller null. Du kan lägga till en koll innan replace, men du borde nog se till att man alltid anger något värde för dessa kolumner.

<%
if  isNull(objRs("news")) then
    n = objRs("news")
else
n = replace(objRecSet("news"),sok,"<b>" & sok & "</b>") 
end if
%>

------------------
essentitia preter non sans multiplicandum

Medlem sedan feb. 200112 078 inlägg
#6

Jag har för mig.. att det kan vara detta som är problemet..
I en sådan select-sats har det strulat för mig med..

testa detta

Dim strQuot
strQuot = Chr(39)

SQL = "SELECT * FROM news WHERE writer = " & strQuot & Request.Form("search")

Som sagt.. det kan vara det.. jag har FÖÖR mig det.. :) jaja ..

------------------
*Notepad.exe for president*

262 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)