Avatar billede nitz Nybegynder
18. marts 2004 - 10:33 Der er 25 kommentarer og
1 løsning

afkryds checkbox hvis der er lighed

Hej alle,

Jeg har en tabel med nogle farver i: blå, rød og hvid for eksempel.

Jeg har så en anden tabel hvor jeg kan oprette en ny ting og vælge hvilke farver tingen findes i.

Jeg har så foreksempel valgt en ting der kan fås i farverne blå og hvid. det bliver så oprettet i et recordset der hedder farver, og står således: blå,hvid

Når jeg så skal redigere den ting, har looper jeg igennem den tabel der kun indeholder farverne, og det resulterer så i en række checkboxe hvor jeg gerne ville have det sådan at de farver der var valgt (blå,hvid) automatisk blev afkrydset.

Mit spørgsmål er så, hvordan får jeg delt mit farverecordset op og loopet igennem det hver gang der bliver genereret en ny checkbox, så den kan se om farven matcher og dermed skal afkrydses?

Håber det giver mening, for jeg er virkelig på bar bund her.

hilsener

Tommy
Avatar billede sbm Nybegynder
18. marts 2004 - 10:44 #1
Et eksempel som man kunne kigge på ville være rart... :-)

Når du skriver recordset, mener du så at du har lavet et databaseopslag, hvor der er en kolonne der hedder farver? Er den kommasepareret, eller er der flere række for hver farve?
Avatar billede nitz Nybegynder
18. marts 2004 - 10:49 #2
hej sbm :)

ja det er en kolonne der hedder farver og den er kommasepareret.

Eksemplet er således:
<%
select * from farver order by farver asc
while not rs.eof
%>
<input type=checkbox name=farve value="<% =rs("farve") %>"><% =rs("farve") %>
<%
rs.movenext
wend
%>

Så har jeg den anden tabel hvor jeg har min kommasepareret kolonne(blå,hvid), og den skulle gerne tjekkes igennem for lighed inden i mit while loop.

ovenstående script er lige hurtigt skrevet ned for at give dig en ide om det, så jeg ved godt der mangler nogle ting i det :)
Avatar billede sbm Nybegynder
18. marts 2004 - 10:53 #3
Øhm. Så du har altså TO recordset, med et kommasep. i begge, og nu lister du alle de farver der findes i tabel1, og hvis farven ligeledes findes i tabel2, skal checkboxen samtidig checkes... Korrekt?
Avatar billede sbm Nybegynder
18. marts 2004 - 10:54 #4
"med et kommasep. i begge"

skulle have været

"med et kommasep. felt i begge"
Avatar billede sbm Nybegynder
18. marts 2004 - 10:54 #5
Hedder feltet "farve" i begge tabeller?
Avatar billede nmh Nybegynder
18. marts 2004 - 10:55 #6
Forstår jeg dig ret, så skal der i dit while-loop ovenfor, som får udskrevet check-boksene, sættes et check-mærke, hvis farven findes i den anden tabel.
men så kan du jo, når du står med en farve hurtigt afgøre, om den er med i din farveliste.
Avatar billede nitz Nybegynder
18. marts 2004 - 10:58 #7
ik helt!

tabel1 (farvetabellen) er ikke kommasepareret, men indeholder unikt id pr farve.
tabel2 (tabellen man opretter i) er kommasepareret.

Så der loopes igennem tabel1 for at lave checkboxlisten over farver, og så inde i det loop skal der (går jeg udfra) loopes igennem den kommasepareret tekststreng for at se om nogle af farverne matcher.
Avatar billede nmh Nybegynder
18. marts 2004 - 10:58 #8
Hvor komme kommaspareingen ind i billedet?
Det virker som om det er selve farven, du læser.
Men hvis du kan have farverne, du skal afkrydse for gemt i en tekststreng af formen
",red,blue,green,...,black,"
kan du jo benytte funktionen inStr, til at adgøre om f.eks. ",blue," findes i strengen.
Avatar billede nitz Nybegynder
18. marts 2004 - 11:00 #9
hov nu fik du lige svaret nogle gange mens jeg skrev heh. mit svar med start "ik helt" var et svar til det med om jeg havde to kommasep.
Avatar billede nmh Nybegynder
18. marts 2004 - 11:01 #10
Ok, nu tror jeg jeg forstår.
hvis du så sætter farve="," & rs("farve") & ","
og farve listen hedder farver, så vil
Inst(farver,farve) være større end 0, hvis farve er med i farver.
Avatar billede nmh Nybegynder
18. marts 2004 - 11:02 #11
rettelse:
Inst(farver,farve)--> InStr(farver,farve)
Avatar billede nitz Nybegynder
18. marts 2004 - 11:03 #12
AHA! så det vil sige at jeg kan sige:

