Søg efter film med følgende instruktør:<br> <form method="POST" action="search.asp?mode=instruk_search"> <input name="instruk_search" type="text" class="forms" size="20"><br> <input name="Action" type="submit" class="formsknap" value="Søg"></form><br><br>
Søg efter film fra følgende studio:<br> <form method="POST" action="search.asp?mode=studio_search"> <input name="studio_search" type="text" class="forms" size="20"><br> <input name="Action" type="submit" class="formsknap" value="Søg"></form><br><br>
Søg efter film fra følgende genre:<br> <form method="POST" action="search.asp?mode=genre_search"> <input name="genre_search" type="text" class="forms" size="20"><br> <input name="Action" type="submit" class="formsknap" value="Søg"></form>
Så var det jeg tænkte, at hvis brugeren kunne vælge hvad han ville søge med en select, så sparer jeg en masse kode...OG det ser kønnere ud.
Men search.asp har forskellige mode´s derfor: <select class="forms" name="action"> <option Value="">- Vælg -</option> <option value="../search.asp?mode="actor_search">Skuespiller</option> <option value="../search.asp?mode="instruk_search">Instruktør</option> <option value="../search.asp?mode="studio_search">Studio</option> <option value="../search.asp?mode="genre_search">Genre</option> </select>
Hmm, ja den virker. Men den gør ikke det rigtige...
Men det tror jeg egentlig er min skyld.
Hvis du kigger på den gamle måde jeg gjorde det på:
Søg efter film med følgende instruktør:<br> <form method="POST" action="search.asp?mode=instruk_search"> <input name="instruk_search" type="text" class="forms" size="20"><br> <input name="Action" type="submit" class="formsknap" value="Søg"></form><br><br>
Så ville ordet i søgefeltet lande i dette her ASP script og give et resultat. Den løsning du har givet virker fint, bortset fra den ikke give søge-maskinen et ord at arbejde med.
<% Response.Buffer = True %> <% if request.querystring("mode") = "instruk_search" then %> <% ' Henter værdien fra soeg.htm strKeyword = Trim(Request.Form("instruk_search"))
If Len(strKeyword) = 0 Then ' Hvis der ikke er skrevet i feltet Response.Clear Response.Redirect("search.asp?instrukerror=Du har vist glemt at angive et søge ord :)") Else ' Hvis der er skrevet i feltet strKeyword = Replace(strKeyword,"'","''") End If
' Opbygger en dynamisk SQL streng strSQL = "SELECT Trailer.ID as id, Trailer.titel, Trailer.detalje, Trailer.dato, TrailerDetail.Omtale FROM Trailer inner join TrailerDetail on TrailerDetail.id = Trailer.id WHERE Trailer.titel like '%" & strKeyword & "%' OR Instruk LIKE '%" & strKeyword & "%' ORDER BY Titel"
' Skaber DSNLess forbindelse til DBen strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("../db/data.mdb") Set myConn = Server.CreateObject("ADODB.Connection") myConn.Open strDSN
' Skaber et recordset udfra SQL strengen Set rs = myConn.Execute(strSQL) If Not (rs.BOF Or rs.EOF) Then ' Hvis der er fundet poster på søgningen Response.Write"<Table cellpadding=1 cellspacing=0 width=505>" Response.Write"<tr>" Response.Write"<td align='left' width=350 class=trailers bgcolor=#960000><strong><font color=#FFFFFF>Titel</font></strong></td>" Response.Write"</tr>" Do While Not rs.EOF
Else ' Hvis der ikke er fundet poster på søgningen Response.Write"<Table cellpadding=1 cellspacing=0 width=505>" Response.Write"<tr>" Response.Write"<td align='left' width=350 class=trailers bgcolor=#960000><strong><font color=#FFFFFF>Desværre</font></strong></td>" Response.Write"</tr>" Response.Write"<tr><td align='left' with='350' class='border'>" ' Hvis der ikke er fundet poster på søgningen Response.Write("Der er desværre ikke fundet nogen film, der passer på din søgning.") End If Response.Write"</td></tr></table>" ' Rydder op efter os myConn.Close Set myConn = Nothing %> <% end if %> <% if request.querystring("mode") = "" then %>
er det ikke kun hvis du ikke skriver noget i søgefeltet? Umiddelbart kan jeg ikke teste ASP-kode af så jeg har ikke mulighed for at se om der er problemer i den måde du gør det på. Men jeg kan i hvert fald se at: strKeyword = Trim(Request.Form("instruk_search")) nok skal hedde: strKeyword = Trim(Request.Form("search")) hvis du vil bruge den sammen med den nye form du har lavet.
Jeg lagde lige mærke til at den form du viste 09/11-2004 00:59:13 ikke svarede særlig meget til det vi havde lavet før. Er det blot for at teste det af? Nu ved jeg jo heller ikke hvordan Request.Form virker, for den skulle jo gerne hente værdien af et felt, ikke sandt?
action="search.asp?" kan du forresten og bare skrive som action="search.asp". Gør nok ikke den store forskel, men alligevel ;-) Desuden kan du godt fjerne onchange="this.form.submit()". Form-elementer understøtter ikke den slags events, medmindre jeg har misset noget.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.