Avatar billede theselfimages Nybegynder
02. oktober 2003 - 19:56 Der er 42 kommentarer og
1 løsning

Dropdown box locator husker ikke input

På denne side:
http://www.designersremix.com/content/storelocator.asp

Har jeg et problem med at de valg der foretages IKKE huskes i Dropdown boxene, men i stedet cleares når resultat udskrives. Hvordan kan det fixes?

Og er det overhovedet Javascript problem eller nærmere et
ASP problem?

På denne side virker det. f.eks. perfekt:
http://www.obyisabellkristensen.com/stores.asp
Avatar billede thesurfer Nybegynder
02. oktober 2003 - 20:01 #1
du kunne f.eks. bruge strCountries = request.form("countries") og loope gennem option felterne.. når du så finder det der har været valgt, bruger du response.write " selected" i option tagget.
Avatar billede thesurfer Nybegynder
02. oktober 2003 - 20:04 #2
den resette til "Choose a country" og "Choose a city" fordi de 2 værdier er standard (første) værdier i din selectbox.. du kan ændre standard værdier med f.eks.:
<option value="B" selected>Belgium</option>  (ordet "selected")
Avatar billede roenving Novice
02. oktober 2003 - 20:09 #3
Når du bruger form.submit() kan du ikke beholde værdien !-)

Een ganske indlysende mulighed er den thesurfer angiver, da du alligevel har et database-script som eksekverer din forespørgsel, men det er selvfølgelig et problem, at du så også serverside skal opbygge din butiksdatabase i asp-scriptet (det kommer vel fra en database !-)

En anden mulighed er at placere dit resultat i en anden (i)frame, som du så kan angive som target (hæ, jeg blev faktisk i tvivl om ikke formen alligevel kom tilbage ,-)

Ellers kan du jo bare smide de to værdier ind i url'en og genskabe dem derfra onload ...
Avatar billede theselfimages Nybegynder
02. oktober 2003 - 20:11 #4
Det første lyder ganske fornuftigt, men tror jeg kommer til at bede om din hjælp til det. Kan evt. vise alt koden her?
Avatar billede thesurfer Nybegynder
02. oktober 2003 - 20:12 #5
hmm.. jeg kan ikke lide det der med at store/gemme ting i url.. så kan brugeren manipulere med det.. og giver fejl :)
brug heller den anden metode.. for du aflæser alligevel hvilket felt det er der er valgt (ellers kan du ikke hente den rette information)
Avatar billede thesurfer Nybegynder
02. oktober 2003 - 20:12 #6
tja.. det kunne du vel.. bare IKKE adressen til din database! :)
Avatar billede theselfimages Nybegynder
02. oktober 2003 - 20:13 #7
Alt content hentes fra en Access database.
Avatar billede thesurfer Nybegynder
02. oktober 2003 - 20:13 #8
hvis adressen til din database er synlig, kan folk downloade den.. det vil du vel helst ikke ha'.. :)
Avatar billede theselfimages Nybegynder
02. oktober 2003 - 20:19 #9
Åhh! det blir meget kode der her...

<%
'****************** BUILD JAVASCRIPT FOR COUNTRY/CITY ***************'
'Declare variables
Dim Conn, Dsn, strSQL, rs
Dim strJSarray, strCountrySelect, iso, country, city, firstTime

firstTime = true

'Create database connection object
Set Conn = Server.CreateObject("ADODB.Connection")
'Create database connection string
Dsn = "Driver={Microsoft Access Driver (*.mdb)}; "
Dsn = Dsn & "Dbq=" & Server.Mappath("blablabla.mdb") & ";"
Dsn = Dsn & "uid=;pw=;"
'open Connection To Database
Conn.Open(Dsn)

' SQL forespørgsel (find land som har stores)
strSQL = "SELECT country.iso, country.name, city.city " & _
        "  FROM country INNER JOIN (city INNER JOIN store ON city.city = store.city) ON country.iso = city.country GROUP BY country.name, country.iso, city.city"

' Udfør forespørgsel (rs indeholder nu resultatet)
Set rs = Conn.Execute(strSQL)

While Not rs.EOF
  'Get data into variables
  iso = rs("iso")
  country = rs("name")
  city = rs("city")
 
  'Build javascript array
  if iso <> tmp then

    'Build country select string
    strCountrySelect = strCountrySelect & "<option value=" & chr(34) & iso & chr(34) & ">" & country & "</option>" & vbcrlf

    if firstTime then
      'new country
      firstTime = false
      strJSarray = strJSarray & "stateNames[" & chr(34) & iso & chr(34) & "]=new Array(" & chr(34) & city
    else
      strJSarray = strJSarray & chr(34) & ")" & vbcrlf
      strJSarray = strJSarray & "stateNames[" & chr(34) & iso & chr(34) & "]=new Array(" & chr(34) & city
    end if

  else
    'same country
    strJSarray = strJSarray & chr(34) & "," & chr(34) & city   

  end if

  tmp = iso 

  rs.MoveNext
Wend

rs.close
set rs = nothing

'End strJSarray
strJSarray = strJSarray & chr(34) & ")" & vbcrlf

'****************** BUILD JAVASCRIPT FOR COUNTRY/CITY ***************'
%>

<script>
var stateNames=new Array()
stateNames["none"]=new Array("Choose a country first")
stateNames["default"]=new Array("Choose a City")
<%=strJSarray%>
function fillStates(opt){
  s=document.stores.states.options
  s.length = stateNames[opt].length + 1
  s[0].value=stateNames["default"][0]
  s[0].text=stateNames["default"][0]
  for(i=1;i<s.length;i++){
    s[i].value=stateNames[opt][i-1]
    s[i].text=stateNames[opt][i-1]
  }
  document.stores.states.selectedIndex=0
}
</script>
Avatar billede theselfimages Nybegynder
02. oktober 2003 - 20:20 #10
HTML her:

    <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="100%">
      <tr>
        <td width="290"></td>
        <td valign="top">
        <br>
        <form method="post" name="stores" action="storelocator.asp">
   
    <select name=countries style="width: 150px; background-color: #0DFE01" id="input" onChange="fillStates(this.options[this.selectedIndex].value)">
    <option value="none">Choose a Country</option>
    <%=strCountrySelect%>

    </select>
    <select name="states" style="width: 150px; background-color: #0DFE01" id="input" onChange="java script:document.stores.submit()">
    <option value="none">Choose a City</option>
    </select>
    </form></td>


OG SÅ SELVE UDTRÆKKET HER:

    <%
      'Check if form submit
      If Request.Form("states") <> "" Then
        ' SQL forespørgsel (find land som har stores)
        strSQL = "SELECT store.* " & _
                "  FROM city INNER JOIN store ON city.city = store.city " & _
                " WHERE (((city.country)='" & Request.Form("countries") & "') AND ((city.city)='" & Request.Form("states") & "')) " & _
                " ORDER BY store.name"
     
        ' Udfør forespørgsel (rs indeholder nu resultatet)
        Set rs = Conn.Execute(strSQL)
       
        'Loop recordset
        While not rs.EOF
        %>
        <b>
        <%
        if rs("name") <> "" then
        response.write (rs("name") & "<br>")
        end if
        %>
        </b>   
        <%
        if rs("adr1") <> "" then
        response.write (rs("adr1") & "<br>")
        end if
        %>
       
        <%
        if rs("adr2") <> "" then
        response.write (rs("adr2") & "<br>")
        end if
        %>
       
        <%
        if rs("adr3") <> "" then
        response.write (rs("adr3") & "<br>")
        end if
        %>
       
        <%
        if rs("zip") <> "" then
        response.write (rs("zip") & " ")
        end if
        %>
       
        <%
        if rs("city") <> "" then
        response.write (rs("city") & "<br>")
        end if
        %>

        <%
        if rs("phonetext") <> "" then
        response.write (rs("phonetext") & " ")
        end if
        %>
       
        <%
        if rs("phone") <> "" then
        response.write (rs("phone") & "<br>")
        end if
        %>

        <%
        if rs("email") <> "" then
        response.write (rs("email") & "<br>")
        end if
        %>
       
        <%
        if rs("web") <> "" then
        response.write (rs("web") & "<br>")
        end if
        %>
        <br>
        <%
        rs.MoveNext
        Wend
        rs.close
        set rs = nothing
      End If
    %>
Avatar billede theselfimages Nybegynder
02. oktober 2003 - 20:22 #11
Håber I kan hjælpe. Jeg er temmelig meget i vildrede med dette problem!

VH. Lars
Avatar billede thesurfer Nybegynder
02. oktober 2003 - 20:31 #12
vigtigt: lav en backup af dine filer..

prøv det her.. find der hvor der står (starter ved linie 22 ifølge dit indlæg):

' Udfør forespørgsel (rs indeholder nu resultatet)
Set rs = Conn.Execute(strSQL)

While Not rs.EOF
  'Get data into variables
  iso = rs("iso")
  country = rs("name")
  city = rs("city")
 
  'Build javascript array
  if iso <> tmp then

    'Build country select string
    strCountrySelect = strCountrySelect & "<option value=" & chr(34) & iso & chr(34) & ">" & country & "</option>" & vbcrlf



og erstat det med:



' Udfør forespørgsel (rs indeholder nu resultatet)
Set rs = Conn.Execute(strSQL)

strRememberCountry = Request.Form("countries")

While Not rs.EOF
  'Get data into variables
  iso = rs("iso")
  country = rs("name")
  city = rs("city")
 
  'Build javascript array
  if iso <> tmp then
   
    if strRememberCountry = country then
        strRemeberCountry = " selected "
    else
        strRememberCountry = ""
    end if

    'Build country select string
    strCountrySelect = strCountrySelect & "<option value=" & chr(34) & strRememberCountry & iso & chr(34) & ">" & country & "</option>" & vbcrlf
Avatar billede thesurfer Nybegynder
02. oktober 2003 - 20:32 #13
hvis det virker, skulle den gerne kunne huske "Country"-valget.. (jeg har ikke lavet "City"-valget endnu..)
Avatar billede theselfimages Nybegynder
02. oktober 2003 - 20:37 #14
får denne:

Microsoft VBScript compilation error '800a0408'

Invalid character

/content/storelocator.asp, line 207

Udfør forespørgsel (rs indeholder nu resultatet)
---^
Avatar billede thesurfer Nybegynder
02. oktober 2003 - 20:38 #15
du har glemt at få apostroffet (') med foran "Udfør forespørgsel" skal være:

' Udfør forespørgsel (rs indeholder nu resultatet)
Avatar billede theselfimages Nybegynder
02. oktober 2003 - 20:42 #16
UPS! .. hmm det kører nu, men jeg kan ingen forskel se?
http://www.designersremix.com/content/storelocator.asp
Avatar billede thesurfer Nybegynder
02. oktober 2003 - 20:47 #17
prøv at erstatte linie 95 i selve asp filen:

document.stores.states.selectedIndex=0

med linien:

//document.stores.states.selectedIndex=0
Avatar billede theselfimages Nybegynder
02. oktober 2003 - 20:51 #18
Ingen forskel.
Der var ikke andet jeg skulle ændre vel? Ikke tilføje noget eller ændre andre steder, end du har skrevet indtil videre?
Avatar billede thesurfer Nybegynder
02. oktober 2003 - 20:52 #19
ikke endnu.. ser lige om jeg kan finde på noget :)
Avatar billede theselfimages Nybegynder
02. oktober 2003 - 20:54 #20
Kan du evt. få noget ud af at se på denne?
http://www.obyisabellkristensen.com/stores.asp

