webForumDet fria alternativet

Söka på bokstav eller från formulär

ASP

10 svar · 185 visningar · startad av Choronzon

Medlem sedan aug. 20011 346 inlägg
Frågan#1

Hej, kan någon vänlig själ hjälpa mig med att få sökfunktionen att fungera?
Jag har en databas, members, från den plockar jag ut medlemmar och nu vill jag kunna söka på första bokstaven i förnamnet plus att jag vill kunna skriva in ett namn i en input och få upp alla ev träffar på det. Jag har sökt här på forumet och fått många träffar på frågan, men jag har tydligen missat något grundläggande för jag fattar inte hur jag ska göra ändå..ett felmeddelande jag får är att end saknas efter set connect="nothing.."

Tack på förhand.

---------------------sok.asp---------------------------
<html>
<head>
<title>sok.asp</title>
</head>
<body>
<a href="search_users.asp?boks=A">A</a>
<a href="search_users.asp?boks=B">B</a>
<a href="search_users.asp?boks=C">C</a>
D
E
osv.. <br>

<form method="post" name="form" action="search_users.asp">
<input name"sokinput" size="20">
<input type="submit" name="submit" value="sok">
</form>
</body>
</html>

------------------search_users.asp----------------------
<!-- #include file="include/adovbs.inc" -->

<%

If Session("login") <> "ok" Then
Session("meddelande") = "Du har blivit utloggad!"
Response.Redirect "default.asp"
End If

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db/members.mdb")&";pwd=losen"

Set RecSet = Server.CreateObject("ADODB.Recordset")

Addera = "Select * From members Where fnamn LIKE '"&bokstav&"%'ORDER BY datum"
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic

If request.form("sokinput") <> "" Then
bokstav = request.form("sokinput")

Else if request.querystring("boks") <> "" Then
bokstav = request.querystring("boks")

Else
response.redirect(fel.asp)
End if

%>

<html>
<head>
<title>search_users.asp</title>
</head>
<body>

<table>
<tr>
<td>Medlemmar</td>
</tr>
<tr>
<td>
<table>
<tr>
<td>Lägg till?</td>
<td>Namn</td>
<td>Hur</td>
<td>Status</td>
<td>Senast påloggad</td>
</tr>
<%
X = 0
DO Until RecSet.EOF OR X = 50
X=X+1
%>
<tr>
<td><a href="whois.asp?checkid=<%=RecSet("id")%>"><%=RecSet("fnamn")%></a></td>
<td><%=RecSet("enamn")%></td>
<td><font size="1" <%if recset("status") = "offline" then%> color="#FF0000" <%else%>color="#00CC00" <%end if%>"><%=RecSet("status")%></font></td>
<td><%=RecSet("datum")%></td>
</tr>

<%

RecSet.MoveNext
Loop

RecSet.Close
Connect.Close

Set RecSet = nothing
Set Connect = nothing

%>

  \</table\>
\</td\>  

</tr>
</table>
</body>
</html>

[Redigerat av Choronzon den 17 dec 2001]

Medlem sedan dec. 200012 464 inlägg
#2

Else if

skrivs som ett ord

elseif

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

Medlem sedan aug. 20011 346 inlägg
#3

Ok tack, det fungerar att få upp medlemmarna nu, men oavsett vilken bokstav jag trycker på så kommer alla medlemmar upp..
Och formuläret funkar inte alls..?

---------------------sok.asp---------------------------
<html>
<head>
<title>sok.asp</title>
</head>
<body>
<a href="search_users.asp?boks=A" target="mainFrame">A</a>
B
C
...osv
<br>

<form method="post" name="form" action="search_users.asp">
<input name"sokinput" size="20">
<input type="submit" name="submit" value="sok">
</form>
</body>
</html>

Medlem sedan dec. 200012 464 inlägg
#4

Variabeln bokstav ges aldrig något värde innan du gör select.

If request.form("sokinput") <> "" Then
bokstav = request.form("sokinput")

Elseif request.querystring("boks") <> "" Then
bokstav = request.querystring("boks")

Else
response.redirect "fel.asp"
End if

Addera = "Select * From members Where fnamn LIKE '"& bokstav&"%'ORDER BY datum"

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

[Redigerat av LarsG den 17 dec 2001]

Medlem sedan aug. 20011 346 inlägg
#5

Funkar perfekt med bokstäverna, tackar för det :)
Men jag får inte formuläret att funka, ska jag skriva länkningen på något annat sätt?

Medlem sedan dec. 200012 464 inlägg
#6

Som det är nu så borde du hitta alla vars namn börjar på sökbegreppet. (Eller?)

Om du vill hitta alla namn som innehåller :

If request.form("sokinput") <> "" Then
bokstav = request.form("sokinput")
Elseif request.querystring("boks") <> "" Then
bokstav = "%" & request.querystring("boks")

Else
response.redirect "fel.asp"
End if

Addera = "Select * From members Where fnamn LIKE '"& bokstav&"%'ORDER BY datum"

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

Medlem sedan aug. 20011 346 inlägg
#7

Ska testa det senaste!

Vad jag menar med att jag vill göra med formuläret är att skriva in ett förnamn och så ska alla med det namnet listas, annars vill jag skicka dom till fel.asp.

Medlem sedan aug. 20011 346 inlägg
#8

Nja, det funkar som jag hade tänkt när jag klickar på bokstavslänkarna, det är själva formuläret som jag inte får att fungera.

Medlem sedan dec. 200012 464 inlägg
#9

vad händer nu när du fyller i fältet?

Om du vill ha en exakt match på förnamnet så får du skriva

If request.form("sokinput") <> "" Then
bokstav = request.form("sokinput")
Addera = "Select * From members Where fnamn = '"& bokstav&"'ORDER BY datum"

Elseif request.querystring("boks") <> "" Then
bokstav = request.querystring("boks")Addera = "Select * From members Where fnamn LIKE '"& bokstav&"%'ORDER BY datum"

Else
response.redirect "fel.asp"
End if

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

Medlem sedan dec. 200012 464 inlägg
#10

Jag såg ett fel i din HTML-kod, du saknar ett = vid name för inputfältet.

<input name="sokinput" size="20">

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

Medlem sedan aug. 20011 346 inlägg
#11

Ahh, att ett litet tecken kan göra så mycket.
Tusen tack för hjälpen med allt, nu ska jag bara sätta mig och försöka förstå vad jag gjort så jag minns det till nästa gång!
:)

------------------
_________________________________________
-- Çhørønzøñ II --

280 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
132 ms — deklarationer (db)
0 ms — hämta statistik (cache)
142 ms — hämta tråd, inlägg och bilagor (db)
134 ms — ändringar (db)