webForumDet fria alternativet

Angående Sökfunktion

ASP

12 svar · 380 visningar · startad av MickeA.com

Medlem sedan feb. 20034 441 inlägg
Frågan#1

Hej Svejs

Jag ska göra en sökfunktion till det jag håller på med nu, en adresslista.

Fälten det gäller är:

Adress
Gatunummer
Portkod
Nycklar
Övrigt

Hur ska jag bygga upp det här, för man ska ju kunna söka på tex. gatunummer 12, då ska man få upp alla adresser med nr 12 osv.

Är inte riktigt med alls, så tips, idéer och kod vore grymt ;)

Medlem sedan juli 20033 147 inlägg
#2

Är det access eller mysql du använder?

Medlem sedan feb. 20034 441 inlägg
#3

Jasså, glömde, det är Access för fulla muggar ;)

Medlem sedan juli 20033 147 inlägg
#4

Okej :)

Den här koden funkar finfint för mig, tyvärr inte jag som har gjort den :OO

<%If Request.QueryString("do") = "" Then%>

<table cellspacing="0" cellpadding="0" border="0">
  <tr> 
      <td>Sök i min databas:</td>
  </tr>
   <tr> 
    <form name="sok" method="post" action="sok.asp?do=sok">
      <td><input type="text" name="sokord" size="22" maxlength="20">&nbsp;
       <select name="falt">
           <option value="username" name="falt">Användarnamn
		   <option value="firstname" name="falt">Förnamn
		   <option value="lastname" name="falt">Efternamn
		   <option value="email" name="falt">Email
		   <option value="stad" name="falt">Stad
		   <option value="info" name="falt">Information
        </select>
       &nbsp;<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" border="0">
  <tr> 
      <td>Sök i min databas:</td>
  </tr>
  <tr> 
    <form name="sok" method="post" action="sok?do=sok">
      <td><input type="text" name="sokord" size="22" maxlength="20">&nbsp;
       <select name="falt">
           <option value="username" name="falt">Användarnamn
		   <option value="firstname" name="falt">Förnamn
		   <option value="lastname" name="falt">Efternamn
		   <option value="email" name="falt">Email
		   <option value="stad" name="falt">Stad
		   <option value="info" name="falt">Information
        </select>
       &nbsp;<input type="submit" name="Submit" value="Sök"></td>
    </form>
 </tr>
  <tr> 
      <td>&nbsp;</td>
    </tr>
  <tr> 
      <td><b>Sökresultat</b></td>
    </tr>
  <tr> 
      <td>&nbsp;</td>
    </tr>
        <%Falt = Trim(Request.Form("falt"))

        If Len(Request.Form("sokord")) > 0 then 

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

        SQL = "Select * From " & Tabbe & " Where " & Falt & " Like '%" & Request.Form("sokord") & "%' Order By id Desc"
        RecSet.Open SQL, Conn

 	If RecSet.EOF Then
            Response.write "<tr><td>Sökordet <b>" & Request.Form("sokord") & "</b> gav inga fräffar!</td></tr>"
        Else
        Do Until RecSet.EOF
            Response.Write "<tr height=15><td><b>" & RecSet("username") & "</b> " & Left(RecSet(falt),30) & "</td></tr>"
        RecSet.MoveNext
	Loop

	RecSet.Close
	Set RecSet = Nothing
        End If
   Else
       Response.write "<tr><td>Du glömde skriva ett sökord!</td></tr>"
   End If%>
</table>

<%End If%>

Du får byta ut vad du ska söka på, som, användarnamn etc. etc.

Du ser säkert själv i koden var du ska ändra :)

Medlem sedan feb. 20034 441 inlägg
#5

Jo, men jag hade tänkt mig ngt helt annat, men det är kanske e ngt iaf.

Helst skulle jag ju vilja ha ett forumulär, där alla textfält finns med, sen ändras SQL-satsen beroende på vad som är ifyllt.

Men det blir svårt, eller?!

Medlem sedan juli 20033 147 inlägg
#6

Aha nej, det är inge svårt...
Samma princip som koden ovan bara att du byter ut

<select name="falt">
<option value="username" name="falt">Användarnamn
<option value="firstname" name="falt">Förnamn
<option value="lastname" name="falt">Efternamn
<option value="email" name="falt">Email
<option value="stad" name="falt">Stad
<option value="info" name="falt">Information
</select>

