webForumDet fria alternativet

Enkel sökfråga

ASP

4 svar · 184 visningar · startad av Steveking

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

Jag har en enkel sökfunktion.
Söksidan ser ut såhär


<form name="form1" method="post" action="vin1.asp">
<input type="text" name="sok" size="20">
<select name="select" size="1" class="INPUT">
    <option selected>Maträtter</option>
    <option>Vin</option>
  </select>
<input type="submit" name="Submit" value="Sök" class="INPUT">
</form>

Som ni ser så har ja en dropdown meny med 2 val.
Ena valet är Vin och andra valet är Maträtter.

Sidan som jag tar emot sökningen med er ut såhär


<%sok = request("sok")
%>
        <%
	set Conn=server.createobject("adodb.connection")
	path="DBQ=" & server.mappath("mat.mdb")
	conn.open "driver={microsoft access driver (*.mdb)}; " & path," ",""
        
         sql="SELECT * FROM vine WHERE vin LIKE '%" & Request.Form("sok")& "%'" 
         set visa = conn.execute(sql)

%>
        
        <%do until visa.eof
'hämta värden
vin=visa("vin")
typ=visa("typ")
%>
         <br>
      
        
          
        <%response.write("<b>" &vin &"</b>")

%>
           
      
        <%response.write(typ &"<br>")

%>
           
     
        <%visa.movenext
loop
	  %>

Där är en enkel hämtning av sökningen.

Men vad jag nu vill är att om man väljer maträtter i dropdown menyn så ska den ta

 sql="SELECT * FROM mat WHERE mat LIKE '%" & Request.Form("sok")& "%'" 
         set visa = conn.execute(sql)

Och visa maträtterna först och inte vinet.
Sen tvärt om när man väljer vin i dropdown menyn.

------------------
Mvh :)

[Redigerat av Steveking den 24 okt 2001]

Medlem sedan dec. 200012 464 inlägg
#2

Du får ha två separata loopar.

<%
sok = request("sok")
set Conn=server.createobject("adodb.connection")
path="DBQ=" & server.mappath("mat.mdb")
conn.open "driver={microsoft access driver (*.mdb)}; " & path," ",""

if request.form("select") = "Vin" then
sql="SELECT * FROM vine WHERE vin LIKE '%" & Request.Form("sok")& "%'" 
set visa = conn.execute(sql)

do until visa.eof
'hämta värden
vin=visa("vin")
typ=visa("typ")
%>
<br>

<%
response.write("<b>" &vin &"</b>")
response.write(typ &"<br>")
visa.movenext
loop
else
sql="SELECT * FROM mat WHERE mat LIKE '%" & Request.Form("sok")& "%'" 
set visa = conn.execute(sql)
while not visa.eof
'visa mat
visa.movenext
wend
end if
%>

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

Medlem sedan okt. 200112 inlägg
#3

Du måste ha "Value" på dina option-taggar.

<select name="select" size="1" class="INPUT">
<option value="mat" selected>Maträtter</option>
<option value="vin">Vin</option>

Sedan kollar du bara i ASPn vad användaren valt:

<%
Select Case LCase(request.Form("select"))
Case "mat"
     sql = "SELECT * FROM mat WHERE mat LIKE '%" & Request.Form("sok")& "%"
Case "vin"
     sql = "SELECT * FROM vin WHERE vin LIKE '%" & Request.Form("sok")& "%"
Case else
     Response.Write("Felaktig request")
     Response.End
End Select
%>

Vill du visa både mat och vin efter varandra kan du söka i flera tabeller:

sql = "SELECT * FROM vin,mat WHERE (vin.vinNamn  LIKE '%" & Request.Form("sok")& "%) or (mat.matNamn  LIKE '%" & Request.Form("sok")& "%)"

typ..

//Micke

Medlem sedan aug. 2001150 inlägg
#4

Tack guys.
såhär gjorde jag


<%sok = request("sok")
%>
<%
	set Conn=server.createobject("adodb.connection")
	path="DBQ=" & server.mappath("mat.mdb")
	conn.open "driver={microsoft access driver (*.mdb)}; " & path," ",""
        
if request.form("select") = "Vin" then
sql="SELECT * FROM vine WHERE vin LIKE '%" & Request.Form("sok")& "%'" 
set visa = conn.execute(sql)
  
elseif request.form("select") = "typ" then
sql="SELECT * FROM vine WHERE typ LIKE '%" & Request.Form("sok")& "%'" 
set visa = conn.execute(sql)

end if%>

<%do until visa.eof
'hämta värden
vin=visa("vin")
typ=visa("typ")
%>

      <%response.write("<b>" &vin &"</b>")

%>

      <%response.write(typ &"<br>")

%>
     
  <%visa.movenext
loop
%>

Nu är problemet att om den inte hittar något vin etc så blir det bara tomt.

Vad lägger ja till så den tex skriver.
(inga träffar)

------------------
Mvh :)

[Redigerat av Steveking den 24 okt 2001]

Medlem sedan dec. 200012 464 inlägg
#5

Ungefär så här

<%sok = request("sok")
%>
<%
set Conn=server.createobject("adodb.connection")
path="DBQ=" & server.mappath("mat.mdb")
conn.open "driver={microsoft access driver (*.mdb)}; " & path," ",""

if request.form("select") = "Vin" then
sql="SELECT * FROM vine WHERE vin LIKE '%" & Request.Form("sok")& "%'" 

elseif request.form("select") = "typ" then
sql="SELECT * FROM vine WHERE typ LIKE '%" & Request.Form("sok")& "%'" 
else
response.write "Du måste välja ett alternativ <br>"
response.end
end if%>

set visa = conn.execute(sql)
if visa.eof then
response.write "Det fanns inget <br>"
response.end
end if

<%do until visa.eof

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

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