Avatar billede kagge Nybegynder
24. april 2002 - 08:55 Der er 23 kommentarer og
1 løsning

Checkbox, søgestreng

Hvis man har nedenstående checkbox:

<FORM NAME="maened" ACTION="pc1.asp" METHOD="post">
    <input type="checkbox" name="problem" value="valg1"> valg1 <br>
    <input type="checkbox" name="problem" value="valg2"> valg2 <br>
    <input type="checkbox" name="problem" value="valg3"> valg3 <br>
    <input type="checkbox" name="problem" value="valg4"> valg4 <br>
    <input type="checkbox" name="problem" value="valg5"> valg5 <br>
    <input type="checkbox" name="problem" value="valg6"> valg6 <br>
    <input type="checkbox" name="problem" value="valg7"> valg7 <br>
    <input type="checkbox" name="problem" value="valg8"> valg8 <br>
    <input type="checkbox" name="problem" value="valg9"> valg9 <br>
    <input type="checkbox" name="problem" value="valg10"> valg10 <br>

Lad os så sige at brugeren vælger (valg1, valg3, valg4, valg7) og sender formularen.

Nu vil jeg så gemme brugerens valg i en variabel, så jeg senere kan bruge den i min sql-søgestreng.

nytproblem = Request.Form("problem")

strSQL = "SELECT Nr, Dato, Problemomr FROM Hotlineregistrering h WHERE h.problemomr = '" & nytproblem & "' ORDER BY h.Nr DESC"

Ovenstående vil selvfølgelig give problemer, da variablen vel hedder noget i stil med &#8221;valg1, valg3, valg4, valg7&#8221;.
Kolonnen &#8221;h.problemomr&#8221; indeholder jo kun ét valg i hver post, så den vil jo aldrig finde nogle poster der matcher søgekriteriet.

Nu er spørgsmålet så hvordan jeg kan bygge min søgestreng, variabler op så man ved søgningen f.eks. finder alle de poster i h.problemomr som indeholder værdierne valg1, valg3, valg4, valg7??????????????

Håber i forstår problemstillingen og at i kan hjælpe :)
Avatar billede kagge Nybegynder
24. april 2002 - 08:58 #1
Der er gået lidt ged i 3. sidste afsnit. &#8221; står åbenbart for "
Avatar billede erikjacobsen Ekspert
24. april 2002 - 09:30 #2
Hvad står der f.x af data i din h.problemomr ?
Avatar billede kagge Nybegynder
24. april 2002 - 09:36 #3
Det der ligger i h.problemomr er en af de 10 valgmuligheder. Det vil sige at der i h.problemomr kan ligge værdien = valg2 eller valg5 og så fremdeles.

Søgekriteriet skal altså hive de poster ud hvor brugerens valg (kan godt være flere) er lig med værdien i h.problemomr......
Avatar billede erikjacobsen Ekspert
24. april 2002 - 09:47 #4
Nå ok, Der står ikke tal men tekster som "valg1"

Jeg vil gerne vise dig en smart ting, men den var smartest hvis det var tal. Man kan nemlig

  select * from dintabel where feltnavn in (1,7,9,13)

for at udtrække flere poster med de nævte id-er. Og 1,7,9,13 ville man få direkte i ASP.
Men for tekster er det

  select * from dintabel where feltnavn in ('v1','v7','v9','v13')

og det er knap så nemt
Avatar billede kagge Nybegynder
24. april 2002 - 10:00 #5
jamen sådan som jeg ser det, bliver jeg nødt til at få en variabel ind i min søgestreng, da jeg jo ikke kender brugerens valg på forhånd.
Avatar billede erikjacobsen Ekspert
24. april 2002 - 10:04 #6
Du får brugerens valg serveret i

  nytproblem = Request.Form("problem")

med komma imellem. Og den skal du bruge, stort set som du gør. Jeg vil blot sikre mig
hvilken type dit felt er: tal eller streng.
Avatar billede kagge Nybegynder
24. april 2002 - 10:10 #7
feltet er en streng
Avatar billede erikjacobsen Ekspert
24. april 2002 - 10:14 #8
Ok, dvs vi skal tage det der kommer fra
  nytproblem = Request.Form("problem")
dvs noget i retning af
  valg7,valg9,valg13
og lave om til
  'valg7','valg9','valg13'
Det er lidt træls det skal være i ASP - det er så bøvlet.... Men lad
mig nu se. 2 secs.
Avatar billede kagge Nybegynder
24. april 2002 - 10:20 #9
Ja du er vist inde på noget af det rigtige....
Avatar billede erikjacobsen Ekspert
24. april 2002 - 10:20 #10
Ok, dette kan du bruge som inspiration ( det er bare en test )

  s="valg1,valg2,valg3"

  a=split(s,",")
  s=""
  for i=0 to ubound(a)
    s = s & "'" & a(i) & "'"
    if i<>ubound(a) then s = s & ","
  next

  response.write s

og brug så den smart IN betingelse jeg viste dig ovenfor
Avatar billede kagge Nybegynder
24. april 2002 - 10:28 #11
jamen jeg vil lige prøve om jeg kan få ovenstående til at lykkes
Avatar billede kagge Nybegynder
24. april 2002 - 13:04 #12
Nåhh det kan jeg ikke rigtig få til at fungere. Jeg ved ikke helt hvad det er der går galt. Jeg må se om jeg kan finde en anden løsning
Avatar billede erikjacobsen Ekspert
24. april 2002 - 13:06 #13
vis lige hvad du har
Avatar billede kagge Nybegynder
24. april 2002 - 13:58 #14
Det er ik sån lige til!! Jeg har prøvet at rode med din kode (det der split og ubound), men jeg kan i hvert fald ikke få det til at virke.

