Avatar billede mydream Nybegynder
17. august 2005 - 20:51 Der er 19 kommentarer og
1 løsning

At modtage flere værdier fra en formular

Jeg har en søgning, der tillader at vælge flere amter under punktet OLandsdel. Hvis brugeren vælger flere, hvordan samler jeg så dem op. Hvis jeg bare siger request.form(OLandsdel) så kommer der ingenting med.

Hvad gør jeg?
Avatar billede erikjacobsen Ekspert
17. august 2005 - 21:39 #1
Du skal måske vise noget kode?
Avatar billede mydream Nybegynder
17. august 2005 - 21:47 #2
<select name="OLandsdel" size="5" multiple id="OLandsdel" >
      <option value="0">Nordjylland</option>
      <option value="1" >&Aring;rhus</option>
      <option value="2">Viborg</option>

osv osv

skal fanges og bruges i en søgefunktion

Normalt vil jeg jo fange een med request.form() og så putte den direkte ind i min sql sætning, men her vil det jo muligvis dreje sig om flere amter, så hvordan fanger jeg dem alle, og sætter ind i min søge sql?
Avatar billede erikjacobsen Ekspert
17. august 2005 - 21:55 #3
og din asp-kode?
Avatar billede mydream Nybegynder
17. august 2005 - 21:57 #4
function Seeking (OType, OPostnummerFRA, OPostnummerTIL, OPriskategori, OLandsdel)
    sql="select * from Oplevelsessted where OPriskategori <= "& OPriskategori &""
   
    if OType = "Alle typer" then sql = sql & "" else sql = sql & " and OType='"& OType &"'"    end if
    if OLandsdel = "Ikke vigtig" then sql = sql & "" else sql = sql & " and OLandsdel='"& OLandsdel &"'"    end if
   
    sql = sql & " and OPostnummer > "& OPostnummerFRA &""   
    sql = sql & " and OPostnummer < "& OPostnummerTIL &""   
   
    Set Record = DB.Execute(sql)
end function
Avatar billede erikjacobsen Ekspert
17. august 2005 - 21:58 #5
Ja, men det er ikke et sql-problem. Endnu da. Du skal have det ud af fra din <form>. Hvad skriver du der i ASP?
Avatar billede mydream Nybegynder
17. august 2005 - 22:02 #6
måske vi taler forbi hinanden, men jeg skriver ikke noget endnu, for jeg har ingen anelse om hvordan den skal fanges.

så lige nu står der kun: OLandsdelen = Request.Form("OLandsdel") og hvis der kun vælges eet amt, så passer det fint ind i min sql, men hvis der vælges flere, så fanges der ingenting.
Avatar billede erikjacobsen Ekspert
17. august 2005 - 22:06 #7
Måske. Men du får garanteret noget med over, nemlig en liste af tal med komma imellem.
Har du prøvet at udskrive OLandsdelen ?  Den skal du selvfølgelig bruge fornuftigt i din sql. Kender du konstruktionen IN:

  SELECT ... WHERE felt IN (7,9,13)

?
Avatar billede mydream Nybegynder
17. august 2005 - 22:09 #8
hvis jeg udskriver den, så giver den mig et array

Jeg kender ikke den konstruktion. Kan du hjælpe lidt mere?
Avatar billede erikjacobsen Ekspert
17. august 2005 - 22:13 #9
Et array? Får du ikke en streng med tal adskilt af komma?
Avatar billede mydream Nybegynder
17. august 2005 - 22:14 #10
0, 1, 2, 3
Avatar billede erikjacobsen Ekspert
17. august 2005 - 22:19 #11
Jeg har ikke sat mig ind i al din kode, men sådan groft sagt skal du kunne

"SELECT ...  WHERE ... Olandsdel IN (" & OLandsdel & ") ..."
Avatar billede mydream Nybegynder
17. august 2005 - 22:26 #12
ok, jeg prøver lige...
Avatar billede mydream Nybegynder
17. august 2005 - 23:28 #13
hmmmm, det virker ikke.

OLandsdel i tabellen skal jo blot være en af de amter, der vælges. Det virker som om denne sql sætning kræver at alle skal være repræsenteret.
Avatar billede mydream Nybegynder
17. august 2005 - 23:31 #14
sql="select * from Oplevelsessted where OPriskategori <= "& OPriskategori &""
   
    if OType = "Alle typer" then sql = sql & "" else sql = sql & " and OType='"& OType &"'"    end if
    if OLandsdel = "Ikke vigtig" then sql = sql & "" else sql = sql & " and Olandsdel IN ('" & OLandsdelen & "') "    end if
Avatar billede erikjacobsen Ekspert
18. august 2005 - 09:01 #15
Nu har du sat '...' omkring - det havde jeg ikke. Hvorfor har du det?
Avatar billede mydream Nybegynder
18. august 2005 - 09:48 #16
hej igen.
Min fejl. Det var i virkeligheden strenge jeg sendte og ikke tal, så jeg gik ind i formularen i stedet for og sate pinger omkring, og derefter IN(" & OLandsdelen & ")
og det virker selvfølgelig.

Mange tak for hjælpen.

Lægger du et svar?
Avatar billede erikjacobsen Ekspert
18. august 2005 - 09:57 #17
Nej tak, jeg samler slet ikke på point ;)
Svar selv, accepter eget svar.

Så må det jo være MySql du bruger ?
Avatar billede mydream Nybegynder
18. august 2005 - 10:02 #18
nej det er ikke mysql. Mener du ikke at pingerne er nødvendige, når det er Århus, Storstrøms, Vejle i stedet for 2,5,6 ?
Avatar billede erikjacobsen Ekspert
18. august 2005 - 10:05 #19
Jo, men du får jo tal over. Der stod '...' - mysql er en af dem, der accepterer '...' onkring talfelter. Det undrede mig lidt.

Generelt:
  Er det et talfelt: ingen '...' omkring (dog tillades det enkelte steder)
  Er det et tekstfelt: Altid '...' ømkring

Jeg fiskede også lidt efter om du ikke kunne have givet lidt flere oplysninger fra starten - måske ikke nødvendigt her, men en anden gang kunne det måske spare tid for dig (og andre) ;)
Avatar billede mydream Nybegynder
18. august 2005 - 10:28 #20
Faktisk var jeg nødt til at lave det om så jeg ikke fik tal over men amtsnavne, men det er en helt anden historie.

Nogen gange tror man at man stiller et klart og tydeligt spørgsmål, men i virkeligheden er det ren volapyk for andre. Det må jeg vist arbejde lidt på.

Endnu engang tak for hjælpen.
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