Toon posts:

[Javascript] State chooser *

Pagina: 1
Acties:

Verwijderd

Topicstarter
[ASP/Javascript] State chooser

Ik heb een tabel StateCodes. Hierin staan een code voor de staat/provincie/regio. (Tabel voor Internationaal gebruik. USA gebruikt staten, Frankrijk regio's, België provincies,...) Alles wordt behandeld als staten om het gemakkelijker te maken.

StateCodeStateNamelangcode
ANAntwerpenBE_NL
HEHenegouwenBE_NL
ANAnversBE_FR
CACaliforniaUS_EN
23CreuseFR_FR


Nu zou ik met deze tabel een select willen opvullen afhankelijk van het land dat gekozen is. Met de select wordt de statecode doorgegeven, statename getoond.

Ik heb al op internet aan het zoeken geweest, maar ik vind nergens iets waarmee ik m'n arrays dynamisch aanmaak a.d.h.v. de verschillende landcodes. Het kan zijn dat er in de tabel nieuwe landcodes bijkomen, dus moeten die arrays er ook bijkomen.

Kan iemand mij opweg helpen om dit tot een goed einde te brengen?

[ Voor 3% gewijzigd door Verwijderd op 24-03-2005 10:19 . Reden: titel niet volledig ]


  • Koeniepoenie
  • Registratie: Oktober 2003
  • Laatst online: 08-05 22:42
Welke query gebruik je er nu voor dan? Wat voor code heb je?

Je zult in je query een where-clause moeten aangeven die checkt of het land naar keuze voorkomt in 'langcode'.

Zoiets:
code:
1
SELECT * FROM StateCodes WHERE langcodes LIKE '%land%'

Dan moet je land wel even vervangen door een variabele die het land bevat.

[ Voor 6% gewijzigd door Koeniepoenie op 24-03-2005 10:42 . Reden: lang = land ]

Parse error: syntax error, unexpected GOT_USER in https://gathering.tweakers.net on line 1337


Verwijderd

Topicstarter
Ik heb eerst een select met landen. Vanaf dat ze een land kiezen moeten de staten in de volgende select box geladen worden. Bij een onchange van landkeuze dus. Ik moet dus m'n arrays vooraf vullen. Als het nu enkele array waren, was dat geen probleem. Dan maakte ik vooraf hardcoded arrays voor het land in kwestie.

AU_EN_array=new Array('Select', 'Australian Capital Territory', 'New South Wales', 'Northern Territory', 'Queensland', 'South Australia', 'Tasmania', 'Victoria', 'Western Australia')

US_EN_array=new Array('Select','Alabama','Alaska','Arizona','Arkansas','California','Colorado','Connecticut','Delaware','District Of Columbia','Florida','Georgia','Hawaii','Idaho','Illinois','Indiana','Iowa','Kansas','Kentucky','Louisiana','Maine','Maryland','Massachusetts','Michigan','Minnesota','Mississippi','Missouri','Montana','Nebraska','Nevada','New Hampshire','New Jersey','New Mexico','New York','North Carolina','North Dakota','Ohio','Oklahoma','Oregon','Pennsylvania','Rhode Island','South Carolina','South Dakota','Tennessee','Texas','Utah','Vermont','Virginia','Washington','West Virginia','Wisconsin','Wyoming')

BE_NL_array = ...

BE_FR_array = ...

Maar er kunnen in de tabel landen bijkomen, dus moeten m'n arrays ook automatisch per land aangemaakt worden. 't Komt er eigenlijk op neer dat ik javascript arrays moet genereren met ASP bij het laden van de pagina, en dat ik dan later bij de onchange de juiste array moet laten in de select van state. Onchange is clienstside, dus moeten m'n arrays al opgevuld zijn. Ik weet alleen niet goed hoe er aan te beginnen.

  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 08-05 09:43

Jaspertje

Max & Milo.. lief

Je kan ook ervoor kiezen om je pagina te verversen bij het veranderen van je selectbox land...

Verwijderd

voorbeeld van de javascript code:

http://www.javascriptkit....script2/triplecombo.shtml

deze array's kan je dan met asp aanmaken

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 16:12

gorgi_19

Kruimeltjes zijn weer op :9

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Dit is zowat het omslachtigste dat ik ooit geschreven heb denk ik, maar 'k ben eruit geraakt. Ik genereer gewoon m'n javascript m.b.v. vbscript.

<!--#include file="../includes/adovbs.inc"-->
<!--#include file="../includes/db.asp"-->


<%
function javascriptWriter()
'javascript writer
javascript = "<script language=""javascript"" type=""text/javascript"">"
javascript = javascript & "function loadSelected(){"

'arrays aanmaken
mySQL="SELECT * FROM stateCodes ORDER BY langcode"
call db <---- heb ik ff verwijderd :-)

strPrevLangcode = ""

rstemp_cs.MoveFirst

do while not rstemp_cs.EOF
if not rstemp_cs("langcode") = strPrevLangcode then
'make arrayname
javascript = javascript & rstemp_cs("langcode") & "_array =new Array('Select'"

'fill strPrevLangcode
strPrevLangcode = rstemp_cs("langcode")
end if

'fill array
javascript = javascript & ",'"&rstemp_cs("stateName")&"'"

rstemp_cs.movenext

if not rstemp_cs.eof then
if not rstemp_cs("langcode") = strPrevLangcode then
'array afsluiten
javascript = javascript & ");"
end if
end if
loop


'laatste array sluiten
javascript = javascript & ");"


javascript = javascript & "len=document.frmRegister.prov_state.options.length;"

javascript = javascript & "for(m=0;m<=parseInt(len);m++){document.frmRegister.prov_state.options[0]=null}"


strPrevLangcode = ""
blnif = 1

rstemp_cs.MoveFirst

do while not rstemp_cs.EOF
if not rstemp_cs("langcode") = strPrevLangcode then

if blnif = 1 then
javascript = javascript & "if(document.frmRegister.prov_state.value=='"&rstemp_cs("langcode")&"'){"
blnif = 0
else
javascript = javascript & "else if(document.frmRegister.prov_state.value=='"&rstemp_cs("langcode")&"'){"
end if

javascript = javascript & "for(i=0;i<="&rstemp_cs("langcode")&"_array.length-1;i++){"
javascript = javascript & "document.frmRegister.prov_state.options[i]=new Option();"
javascript = javascript & "document.frmRegister.prov_state[i].value="&rstemp_cs("langcode")&"_array[i];"
javascript = javascript & "document.frmRegister.prov_state[i].text="&rstemp_cs("langcode")&"_array[i];"


'fill strPrevLangcode
strPrevLangcode = rstemp_cs("langcode")
end if

'javascript = javascript & ",'"&rstemp_cs("stateName")&"'"

rstemp_cs.movenext

if not rstemp_cs.eof then
if not rstemp_cs("langcode") = strPrevLangcode then
'array afsluiten
javascript = javascript & "}}"
end if
end if
loop

call closeDB_cs()

javascript = javascript & "}}"

javascript = javascript & "else{"
javascript = javascript & "document.frmRegister.prov_state.options[0]=new Option();"
javascript = javascript & "document.frmRegister.prov_state[0].value='No State';"
javascript = javascript & "document.frmRegister.prov_state[0].text='No State';"


javascript = javascript & "}}</script>"

response.Write(javascript)

end function

%>

Die functie roep je nu ff in 't begin van de pagina op. :-) No comment op de manier van werken a.u.b. :+

Verwijderd

Topicstarter
Resultaat:


<script language="javascript" type="text/javascript">

