Avatar billede plato Juniormester
08. november 2004 - 22:30 Der er 19 kommentarer og
1 løsning

Form skal vælge efter select

Hejsa NG.

Nogen der kan hjælpe mig med at få <form> til at reagere efter <select>?

<p>
<form method="POST" action="">
  <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>
  <input name="search" type="text" class="forms" size="20"><br>
  <input name="Action" type="submit" class="formsknap" value="S&oslash;g">
</form>
</p>
Avatar billede plato Juniormester
08. november 2004 - 22:50 #1
Er der slet ingen der kan hjælpe?
Eller er spm ikke forståeligt? ;)
Avatar billede skovenborg Nybegynder
08. november 2004 - 22:54 #2
hvad skal den da kunne ?-)
Avatar billede plato Juniormester
08. november 2004 - 22:57 #3
Jeg plejer at have en form for hvert felt:

                <form method="POST" action="search.asp?mode=actor_search">
                            <input name="actor_search" type="text" class="forms" size="20"><br>
                            <input name="Action" type="submit" class="formsknap" value="S&oslash;g"></form><br><br>

                           


                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&oslash;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&oslash;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&oslash;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>

Men det virker selvfølgelig ikke ;)
Avatar billede skovenborg Nybegynder
08. november 2004 - 23:00 #4
ahh, jamen så kunne du prøve sådan her:
<p>
<form method="POST" action="">
  <select class="forms" name="action" onchange="if (this.selectedIndex > 0) {this.form.action = this.value;">
    <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>
  <input name="search" type="text" class="forms" size="20"><br>
  <input name="Action" type="submit" class="formsknap" value="S&oslash;g">
</form>
</p>
Avatar billede skovenborg Nybegynder
08. november 2004 - 23:01 #5
av for en smutter:
onchange="if (this.selectedIndex > 0) {this.form.action = this.value;}"
Avatar billede plato Juniormester
09. november 2004 - 00:06 #6
Den virker ikke. Men du har heller ikke rette din smutter ;-)
Avatar billede plato Juniormester
09. november 2004 - 00:07 #7
Hovs...Jo det havde du. Men det virker ikke. Den foretager sig intet.
Avatar billede skovenborg Nybegynder
09. november 2004 - 00:21 #8
mærkeligt, det her virker fint hos mig:
<p>
<form method="POST" action="">
<select class="forms" name="action" onchange="if (this.selectedIndex > 0) {this.form.action = this.value;}">
    <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>
  <input name="search" type="text" class="forms" size="20"><br>
  <input name="Action" type="submit" class="formsknap" value="S&oslash;g">
</form>
</p>

Skal lige gøre opmærksom på at både din submit-knap og select-boks har samme navn. Ikke fordi det er direkte forkert, meeen ;-)
Avatar billede plato Juniormester
09. november 2004 - 00:33 #9
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&oslash;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
   
if rs("detalje") = true then

        Response.Write"<tr><td align='left' with='350' class='trailers'>"
    Response.Write "- <a href=""showmovie.asp?id=" & rs("id") & """>" & rs("titel") & "</A><br>"
    Response.Write"</td></tr>"
   
end if
 


rs.MoveNext
    Loop
Response.Write"<tr><td align='left' class=moviebottom>&nbsp;</td></tr></table>"   
   
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 %>



<% Response.Write request.querystring("instrukerror") %>



<% end if %>
Avatar billede skovenborg Nybegynder
09. november 2004 - 00:46 #10
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.
Avatar billede skovenborg Nybegynder
09. november 2004 - 00:47 #11
altså konklusionen må være at du nok bare har glemt at opdatere nogle navne et par steder ;-)
Avatar billede plato Juniormester
09. november 2004 - 00:59 #12
Jeg har ændret
strKeyword = Trim(Request.Form("instruk_search"))
til

strKeyword = Trim(Request.Form("search"))

og har lavet følgende form:

<p>
<form method="get" action="search.asp?" onchange="this.form.submit()">
  <select class="forms" name="mode">
    <option Value="">- Vælg -</option>
    <option value="actor_search">Skuespiller</option>
    <option value="instruk_search">Instruktør</option>
    <option value="studio_search">Studio</option>
    <option value="genre_search">Genre</option>
  </select>
  <input name="search" type="text" class="forms" size="20"><br>
  <input type="submit" class="formsknap" value="S&oslash;g">
</form>
</p>

Den virker...næsten...Den vil ikke smide:

<input name="search" type="text" class="forms" size="20"><br>

ordet fra denne ind i ASP scriptet.
Avatar billede plato Juniormester
09. november 2004 - 01:00 #13
Så siger den nemlig bare:

"Du har vist glemt at angive et søgeord"
Avatar billede skovenborg Nybegynder
09. november 2004 - 01:00 #14
prøv at ændre method="get" til method="post". Sådan som du også havde før.
Avatar billede plato Juniormester
09. november 2004 - 01:04 #15
Dur ikke.. Så skriver den bare search.asp? i browseren.
Avatar billede plato Juniormester
09. november 2004 - 01:05 #16
Nå...Det er sengetid. Tror jeg skal have bestikket en eller anden til at lave mig et bedre søgescript ;-)
Avatar billede skovenborg Nybegynder
09. november 2004 - 01:06 #17
ellers tales vi bare ved i morgen ;-)
Avatar billede plato Juniormester
09. november 2004 - 01:07 #18
Yes ;-)
Avatar billede skovenborg Nybegynder
16. november 2004 - 01:20 #19
har du fundet ud af noget siden sidst?

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.
Avatar billede plato Juniormester
13. januar 2006 - 17:12 #20
Lukket. Ikke relevant mere.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester