19. juli 2005 - 21:50Der er
13 kommentarer og 1 løsning
Sammenlingning af dropdowns!
HeY ;)
et lille problem... Hvordan sammenligner jeg et ukendt antal dropdown's, og sikre at de ikke har samme værdi, medmindre det er DSN, DNF, DNS, DSQ, *indsæt flere her*??
mine bokse er navngivet efter formen : boat_*id*, hvor *id* bliver hentet fra en tabel der hedder tilmeldinger..
KODEN: <% Set rsfinddeltagere = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT * From tilmeldinger where staevne_id = " & session("id") & " and godkendt = true" rsfinddeltagere.Open strSQL, conn, 1, 3
Set rstaeldeltagere = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT count(*) as antal From tilmeldinger where staevne_id = " & session("site_id") &" and godkendt = true" rstaeldeltagere.Open strSQL, conn, 1, 3 %>
<table cellpadding="0" cellspacing="0"> <form action="admin_resultat_indtast.asp?side=indtast&id=<%=request.QueryString("id")%>&sejlid=<%=request.QueryString("sejlid")%>" method="post"> <tr> <td valign="top" width="90" style="padding-right:10px"><b>Placeringer</b></td> <td> <table cellpadding="0" cellspacing="0"> <% do while not rsfinddeltagere.eof %> <tr> <td height="20" width="100"><%=rsfinddeltagere("boat_nat")%> <%=rsfinddeltagere("boat_nr")%></td> <td><select name="boat_<%=rsfinddeltagere("id")%>"><% for i = 1 to rstaeldeltagere("antal")%><option value="<%=i%>"><%=i%></option><% next %><option value="DNC">DNC</option><option value="DNS">DNS</option><option value="DNF">DNF</option><option value="OCS">OCS</option><option value="DSQ">DSQ</option></select></td> </tr> <% rsfinddeltagere.movenext loop %> </table> </td> </tr> </form> </table>
nej nej.... problemet er, hvordan jeg sammenligner de dropdown bokse, med forskellige navne, sådan at de ikke har den samme værdi, undtagen hvis det er DNS, DNF, DNS osv...
jeg forstår det vist godt De bliver jo lavet dynaisk i en løkke, så du ved ikke hvor mange du har Og når de så er submittet engang, så vil du tjekke om de er ens eller ej.. ikke ?
Må der ikke bare være to ens, eller er det dem alle der ikke må være ens? For ellers ser jeg ikke nogen anden løsning end løbe dem igennem, en for en, undervejs huske deres værdier og tjekke op om der er dubletter, og samtidig tjekke op om sådanne dubletter er tilladte
Da du i øvrigt så ikke ved hvor mange elementer der er i din form, så må du kunne udnytte at request.form indeholder en collection Så du kan løbe dem dynamisk igennem ala For Each elm In Request.Form //tjek af dubletter her Next
"Må der ikke bare være to ens, eller er det dem alle der ikke må være ens? For ellers ser jeg ikke nogen anden løsning end løbe dem igennem, en for en, undervejs huske deres værdier og tjekke op om der er dubletter, og samtidig tjekke op om sådanne dubletter er tilladte"
Præcis.... hvordan??
"Da du i øvrigt så ikke ved hvor mange elementer der er i din form, så må du kunne udnytte at request.form indeholder en collection"
ikke helt fordi de bliver gemt i en tabel der er: ID | STAEVNE_ID | TILMELDING_ID | SEJLADS_ID | PLACERING
og så på den måde får alle både deres egen linje, med deres placering, og så sejlads_id'et
jovist jovist Men uden at åbne databasen igen inden du henter fra formen ved submit, ja så aner du jo ikke om du skal sige request.form("boat_1") eller request.form("boat_4") eller flere eller andre Så derfor ville jeg foreslå dig at lave sådan en løkke Feks noget ala --- values = "" For Each elm In Request.Form values = values & "," & Request.Form(elm) Next --- Derved vil du få een lang komma sepereret streng med samtlige selectbokses værdier Den vil du så kunne løbe igennem for at finde dubletter og tjekke op på ok ord osv, det burde være rimelig til :o)
ok Det er fordi values bliver alle værdierne af select boksene. Jeg kan se du giver dem value=i , hvor du tæller på i. Dvs hvis de alle sammen er valgt med værdien 1 så er det klart at du får det resultat Hvis du sætter den ene af dem til "DNF" så burde du gerne også få "DNF" i din streng Ligesom du selfølgelig får "Gem resultater" som er din submit knap, men den kan man jo se bort fra -- "elm" er navnene på dine bokse, når du splitter på "_" så vil du få det id som navnet ender på Følgende her vil give dig to analoge arrays --- 'diverse variable values = "" names = "" matchFound = False index = 0 ' Først løbes elementerne igennem For Each elm In Request.Form values = values & Request.Form(elm) "," names = names & elm & "," Next ' det overflødige komma til sidst fjernes values = Left(values, Len(values)-1) names = Left(names, Len(names)-1) ' strengene laves til arrays valuesArr = Split(values,",") namesArr = Split(names,",") ' array´et bliver testet for dubletter For i=0 To Ubound(valuesArr)-1 '-1 fordi den sidste er din gem knap! For j=i+1 To Ubound(valuesArr)-1 ' Hvis der findes en match og denne er numerisk så er den ikke tilladt If valuesArr(i) = valuesArr(j) And IsNumeric(valuesArr(i)) Then matchFound = True index = i Exit For End If Next If matchFound Then Exit For End If Next ' Hvis der blev fundet to ens værdier som var tal så udskriv If matchFound Then Response.write "Du har valgt ens værdier, det må du ikke" Response.write "Det drejer sig om select boks nr "&index+1 ' Ellers opdater database Else ' løb alle elementerne igennem For i=0 To Ubound(valuesArr)-1 ' find id´et id = Split(namesArr,"_")(1) ' opdater conn.execute("update/insert blabla") Next End If
busschou -> Råb lige op hvis du vil have nogle point ellers så lukker jeg bare spm ;)
Synes godt om
Ny brugerNybegynder
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.