function loadSelected(){

BE_FR_array =new Array('Select','Namur','Anvers','Luxembourg');
BE_NL_array =new Array('Select','Namen','Oost-Vlaanderen','Vlaams-Brabant','Waals-Brabant','West-Vlaanderen','Luxemburg','Antwerpen','Henegouwen','Limburg','Luik');
FR_FR_array =new Array('Select','Ain','Aisne','Allier','Alpes-de-Haute-Provence','Hautes-Alpes','Alpes-Maritimes','Ardèche','Ardennes','Ariège','Aube','Aveyron','Bouches-du-Rhône','Calvados','Cantal','Charente','Charente-Maritime','Cher','Corrèze','Corse-du-Sud','Haute-Corse','Aude','Côte-d'Or','Côtes-d'Armor','Creuse','Dordogne','Doubs','Drôme','Eure','Eure-et-Loir','Finistère','Gard','Haute-Garonne','Gers','Gironde','Hérault','Ille-et-Vilaine','Indre','Indre-et-Loire','Isère','Jura','Landes','Loir-et-Cher','Loire','Haute-Loire','Loire-Atlantique','Loiret','Lot','Lot-et-Garonne','Lozère','Maine-et-Loire','Manche','Marne','Haute-Marne','Mayenne','Meurthe-et-Moselle','Meuse','Morbihan','Moselle','Nièvre','Nord','Oise','Orne','Pas-de-Calais','Puy-de-Dôme','Pyrénées-Atlantiques','Hautes-Pyrénées','Pyrénées-Orientales','Bas-Rhin','Haut-Rhin','Rhône','Haute-Saône','Saône-et-Loire','Sarthe','Savoie','Haute-Savoie','Paris','Seine-Maritime','Seine-et-Marne','Yvelines','Deux-Sèvres','Somme','Tarn','Tarn-et-Garonne','Var','Vaucluse','Vendée','Vienne','Haute-Vienne','Vosges','Yonne','Territoire-de-Belfort','Essonne','Hauts-de-Seine','Seine-Saint-Denis','Val-de-Marne','Val-d'Oise','Guadeloupe','Martinique','Guyane
','Réunion');
NL_NL_array =new Array('Select','Drenthe','Flevoland','Fryslân/Friesland ','Gelderland ','Groningen','Limburg','Noord-Brabant','Noord-Holland','Overijssel','Utrecht','Zeeland','Zuid-Holland');

len=document.frmRegister.prov_state.options.length;

for(m=0;m<=parseInt(len);m++){document.frmRegister.prov_state.options[0]=null}

if(document.frmRegister.prov_state.value=='BE_FR'){
for(i=0;i<=BE_FR_array.length-1;i++){
document.frmRegister.prov_state.options[i]=new Option();
document.frmRegister.prov_state[i].value=BE_FR_array[i];
document.frmRegister.prov_state[i].text=BE_FR_array[i];
}
}

else if(document.frmRegister.prov_state.value=='BE_NL'){
for(i=0;i<=BE_NL_array.length-1;i++){
document.frmRegister.prov_state.options[i]=new Option();
document.frmRegister.prov_state[i].value=BE_NL_array[i];
document.frmRegister.prov_state[i].text=BE_NL_array[i];
}
}

else if(document.frmRegister.prov_state.value=='CA_EN'){
for(i=0;i<=CA_EN_array.length-1;i++){
document.frmRegister.prov_state.options[i]=new Option();
document.frmRegister.prov_state[i].value=CA_EN_array[i];
document.frmRegister.prov_state[i].text=CA_EN_array[i];
}
}

else if(document.frmRegister.prov_state.value=='CA_FR'){
for(i=0;i<=CA_FR_array.length-1;i++){
document.frmRegister.prov_state.options[i]=new Option();
document.frmRegister.prov_state[i].value=CA_FR_array[i];
document.frmRegister.prov_state[i].text=CA_FR_array[i];
}
}

else if(document.frmRegister.prov_state.value=='FR_FR'){
for(i=0;i<=FR_FR_array.length-1;i++){
document.frmRegister.prov_state.options[i]=new Option();
document.frmRegister.prov_state[i].value=FR_FR_array[i];
document.frmRegister.prov_state[i].text=FR_FR_array[i];
}
}

else if(document.frmRegister.prov_state.value=='NL_NL'){
for(i=0;i<=NL_NL_array.length-1;i++){
document.frmRegister.prov_state.options[i]=new Option();
document.frmRegister.prov_state[i].value=NL_NL_array[i];
document.frmRegister.prov_state[i].text=NL_NL_array[i];
}
}

else if(document.frmRegister.prov_state.value=='US_EN'){
for(i=0;i<=US_EN_array.length-1;i++){
document.frmRegister.prov_state.options[i]=new Option();
document.frmRegister.prov_state[i].value=US_EN_array[i];
document.frmRegister.prov_state[i].text=US_EN_array[i];
}
}

else{
document.frmRegister.prov_state.options[0]=new Option();
document.frmRegister.prov_state[0].value='No State';
document.frmRegister.prov_state[0].text='No State';
}
}
</script>
Pagina: 1