Avatar billede nielsmo Nybegynder
19. juli 2005 - 21:50 Der 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")%>&nbsp;<%=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>
Avatar billede nielle Nybegynder
19. juli 2005 - 21:58 #1
Prøv at rette:

strSQL = "SELECT * From tilmeldinger where staevne_id = " & session("id") & " and godkendt = true"

- til:

strSQL = "SELECT DISTINCT * From tilmeldinger where staevne_id = " & session("id") & " and godkendt = true"
Avatar billede nielsmo Nybegynder
19. juli 2005 - 22:06 #2
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...
Avatar billede nielle Nybegynder
19. juli 2005 - 22:09 #3
Der er jo kun en dropdown boks, så jeg ved ikke rigtigt hvad du mener med at sammenligne.
Avatar billede busschou Praktikant
19. juli 2005 - 22:14 #4
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 ?
Avatar billede busschou Praktikant
19. juli 2005 - 22:17 #5
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
Avatar billede busschou Praktikant
19. juli 2005 - 22:25 #6
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
Avatar billede nielsmo Nybegynder
19. juli 2005 - 22:34 #7
"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
Avatar billede busschou Praktikant
19. juli 2005 - 22:41 #8
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)
Avatar billede busschou Praktikant
19. juli 2005 - 22:46 #9
hvis ikke jeg husker helt galt så tror jeg du får navnet direkte vel "elm"
Så hvis du laver en Split(elm,"_")(1) så vil du have fat i id´et der :o)
Avatar billede nielsmo Nybegynder
19. juli 2005 - 23:01 #10
hmmm prøver mig lige frem.....
Avatar billede nielsmo Nybegynder
19. juli 2005 - 23:05 #11
hmm når jeg laver
    values = ""
    For Each elm In Request.Form
      values = values & "," & Request.Form(elm)
    Next
       
   
og så laver en response.write på den, så skriver den bare: ,1,1,1,1,1,1,1,Gem resultater 

og så kan jeg ikke rigtigt se hvor Split(elm,"_")(1) skal ind??
Avatar billede busschou Praktikant
20. juli 2005 - 07:38 #12
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
Avatar billede nielle Nybegynder
12. august 2005 - 09:33 #13
Lukketid?
Avatar billede nielsmo Nybegynder
27. december 2005 - 19:00 #14
busschou ->
Råb lige op hvis du vil have nogle point ellers så lukker jeg bare spm ;)
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