Avatar billede chr.kj Nybegynder
07. juli 2008 - 09:28 Der er 14 kommentarer og
1 løsning

Option value med selected

Har et lidt sjovt og underligt problem.

Jeg har noget data som jeg henter fra en DB - Et af felterne hedder Map. Udfra mit DB udtræk skal Map automatisk vælge det valgte map fra DB'en

Min kode ser sådan ud:

<select name="Map">               
            <option value="de_dust" <% If rs("Map")= de_dust Then Response.Write "SELECTED" %>>de_dust</option>               
                <option value="de_dust2" <% If rs("Map")= de_dust2 Then Response.Write "SELECTED" %>>de_dust2</option>
                <option value="de_inferno" <% If rs("Map")= de_inferno Then Response.Write "SELECTED" %>>de_inferno</option>
                <option value="de_nuke" <% If rs("Map")= de_nuke Then Response.Write "SELECTED" %>>de_nuke</option>
                <option value="de_train" <% If rs("Map")= de_train Then Response.Write "SELECTED" %>>de_train</option>               
        </select> 

Problemet er, at når jeg så loader siden så har den af en eller anden årsag skrevet SELECTED på alle options, pånær de_dust?

Her er kildekoden fra Explore:

<select name="Map">               
            <option value="de_dust" >de_dust</option>                       
                <option value="de_dust2" SELECTED>de_dust2</option>       
                <option value="de_inferno" SELECTED>de_inferno</option>           
                <option value="de_nuke" SELECTED>de_nuke</option>           
                <option value="de_train" SELECTED>de_train</option>               
        </select>     

Jeg kan ikke se eller finde ud af hvorfor det sker??
Avatar billede fennec Nybegynder
07. juli 2008 - 09:35 #1
Er det mon fordi du skal sammen ligne med teksten "de_dust" og ikke variablen de_dust??

<% If rs("Map")= "de_dust" Then Response.Write "SELECTED" %>
<% If rs("Map")= "de_dust2" Then Response.Write "SELECTED" %>
...
Avatar billede chr.kj Nybegynder
07. juli 2008 - 10:11 #2
Hvis jeg sætter " " omkring teksten så bliver ingen selected, selvom f.eks. de_dust står korrekt i DB'en.

BTW - Hvis jeg sætte " " omkring f.eks. de_dust2 så betyder det at den sammenligner med teksten og hvis ikke der sættes "" omkring, så betyder det, at den sammenligner med variablen - Har jeg forstået det korrekt?
Avatar billede fennec Nybegynder
07. juli 2008 - 10:45 #3
Hvad indeholder rs("Map") helt præsis af data?? Prøv evt at udskrive den til skærmen. Hust at gøre det uden for <select> da du ellers ikke kan se værdien:

<%= "*"& rs("Map") &"*" %>
<select name="Map">
  ...



Og ja, angående dit 2. spørgsmål. Eks:

de_dust = "aaaa"
if rs("Map")= de_dust then <-- Sammenligner rs("Map") med teksten "aaaa"
if rs("Map")= "de_dust" then <-- Sammenligner rs("Map") med teksten "de_dust"
Avatar billede chr.kj Nybegynder
07. juli 2008 - 10:58 #4
Hvis jeg skriver <%= "*"& rs("Map") &"*" %> så kommer dette output ud:

*de_inferno*
Avatar billede fennec Nybegynder
07. juli 2008 - 11:15 #5
Så skal din kode altså se sådan ud:

<select name="Map">             
  <option value="de_dust" <% If rs("Map")= "de_dust" Then Response.Write "SELECTED" %>>de_dust</option>             
  <option value="de_dust2" <% If rs("Map")= "de_dust2" Then Response.Write "SELECTED" %>>de_dust2</option>
  <option value="de_inferno" <% If rs("Map")= "de_inferno" Then Response.Write "SELECTED" %>>de_inferno</option>
  <option value="de_nuke" <% If rs("Map")= "de_nuke" Then Response.Write "SELECTED" %>>de_nuke</option>
  <option value="de_train" <% If rs("Map")= "de_train" Then Response.Write "SELECTED" %>>de_train</option>             
</select>
Avatar billede chr.kj Nybegynder
07. juli 2008 - 11:24 #6
Resulatet er, at der slet ikke bliver valgt noget. "Vis kilde" ser sådan ud:

<select name="Map">             
<option value="de_dust" >de_dust</option>             
<option value="de_dust2" >de_dust2</option>
<option value="de_inferno" >de_inferno</option>
<option value="de_nuke" >de_nuke</option>
<option value="de_train" >de_train</option>             
</select>
Avatar billede fennec Nybegynder
07. juli 2008 - 11:28 #7
Hvis rs("Map") indeholder teksten "de_inferno" som du skrev i post 10:58:46 så skal den trigger på:

if rs("Map")= "de_inferno" then

er der space eller store/små bogstaver i rs("Map") værdien?? Der er nemlig forskel på "de_inferno" og "De_inferno"
Avatar billede chr.kj Nybegynder
07. juli 2008 - 11:34 #8
der er tale om små bogstaver og jeg har kontrolleret i mysql feltet for at se om der havde sneget sig et mellemrum ind, men der er ingen.. Jeg kan ikke forstå det :/
Avatar billede fennec Nybegynder
07. juli 2008 - 11:37 #9
Sidste udvej er typecast og trim. Smid dette på alle:

If trim(rs("Map")&"") = "de_dust" Then
Avatar billede chr.kj Nybegynder
07. juli 2008 - 11:42 #10
Resultatet er det samme? :/

Er typecast ikke hvor man ændre f.eks. int til en string?
Avatar billede chr.kj Nybegynder
07. juli 2008 - 11:42 #11
og hvad gør trim?
Avatar billede chr.kj Nybegynder
07. juli 2008 - 11:48 #12
Det er nu egentlig underligt.

Hvis jeg fjerne " " således at den sammenligner variablen så bliver alle andre en de_dust (som er den øverste) markeret med SELECTED.

Hvis jeg så begynder at sætte " " for at sammenligne teksten, så forsvinder SELECTED fra dem der har " " omkring sig..
Avatar billede fennec Nybegynder
07. juli 2008 - 12:00 #13
Vi typecaster med &"" (i tilfælde af rs("Map") = NULL). Trim fjerner alle spaces som kunne være i starten/slutningen af teksten.

Hvis vi skal komme vidre, skal vi have et link til siden så vi selv kan se det. Der er noget helt galt...
Avatar billede chr.kj Nybegynder
07. juli 2008 - 19:54 #14
Jeg droppede denne metode og lavede i stedet for nogle tabeller i min DB

Brugte denne kode:

            <%
           
pick = trim(rs("Map")&"") ' Valg af den aktuelle post
%>

<select name="Map">
<% If Not (rs2.BOF Or rs2.EOF) Then ' Hvis ikke "Beginning Of File" eller "End Of File"
Do

If pick = trim(rs2("id")&"") Then ' Hvis den aktuelle post er lig med option value [rs("ID")] skriv selected
selected = " selected"
Else
selected = ""
End If
%>
    <option value="<% =rs2("id") %>"<%=selected%>><% =rs2("map") %></option>
<%
rs2.MoveNext
Loop While Not rs2.EOF
%>
<% Else %>
    <option value="Ingen data">Ingen data</option>
<% End If %>
</select>

I starten ville den ikke, men med hjælp fra din trim fik jeg det løst, så smid et svar :D

Tak for hjælpen
Avatar billede fennec Nybegynder
08. juli 2008 - 08:11 #15
.o) <-- One Eyed Jack
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