mot

<input value="username" name="falt" size="30">

and so on...

Medlem sedan feb. 20034 441 inlägg
#7

Du menar:

<input [b]type='text'[/b] namn='falt' size='30'>

????

Eller har jag missat ngt?

Medlem sedan juli 20033 147 inlägg
#8

Precis så jag menar :D Skrev visst lite fel...

Medlem sedan feb. 20034 441 inlägg
#9

HeHe, bra, då hade jag inte misst ngt iaf.

Men sen då*?

hur går jag vidare om jag vill ha två sökfält och SQL'en är olika beroende på vilken textruta man valt att skriva i.

Skriver man i två, vilken använder den då? osv

Lite sånt undrar jag över med

Medlem sedan feb. 20034 441 inlägg
#10

'Nu har jag problem...'

Här är min kod som jag knåpat ihop:

adress = Trim(Replace(Request.Form("adress"),"'", "''"))
nr = Trim(Replace(Request.Form("nr"),"'", "''"))

If adress <> "" Then
	strSQL = "SELECT * FROM nycklar WHERE Adress = '" & adress & "' ORDER BY Adress ASC;"
	sokord = adress
Elseif nr <> "" Then
	strSQL = "SELECT * FROM nycklar WHERE Gatunummer = '" & nr & "' ORDER BY Adress ASC;"
	sokord = nr
Elseif adress <> "" AND nr <> "" Then
	strSQL = "SELECT * FROM nycklar WHERE Adress = '" & adress & "' AND Gatunummer = '" & nr & "' ORDER BY Adress ASC;"
	sokord = adress						
End If

Set oRec = oConn.Execute(strSQL) 

If oRec.EOF Then
	Response.write "<table border='0' width='100%' height='100%'><tr align='center' valign='middle'><td align='center' vailgn='middle'>Sökordet <b>' " & sokord & " '</b> gav inga träffar!<br><br><a href=""javascript:openwinsize('func.asp?a=srch_form',width=380,height=180);"">[ Sök Igen ]</a></tr></td>"
Else
	Response.Write("<table border='0' bordercolor='#000000' cellpadding='0' cellspacing='0'><tr><td colspan='3'></tr>")
	Do Until oRec.EOF
						
	cnt = cnt + 1
	strColor = "#FCFDC7" 
		If cnt Mod 2 = 0 then strColor = "#FEFEDE"%>
			<tr bgcolor="<%= strColor%>">
				<td width='200'><a href="visa_adr.asp?action=show&id=<%=oRec("ID")%>"><%=oRec("Adress") & "</td><td align='center' style='width:100%;'>" & oRec("Gatunummer")%></a></td><td></td>
			</tr>
			<tr>
				<td colspan='3' height='5'></td>
			</tr><%
			oRec.MoveNext
			Loop%>
			<tr><td height='15' colspan='3'></td></tr><tr><td colspan='3'></td></tr></table><%							
End If

Söker man på tex. 3, så listas alla adressen vars gatunummer är 3, vilket är helt rätt.

Men att söka på adressen bara funkar inte.

Jag vill ha det så att söker jag på H eller h så ska alla adresser som börjar på H eller h listas, söker jag på 'horn' så ska tex. alla adresser på 'Hornsgatan' listas osv.

Men vad jag än skriver, så funakr det inte, såvida jag inte söker på 'Hornsgatan', då hittar den jualla, men då har jag likspom förlorat själva syftet med en sökfunktion.

Så lite hjälp vore himla bra, det är säkert ngt lätt, men som 'är för svårt för mig ;)

Medlem sedan feb. 20034 441 inlägg
#11

Jag sökte lite här och sen bytte jag ut '=' mot 'LIKE' och då funkade det genst mkt bättre.

Hur ska jag göra om jag vill sortera posterna efter BÅDE ADRESS OCH GATUNUMMER??

Det verkar inte gå, men det skulle ju vara bra eftersom det är adressen jag ska sortera, så BORDE man kunna sortera efter två kolumner, eller?

Medlem sedan mars 20015 287 inlägg
#12

ORDER BY Adress, Gatunummer

Medlem sedan feb. 20034 441 inlägg
#13

ok, tack så mkt ;)

260 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)