Så nu er jeg tilbage hvor vi begyndte...
Avatar billede erikjacobsen Ekspert
24. april 2002 - 14:00 #15
...så er det svært at hjælpe...
Avatar billede kagge Nybegynder
24. april 2002 - 14:05 #16
Det var skam ikke negativt ment, men det er bare alt mulig kode, som ligger i to forskellige dokumenter.

Og hvis jeg cutter noget af den kode ud, så er det nok svært at forstå for andre end jeg selv
Avatar billede kagge Nybegynder
24. april 2002 - 14:09 #17
Dette her er det første dokument, hvor brugeren foretager nogle valg:

Hvis man har nedenstående checkbox:

<FORM NAME="maened" ACTION="pc1.asp" METHOD="post">
    <input type="checkbox" name="problem" value="valg1"> valg1 <br>
    <input type="checkbox" name="problem" value="valg2"> valg2 <br>
    <input type="checkbox" name="problem" value="valg3"> valg3 <br>
    <input type="checkbox" name="problem" value="valg4"> valg4 <br>
    <input type="checkbox" name="problem" value="valg5"> valg5 <br>
    <input type="checkbox" name="problem" value="valg6"> valg6 <br>
    <input type="checkbox" name="problem" value="valg7"> valg7 <br>
    <input type="checkbox" name="problem" value="valg8"> valg8 <br>
    <input type="checkbox" name="problem" value="valg9"> valg9 <br>
    <input type="checkbox" name="problem" value="valg10"> valg10 <br>

Lad os så sige at brugeren vælger (valg1, valg3, valg4, valg7) og sender formularen.

Nu springer den over i det andet dokument hvor følgende kode eksekveres:

nytproblem = Request.Form("problem")

strSQL = "SELECT Nr, Dato, Problemomr FROM Hotlineregistrering h WHERE h.problemomr = '" & nytproblem & "' ORDER BY h.Nr DESC"

Det virker fint når brugeren kun vælger én ting, fordi der er h.problemomr og variablen nytproblem jo ens.

Problemet er når der vælges flere!!!
Avatar billede erikjacobsen Ekspert
24. april 2002 - 14:13 #18
Jah, og det mnener jeg også jeg har givet dig en løæning (hints i hvert fald) til.

Du skal jo kun ændre i fil nummer 2
Avatar billede kagge Nybegynder
24. april 2002 - 14:34 #19
Ok. Men det er nok fordi jeg ikke har hørt om det der ubound og split før. Så jeg ved ikke lige hvor den kode skal placeres/kaldes osv.

Men du skal i hvert fald have mange tak for din ihærdighed. Hvis du vil have pointne kan du så ikke lige svare.....
Avatar billede erikjacobsen Ekspert
24. april 2002 - 14:40 #20
Nej nej ingen point, for du har jo ikke fået løst dit problem. Du skal
ca. sætte min kode ind, med andre navne for variable mellem disse 2 linier,

nytproblem = Request.Form("problem")

strSQL = "SELECT Nr, Dato, Problemomr FROM Hotlineregistrering h WHERE h.problemomr = '" & nytproblem & "' ORDER BY h.Nr DESC"

og så skal din where betingelse være noget med  IN
Avatar billede eagleeye Praktikant
24. april 2002 - 15:07 #21
du kan evt benytte replace til det:

Så vidt jeg husker kommer der mellemrum ikke mellem ved request.querystring("problem") og du hendter eksvis:
valg1,valg2,valg3

nyStr = "'" & replace(request.querystring("problem"),",""','") & "'"

Så kan du lave din SQL:
strSQL = "SELECT Nr, Dato, Problemomr FROM Hotlineregistrering h WHERE h.problemomr IN (" & nyStr & ") ORDER BY h.Nr DESC"


------------------


Du kunne evt ændre dine input checkbox values så de har ' omkring, som sådan her:
<input type="checkbox" name="problem" value="'valg1'">

Så kan du lave din SQL:
strSQL = "SELECT Nr, Dato, Problemomr FROM Hotlineregistrering h WHERE h.problemomr IN (" & request.querystring("problem") & ") ORDER BY h.Nr DESC"

Det sidste ved jeg faktisk ikke om kan lade sig gøre men det knan komme an på en prøve...
Avatar billede kagge Nybegynder
24. april 2002 - 15:10 #22
Jeg har desværre ikke mere tid i dag, men jeg vil prøve jeres forslag i morgen og så skal jeg nok vende tilbage.
Avatar billede kagge Nybegynder
29. april 2002 - 11:42 #23
Jeg har prøvet jeres forslag uden held. Til gengæld fik jeg det til at lykkes på en lidt klodset måde: Jeg gav hver værdi i min checkbox et forskelligt navn og lagde indholdet i hver sin variabel.

Min søgestreng bliver meget lang da jeg sammenligner h.problemomr med hver variabel.

Men nu virker det i hvert fald! Tak for jeres forslag.
Avatar billede erikjacobsen Ekspert
29. april 2002 - 14:26 #24
Til en anden gang: hvis du prøver vores forslag, og det
ikke virker, så vis os dog den kode, der ikke virker.

De forslag vi har er bedre end det du selv har fundet på
(lidt bedre...), men vi kan ikke hjælpe dig, hvis vi ikke har
noget at kigge på.

Og en anden gang gider vi måske ikke.
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
Kurser inden for grundlæggende programmering

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