strfarve = blå,hvid

og så:

<% if rs("farve") = Instr(strfarve,rs("farve") then %>afkryds checkbox<%end if%>

eller hur?
Avatar billede nitz Nybegynder
18. marts 2004 - 11:05 #13
hov glemte lige et ) i min if, men ellers?
Avatar billede nmh Nybegynder
18. marts 2004 - 11:06 #14
hellere sådan:
strfarve = ",blå,hvid,lysblå,"
Avatar billede nitz Nybegynder
18. marts 2004 - 11:07 #15
ok jeg er fleksibel så du får det som du vil ha det ;)

jeg prøver lige og ser om det virker!
Avatar billede nmh Nybegynder
18. marts 2004 - 11:08 #16
det med de ekstra kommaer er mere for at undgå, at lys ville kunne opfattes som en farve i listen "lysblå,blå" hvis man kun søgte på lys.
Avatar billede nmh Nybegynder
18. marts 2004 - 11:10 #17
Men hvis du ved, at en sådan situation ikke kan forkomme så behøver du ikke de ekstra kommaer og kan gøre således:
<% if rs("farve") = Instr(strfarve,rs("farve") then %>afkryds checkbox<%end if%>
Avatar billede nmh Nybegynder
18. marts 2004 - 11:12 #18
ups: jeg nærlæste ikke hvad du havde skrevet.
Det skal være således:

<% if Instr(strfarve,rs("farve")>0 then %>afkryds checkbox<%end if%>
Avatar billede sbm Nybegynder
18. marts 2004 - 11:14 #19
Du kan i hvert fald få opdelt din kommasep. streng med

farveArray = Split(kommaSepareredeFarver, ",")

hvor du naturligvis skal indsætte det korrekte felt istedet for kommaSepareredeFarver :-)


<%
farveArray = Split(kommaSepareredeFarver, ",")
while not rs.eof
    for (i = LBound(farveArray) to UBound(farveArray))
%>
<input type=checkbox name=farve value="<% =rs("farve") %>"
<%
if (rs("farve") = farveArray[i]) then
%>
checked="checked"
<%
end if
%>
><% =rs("farve") %>
<%
    next
    rs.movenext
wend
%>


*** IKKE afprøvet :-) ***
Avatar billede sbm Nybegynder
18. marts 2004 - 11:15 #20
Ahh ja... Instr er selvfølgelig også velegnet.... Kig først på nmh's forslag... :-)
Avatar billede nitz Nybegynder
18. marts 2004 - 11:21 #21
Hej igen,
Det virker!! TUSIND TAK NMH!! du har lige reddet en masse inventar fra at lade livet pga frustrationer :P Gider du lige lave et svar?

hmm sbm, nu får jeg jo helt dårlig samvittighed når du også har prøvet at hjælpe..skal jeg oprette et spørgsmål og give dig lidt point for indsatsen?

hilsener

Tommy
Avatar billede nmh Nybegynder
18. marts 2004 - 11:23 #22
jeg synes, sbm også skal lægge et svar her. Så kan vi dele pointene.
100 pint til hver er en fin "betaling" synes jeg.
Avatar billede nitz Nybegynder
18. marts 2004 - 11:28 #23
Det var stort af dig nmh, jeg afventer lige smb og accepterer så begge svar.

Endnu engang tusind tak for hjælpen, jeg er virkelig virkelig VIRKELIG taknemmelig!
Avatar billede sbm Nybegynder
18. marts 2004 - 11:34 #24
Nej det er fint fint... :-)

Jeg går virkelig ikke op i det med point. Jeg har mere end rigeligt med point til mig selv, til når jeg har et spørgsmål jeg gerne vil have besvaret, og jeg har under ingen omstændigheder den fornødne tid, til at gøre mig gældende på de forskellige hitlister. Så jeg bukker og takker nej.
Avatar billede nitz Nybegynder
18. marts 2004 - 11:36 #25
Uh må jeg få dine så sbm? jeg har brug for alle dem jeg kan få med alt det jeg ødelægger altid :P ej just kidding, jeg accepterer nmh's svar.

Tak til jer begge!

hilsener

Tommy
Avatar billede nmh Nybegynder
18. marts 2004 - 11:44 #26
Selv tak, det var så lidt. jeg er glad for at kunne hjælpe.
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