Det er jo nøjagtig sådan jeg ønsker min egen skal fungerer.
Forskellen er blot at min har BEGGE dropdownboxes fremme samtidig.
Avatar billede thesurfer Nybegynder
02. oktober 2003 - 20:55 #21
erstat linie 50:
    strCountrySelect = strCountrySelect & "<option value=" & chr(34) & strRememberCountry & iso & chr(34) & ">" & country & "</option>" & vbcrlf

med:

    strCountrySelect = strCountrySelect & "<option value=" & chr(34) & iso & chr(34) & ">" & country & "</option>" & vbcrlf

og linie 58:

      strJSarray = strJSarray & "stateNames[" & chr(34) & iso & chr(34) & "]=new Array(" & chr(34) & city

med:

      strJSarray = strJSarray & "stateNames[" & chr(34) & strRememberCountry & iso & chr(34) & "]=new Array(" & chr(34) & city
Avatar billede thesurfer Nybegynder
02. oktober 2003 - 21:00 #22
oops :)
Avatar billede theselfimages Nybegynder
02. oktober 2003 - 21:02 #23
Sådan:

    'Build country select string
    strCountrySelect = strCountrySelect & "<option value=" & chr(34) & iso & chr(34) & ">" & country & "</option>" & vbcrlf
   
    if firstTime then
      'new country
      firstTime = false
      strJSarray = strJSarray & "stateNames[" & chr(34) & strRememberCountry & iso & chr(34) & "]=new Array(" & chr(34) & city
    else
      strJSarray = strJSarray & chr(34) & ")" & vbcrlf
      strJSarray = strJSarray & "stateNames[" & chr(34) & iso & chr(34) & "]=new Array(" & chr(34) & city
    end if


Der er stadig ingen forskel
Avatar billede thesurfer Nybegynder
02. oktober 2003 - 21:05 #24
nej, sådan her:

    if firstTime then
      'new country
      firstTime = false
      strJSarray = strJSarray & "stateNames[" & chr(34) & iso & chr(34) & "]=new Array(" & chr(34) & city
    else
      strJSarray = strJSarray & chr(34) & ")" & vbcrlf
      strJSarray = strJSarray & "stateNames[" & chr(34) & strRememberCountry & iso & chr(34) & "]=new Array(" & chr(34) & city
    end if
Avatar billede theselfimages Nybegynder
02. oktober 2003 - 21:08 #25
Ingen forskel
Avatar billede theselfimages Nybegynder
02. oktober 2003 - 21:13 #26
Er det mærkeligt?
Avatar billede thesurfer Nybegynder
02. oktober 2003 - 21:16 #27
hmm.. erstat

      strJSarray = strJSarray & "stateNames[" & chr(34) & iso & chr(34) & "]=new Array(" & chr(34) & city

med

      strJSarray = strJSarray & "stateNames[" & chr(34) & iso & chr(34) & "]=new Array(" & chr(34) & city  &

strRememberCountry


jeg havde også lavet en fejl tidligere i koden..:

erstat:

    if strRememberCity = country then
        strRememberCity = " selected "
    else
        strRememberCity = ""
    end if

med

    if strRememberCity = city then
        strRememberCity = " selected "
    else
        strRememberCity = ""
    end if
Avatar billede thesurfer Nybegynder
02. oktober 2003 - 21:17 #28
jae, man kan vel sige at det er en anderledes måde at gøre det på... altså det de gør..
det er vel for at belaste servern mindste muligt, eller så'n..
Avatar billede theselfimages Nybegynder
02. oktober 2003 - 21:22 #29
Nu viser den INGEN city

Det vi har ændret på ser nu sådan her ud:
Korrekt?

  'Build javascript array
  if iso <> tmp then
   
    if strRememberCity = city then
        strRememberCity = " selected "
    else
        strRememberCity = ""
    end if

    'Build country select string
    strCountrySelect = strCountrySelect & "<option value=" & chr(34) & iso & chr(34) & ">" & country & "</option>" & vbcrlf
   
    if firstTime then
      'new country
      firstTime = false
      strJSarray = strJSarray & "stateNames[" & chr(34) & iso & chr(34) & "]=new Array(" & chr(34) & city  & strRememberCountry

    else
      strJSarray = strJSarray & chr(34) & ")" & vbcrlf
      strJSarray = strJSarray & "stateNames[" & chr(34) & strRememberCountry & iso & chr(34) & "]=new Array(" & chr(34) & city
    end if

  else
    'same country
    strJSarray = strJSarray & chr(34) & "," & chr(34) & city   

  end if

  tmp = iso 

  rs.MoveNext
Wend
Avatar billede thesurfer Nybegynder
02. oktober 2003 - 21:27 #30
det er rigtigt.. vi må ikke indsætte noget ind i arrayen.. så passer den ikke..

der hvor der står (linie 54):

      strJSarray = strJSarray & "stateNames[" & chr(34) & iso & chr(34) & "]=new Array(" &

chr(34) & city  & strRememberCity

sletter du "& strRememberCountry"-delen


hmm.. lad os prøve at debugge vores requests..
lige over linien "firstTime = true" (linie 7), indsætter du:

response.write "<br><br>"
response.write "Country: *" & Request.Form("countries") & "*"
response.write "<br>"
response.write "City/State: *" & Request.Form("states") & "*"
response.write "<br><br>"
Avatar billede theselfimages Nybegynder
02. oktober 2003 - 21:31 #31
OK.. gjort..
Avatar billede thesurfer Nybegynder
02. oktober 2003 - 21:32 #32
ahh.. nu forstår jeg det lidt bedre .. jeg trode "Country" var f.eks. "Denmark".. men det viser sig at "Country" er forkortelserne for landene.. f.eks. "DK"..

kigger lige på det igen :)
Avatar billede theselfimages Nybegynder
02. oktober 2003 - 21:34 #33
OK! Sætter virkelig pris på det :)
Avatar billede thesurfer Nybegynder
02. oktober 2003 - 21:35 #34
linie 37:
if strRememberCountry = country then

erstattes med:
if strRememberCountry = iso then
Avatar billede theselfimages Nybegynder
02. oktober 2003 - 21:41 #35
Hmm.. ingen forskel.
Ved andet forsøg/valg er det IKKE mugligt at vælge City
Avatar billede thesurfer Nybegynder
02. oktober 2003 - 21:43 #36
i toppen hvor der står response.write "<br><br>"..
erstat "<br><br>" med "<br><br><br><br><br>"
Avatar billede theselfimages Nybegynder
02. oktober 2003 - 21:46 #37
Gjort..
Husk at åben NYT browser vindue, hver gang du selv tester.
Avatar billede thesurfer Nybegynder
02. oktober 2003 - 21:50 #38
har du mulighed for at pakke alle filerne (incl. database) ned og sende det til mig?
Avatar billede theselfimages Nybegynder
02. oktober 2003 - 21:54 #39
ja.. skal gerne sende den original fil, før dine ændringer eller denne vi har rettet til nu + DB?

Hvad er din mail?
Avatar billede thesurfer Nybegynder
02. oktober 2003 - 22:00 #40
har du msn messenger eller icq?
Avatar billede theselfimages Nybegynder
02. oktober 2003 - 22:02 #41
MSN
(privat@theselfimages.com)
Avatar billede thesurfer Nybegynder
05. oktober 2003 - 00:50 #42
Jeg har løst theselfimages' problem via MSN Messenger, dvs udenfor Eksperten.dk, og kan ifølge regel 2.1.13 ikke få points for det.

Så går jeg ud fra at theselfimages selv skal lægge et svar og acceptere det.

Hvis der er nogen der er uenige, er de velkommen til at skrive..

/theSurfer.
Avatar billede theselfimages Nybegynder
06. oktober 2003 - 12:37 #43
Spørgsmålet lukkes.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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