Länder -> Bundesländer / Inhalte Selectboxes abhängig voneinander anzeigen

Mik3e

Erfahrenes Mitglied
Hi,

Es gibt Länder und dazugehörige Bundesländer. Der User soll in einer Selectbox ein Land wählen und in der darunterstehenden Selectbox sollen die zu diesem Land gehörigen Bundesländer angezeigt werden.

Habe mir hierfür folgenden Thread als Vorlage genommen (der einwandfrei funktioniert):
http://www.tutorials.de/forum/javas...-auswahlliste-aendern.html?highlight=l%E4nder

Nun ist die ganze Sache bei mir Leider etwas komplexer. Die Auswahllisten sehen in etwa so aus:

PHP:
/* LÄNDER */
<select>
<option value="1">Österreich</option>
<option value="2">Deutschland</option>
</select>

/* BUNDESLÄNDER */
<select>
<option value="bundeslandID1">BL AUT1</option>
<option value="bundeslandID2">BL AUT2</option>
<option value="bundeslandID3">BL GER1</option>
<option value="bundeslandID4">BL GER2</option>
</select>

Bis hierher ist es 1:1 das obige Beispiel.
ABER:
Die Daten sind in einer Datenbank gespeichert. Hier gibt es eine Relation zwischen Land und Bundesland (1:n Beziehung).

Tabellen (zur besseren Vorstellung) - fk** = Fremdschlüssel:

Code:
LandID | LandName
--------------------------
1 | Österreich
2 | Deutschland

BundesLandID | fkLandID | BundeslandName
----------------------------------------------------------------
1 | 1 | BL AUT 1
2 | 1 | BL AUT 2
3 | 2 | BL GER 1
4 | 2 | BL GER 2

Nun muss ich den Array der Bundesländer aus der DB aufbauen. Ist prinzipiell ja kein Problem und folgendermassen gelöst (in Anlehnung an den geposteten Thread):

PHP:
..............
/* Array mit Bundesländern builden */
var arrParts = new Array();

<?PHP
while($row = $countryStatesInstalled->fetchRow(DB_FETCHMODE_ASSOC)):
    echo 'arrParts['.$row['fk_country_id'].'].push("'.$row['country_states_name'].'");';
endwhile;
?>
.........

Ich dachte mir, dass ich die ID des Landes als Index für die einzelnen Array der bundesländer nütze und dann aufgrund der Auswahl des Landes den jeweiligen Bundesland-Array lade. Hierfür wollte ich die methode push() einsetzen.

Output sieht dann ungefähr so aus (auszug):
PHP:
...................
/* Array mit Bundesländern builden */
var arrParts = new Array();
	
arrParts[195].push("A Coruña");
arrParts[204].push("Aargau");
arrParts[223].push("Alabama");
arrParts[223].push("Alaska");
arrParts[195].push("Alava");
arrParts[195].push("Albacete");
arrParts[38].push("Alberta");
arrParts[195].push("Alicante");
.................

So, und jetzt steh ich an...(Fragen):
1. Bekomme ich permanent eine Laufzeitfehler. Liegt sicher daran, dass ich den Index der Arrays nicht korrekt anspreche.
2. Weiß ich nicht, wie ich die ID des Bundeslandes in die Select-Box bekomme (als Value). Muss ich auch noch irgendwie in den Array packen (evtl. als Sub-Array!? -> arrParts[195].push(new Array("A Coruña", "1"));)

Hier nochmal der gesamte aktuelle Quellcode nachdem er von PHP vorbereitet wurde (zum Testen) - Lasst Euch Durch die Encoding-Fehler und die Länge nicht abschrecken. Kommt einzig von den vielen Daten :) :

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<script type="text/javascript" language="javascript">
// <![CDATA[
/* Array mit Bundesländern bauen */
var arrParts = new Array();
	
arrParts[195].push("A Coruña");
arrParts[204].push("Aargau");
arrParts[223].push("Alabama");
arrParts[223].push("Alaska");
arrParts[195].push("Alava");
arrParts[195].push("Albacete");
arrParts[38].push("Alberta");
arrParts[195].push("Alicante");
arrParts[195].push("Almeria");
arrParts[223].push("American Samoa");
arrParts[204].push("Appenzell Ausserrhoden");
arrParts[204].push("Appenzell Innerrhoden");
arrParts[223].push("Arizona");
arrParts[223].push("Arkansas");
arrParts[223].push("Armed Forces Africa");
arrParts[223].push("Armed Forces Americas");
arrParts[223].push("Armed Forces Canada");
arrParts[223].push("Armed Forces Europe");
arrParts[223].push("Armed Forces Middle East");
arrParts[223].push("Armed Forces Pacific");
arrParts[195].push("Asturias");
arrParts[195].push("Avila");
arrParts[195].push("Badajoz");
arrParts[81].push("Baden-Württemberg");
arrParts[195].push("Baleares");
arrParts[195].push("Barcelona");
arrParts[204].push("Basel-Landschaft");
arrParts[204].push("Basel-Stadt");
arrParts[81].push("Bayern");
arrParts[81].push("Berlin");
arrParts[204].push("Bern");
arrParts[81].push("Brandenburg");
arrParts[81].push("Bremen");
arrParts[38].push("British Columbia");
arrParts[14].push("Burgenland");
arrParts[195].push("Burgos");
arrParts[195].push("Caceres");
arrParts[195].push("Cadiz");
arrParts[223].push("California");
arrParts[195].push("Cantabria");
arrParts[195].push("Castellon");
arrParts[195].push("Ceuta");
arrParts[195].push("Ciudad Real");
arrParts[223].push("Colorado");
arrParts[223].push("Connecticut");
arrParts[195].push("Cordoba");
arrParts[195].push("Cuenca");
arrParts[223].push("Delaware");
arrParts[223].push("District of Columbia");
arrParts[223].push("Federated States Of Micronesia");
arrParts[223].push("Florida");
arrParts[204].push("Freiburg");
arrParts[204].push("Genf");
arrParts[223].push("Georgia");
arrParts[195].push("Girona");
arrParts[204].push("Glarus");
arrParts[195].push("Granada");
arrParts[204].push("Graubünden");
arrParts[195].push("Guadalajara");
arrParts[223].push("Guam");
arrParts[195].push("Guipuzcoa");
arrParts[81].push("Hamburg");
arrParts[223].push("Hawaii");
arrParts[81].push("Hessen");
arrParts[195].push("Huelva");
arrParts[195].push("Huesca");
arrParts[223].push("Idaho");
arrParts[223].push("Illinois");
arrParts[223].push("Indiana");
arrParts[223].push("Iowa");
arrParts[195].push("Jaen");
arrParts[204].push("Jura");
arrParts[223].push("Kansas");
arrParts[14].push("Kärnten");
arrParts[223].push("Kentucky");
arrParts[195].push("La Rioja");
arrParts[195].push("Las Palmas");
arrParts[195].push("Leon");
arrParts[195].push("Lleida");
arrParts[223].push("Louisiana");
arrParts[195].push("Lugo");
arrParts[204].push("Luzern");
arrParts[195].push("Madrid");
arrParts[223].push("Maine");
arrParts[195].push("Malaga");
arrParts[38].push("Manitoba");
arrParts[223].push("Marshall Islands");
arrParts[223].push("Maryland");
arrParts[223].push("Massachusetts");
arrParts[81].push("Mecklenburg-Vorpommern");
arrParts[195].push("Melilla");
arrParts[223].push("Michigan");
arrParts[223].push("Minnesota");
arrParts[223].push("Mississippi");
arrParts[223].push("Missouri");
arrParts[223].push("Montana");
arrParts[195].push("Murcia");
arrParts[195].push("Navarra");
arrParts[223].push("Nebraska");
arrParts[204].push("Neuenburg");
arrParts[223].push("Nevada");
arrParts[38].push("New Brunswick");
arrParts[223].push("New Hampshire");
arrParts[223].push("New Jersey");
arrParts[223].push("New Mexico");
arrParts[223].push("New York");
arrParts[38].push("Newfoundland");
arrParts[204].push("Nidwalden");
arrParts[14].push("Niederösterreich");
arrParts[81].push("Niedersachsen");
arrParts[81].push("Nordrhein-Westfalen");
arrParts[223].push("North Carolina");
arrParts[223].push("North Dakota");
arrParts[223].push("Northern Mariana Islands");
arrParts[38].push("Northwest Territories");
arrParts[38].push("Nova Scotia");
arrParts[38].push("Nunavut");
arrParts[14].push("Oberösterreich");
arrParts[204].push("Obwalden");
arrParts[223].push("Ohio");
arrParts[223].push("Oklahoma");
arrParts[38].push("Ontario");
arrParts[223].push("Oregon");
arrParts[195].push("Ourense");
arrParts[223].push("Palau");
arrParts[195].push("Palencia");
arrParts[223].push("Pennsylvania");
arrParts[195].push("Pontevedra");
arrParts[38].push("Prince Edward Island");
arrParts[223].push("Puerto Rico");
arrParts[38].push("Quebec");
arrParts[81].push("Rheinland-Pfalz");
arrParts[223].push("Rhode Island");
arrParts[81].push("Saarland");
arrParts[81].push("Sachsen");
arrParts[81].push("Sachsen-Anhalt");
arrParts[195].push("Salamanca");
arrParts[14].push("Salzburg");
arrParts[195].push("Santa Cruz de Tenerife");
arrParts[38].push("Saskatchewan");
arrParts[204].push("Schaffhausen");
arrParts[81].push("Schleswig-Holstein");
arrParts[204].push("Schwyz");
arrParts[195].push("Segovia");
arrParts[195].push("Sevilla");
arrParts[204].push("Solothurn");
arrParts[195].push("Soria");
arrParts[223].push("South Carolina");
arrParts[223].push("South Dakota");
arrParts[204].push("St. Gallen");
arrParts[14].push("Steiermark");
arrParts[195].push("Tarragona");
arrParts[223].push("Tennessee");
arrParts[195].push("Teruel");
arrParts[204].push("Tessin");
arrParts[223].push("Texas");
arrParts[204].push("Thurgau");
arrParts[81].push("Thüringen");
arrParts[14].push("Tirol");
arrParts[195].push("Toledo");
arrParts[204].push("Uri");
arrParts[223].push("Utah");
arrParts[195].push("Valencia");
arrParts[195].push("Valladolid");
arrParts[223].push("Vermont");
arrParts[223].push("Virgin Islands");
arrParts[223].push("Virginia");
arrParts[195].push("Vizcaya");
arrParts[14].push("Voralberg");
arrParts[204].push("Waadt");
arrParts[204].push("Wallis");
arrParts[223].push("Washington");
arrParts[223].push("West Virginia");
arrParts[14].push("Wien");
arrParts[223].push("Wisconsin");
arrParts[223].push("Wyoming");
arrParts[38].push("Yukon Territory");
arrParts[195].push("Zamora");
arrParts[195].push("Zaragoza");
arrParts[204].push("Zug");
arrParts[204].push("Zürich");

/* Einblenden der jeweiligen Bundesländer
-------------------------------------------------------------*/
function updateCountrySelect(objSel){
   
	// Objekt für zweite Select-Gruppe
    objSelNew = document.getElementById("customerCountryStateID");
    // Optionen löschen
    objSelNew.length = 0;

    // Falls kein Land gewählt wurde
    if(objSel.selectedIndex == 0){
      objSelNew.style.display = "none";
    }else{
      objSelNew.style.display = "inline";

      // Alle BL/Kantone durchlaufen
      for(i=0; i<arrParts[objSel.selectedIndex].length; i++){
        // Neue Option erstellen
        objOpt = new Option(arrParts[objSel.selectedIndex][i], arrParts[objSel.selectedIndex][i], false, false);
        // Neue Option in Select-Struktur einhängen (immer an letzte Stelle)
        objSelNew.options[objSelNew.length] = objOpt;
      }
    }
  }

// ]]>
</script>

</head>

<body>
<!-- SelectBox mit Ländern -->
<select name="customerCountryID" style="width:100%;" onchange="updateCountrySelect(this);">
<option value="14">Österreich (Austria / AT)</option><option value="81">Deutschland (Germany / DE)</option><option value="204">Schweiz (Switzerland / CH)</option><option value="2">Shqipëria (Albania / AL)</option><option value="1">????????? (Afghanistan / AF)</option><option value="3">??????? (Algeria / DZ)</option><option value="4">American Samoa (American Samoa / AS)</option><option value="5">Andorra (Andorra / AD)</option><option value="6">Angola (Angola / AO)</option><option value="7">Anguilla (Anguilla / AI)</option><option value="8">Antarctica (Antarctica / AQ)</option><option value="9">Antigua and Barbuda (Antigua and Barbuda / AG)</option><option value="10">Argentina (Argentina / AR)</option><option value="11">???????? (Armenia / AM)</option><option value="12">Aruba (Aruba / AW)</option><option value="13">Australia (Australia / AU)</option><option value="15">Az?rbaycan (Azerbaijan / AZ)</option><option value="16">Bahamas (Bahamas / BS)</option><option value="17">??????? (Bahrain / BH)</option><option value="18">???????? (Bangladesh / BD)</option><option value="19">Barbados (Barbados / BB)</option><option value="20">???????? (Belarus / BY)</option><option value="21">België (Belgium / BE)</option><option value="22">Belize (Belize / BZ)</option><option value="23">Bénin (Benin / BJ)</option><option value="24">Bermuda (Bermuda / BM)</option><option value="25">Druk Yul (Bhutan / BT)</option><option value="26">Bolivia (Bolivia / BO)</option><option value="27">Bosna i Hercegovina (Bosnia and Herzegowina / BA)</option><option value="28">Botswana (Botswana / BW)</option><option value="29">Bouvet Island (Bouvet Island / BV)</option><option value="30">Brazil (Brazil / BR)</option><option value="31">British Indian Ocean Territory (British Indian Ocean Territory / IO)</option><option value="32">Brunei Darussalam (Brunei Darussalam / BN)</option><option value="33">???????? (Bulgaria / BG)</option><option value="34">Burkina Faso (Burkina Faso / BF)</option><option value="35">Burundi (Burundi / BI)</option><option value="36">Kâmp?chea (Cambodia / KH)</option><option value="37">Cameroon (Cameroon / CM)</option><option value="38">Canada (Canada / CA)</option><option value="39">Cabo Verde (Cape Verde / CV)</option><option value="40">Cayman Islands (Cayman Islands / KY)</option><option value="41">Central African Republic (Central African Republic / CF)</option><option value="42">???????? ???? (Chad / TD)</option><option value="43">Chile (Chile / CL)</option><option value="44">??????? (China / CN)</option><option value="45">Christmas Island (Christmas Island / CX)</option><option value="46">Cocos (Keeling) Islands (Cocos (Keeling) Islands / CC)</option><option value="47">Colombia (Colombia / CO)</option><option value="48">????? ????? (Comoros / KM)</option><option value="49">Congo (Congo / CG)</option><option value="50">Cook Islands (Cook Islands / CK)</option><option value="51">Costa Rica (Costa Rica / CR)</option><option value="52">Cote D'Ivoire (Cote D'Ivoire / CI)</option><option value="53">Hrvatska (Croatia / HR)</option><option value="54">Cuba (Cuba / CU)</option><option value="55">???????? ?????????? (Cyprus / CY)</option><option value="56">?eská republika (Czech Republic / CZ)</option><option value="57">Danmark (Denmark / DK)</option><option value="58">?????? (Djibouti / DJ)</option><option value="59">Dominica (Dominica / DM)</option><option value="60">República Dominicana (Dominican Republic / DO)</option><option value="61">Timór-Leste (East Timor / TP)</option><option value="62">Ecuador (Ecuador / EC)</option><option value="63">??? (Egypt / EG)</option><option value="64">El Salvador (El Salvador / SV)</option><option value="65">Equatorial Guinea (Equatorial Guinea / GQ)</option><option value="66">Ertra (Eritrea / ER)</option><option value="67">Eesti (Estonia / EE)</option><option value="68">Ityop'iya (Ethiopia / ET)</option><option value="69">Falkland Islands (Malvinas) (Falkland Islands (Malvinas) / FK)</option><option value="70">Faroe Islands (Faroe Islands / FO)</option><option value="71">Fiji Islands (Fiji Islands / FJ)</option><option value="72">Suomi (Finland / FI)</option><option value="73">France (France / FR)</option><option value="74">France, Metropolitan (France, Metropolitan / FX)</option><option value="75">French Guiana (French Guiana / GF)</option><option value="76">French Polynesia (French Polynesia / PF)</option><option value="77">French Southern Territories (French Southern Territories / TF)</option><option value="78">Gabon (Gabon / GA)</option><option value="79">Gambia (Gambia / GM)</option><option value="80">?????????? (Georgia / GE)</option><option value="82">Ghana (Ghana / GH)</option><option value="83">Gibraltar (Gibraltar / GI)</option><option value="84">?????? (Greece / GR)</option><option value="85">Greenland (Greenland / GL)</option><option value="86">Grenada (Grenada / GD)</option><option value="87">Guadeloupe (Guadeloupe / GP)</option><option value="88">Guam (Guam / GU)</option><option value="89">Guatemala (Guatemala / GT)</option><option value="90">Guinea (Guinea / GN)</option><option value="91">Guiné-Bissau (Guinea-bissau / GW)</option><option value="92">Guyana (Guyana / GY)</option><option value="93">Haïti (Haiti / HT)</option><option value="94">Heard and Mc Donald Islands (Heard and Mc Donald Islands / HM)</option><option value="95">Honduras (Honduras / HN)</option><option value="96">Hong Kong (Hong Kong / HK)</option><option value="97">Magyar Köztársaság (Hungary / HU)</option><option value="98">Lýðveldið Ísland (Iceland / IS)</option><option value="99">???? (India / IN)</option><option value="100">Indonesia (Indonesia / ID)</option><option value="101">????? (Iran / IR)</option><option value="102">?????? (Iraq / IQ)</option><option value="103">Éire (Ireland / IE)</option><option value="104">????? ????? (Israel / IL)</option><option value="105">Italia (Italy / IT)</option><option value="106">Jamaica (Jamaica / JM)</option><option value="107">?? (Japan / JP)</option><option value="108">????????? (Jordan / JO)</option><option value="109">????????? (Kazakhstan / KZ)</option><option value="110">Kenya (Kenya / KE)</option><option value="111">Kiribati (Kiribati / KI)</option><option value="112">Korea (Democratic people's republic of) (Korea (Democratic people's republic of) / KP)</option><option value="113">Korea (Republic of) (Korea (Republic of) / KR)</option><option value="114">?????? (Kuwait / KW)</option><option value="115">?????? ???????????? (Kyrgyzstan / KG)</option><option value="116">Sathalanalat Paxathipatai Paxaxon Lao (Lao People's Democratic Republic / LA)</option><option value="117">Latvija (Latvia / LV)</option><option value="118">????????? ????????? (Lebanon / LB)</option><option value="119">Lesotho (Lesotho / LS)</option><option value="120">Liberia (Liberia / LR)</option><option value="121">?????????? ??????? ??????? ??????? ?????????? (Libyan Arab Jamahiriya / LY)</option><option value="122">Liechtenstein (Liechtenstein / LI)</option><option value="123">Lietuva (Lithuania / LT)</option><option value="124">Luxembourg (Luxembourg / LU)</option><option value="125">Macau (Macau / MO)</option><option value="126">Macedonia (Macedonia / MK)</option><option value="127">Madagasikara (Madagascar / MG)</option><option value="128">Mala?i (Malawi / MW)</option><option value="129">Malaysia (Malaysia / MY)</option><option value="130">Rajjeyge Jumhuriyya (Maldives / MV)</option><option value="131">Mali (Mali / ML)</option><option value="132">Malta (Malta / MT)</option><option value="133">Marshall Islands (Marshall Islands / MH)</option><option value="134">Martinique (Martinique / MQ)</option><option value="135">????????? ????????? ??????????? (Mauritania / MR)</option><option value="136">Mauritius (Mauritius / MU)</option><option value="137">Mayotte (Mayotte / YT)</option><option value="138">México (Mexico / MX)</option><option value="139">Micronesia (Micronesia / FM)</option><option value="140">Moldova (Moldova / MD)</option><option value="141">Monaco (Monaco / MC)</option><option value="142">?????? ??? (Mongolia / MN)</option><option value="143">Montserrat (Montserrat / MS)</option><option value="144">??????? ???????? (Morocco / MA)</option><option value="145">Moçambique (Mozambique / MZ)</option><option value="146">Myanma Naingngan (Myanmar / MM)</option><option value="147">Namibia (Namibia / NA)</option><option value="148">Naoero (Nauru / NR)</option><option value="149">????? (Nepal / NP)</option><option value="150">Nederland (Netherlands / NL)</option><option value="151">Netherlands Antilles (Netherlands Antilles / AN)</option><option value="152">New Caledonia (New Caledonia / NC)</option><option value="153">New Zealand (New Zealand / NZ)</option><option value="154">Nicaragua (Nicaragua / NI)</option><option value="155">Niger (Niger / NE)</option><option value="156">Nigeria (Nigeria / NG)</option><option value="157">Niue (Niue / NU)</option><option value="158">Norfolk Island (Norfolk Island / NF)</option><option value="159">Northern Mariana Islands (Northern Mariana Islands / MP)</option><option value="160">Norge (Norway / NO)</option><option value="161">????? ????? (Oman / OM)</option><option value="162">??????? (Pakistan / PK)</option><option value="163">Palau (Palau / PW)</option><option value="164">Panamá (Panama / PA)</option><option value="165">Papua New Guinea (Papua New Guinea / PG)</option><option value="166">Paraguay (Paraguay / PY)</option><option value="167">Perú (Peru / PE)</option><option value="168">Pilipinas (Philippines / PH)</option><option value="169">Pitcairn (Pitcairn / PN)</option><option value="170">Polska (Poland / PL)</option><option value="171">Portuguesa (Portugal / PT)</option><option value="172">Puerto Rico (Puerto Rico / PR)</option><option value="173">??? (Qatar / QA)</option><option value="174">Reunion (Reunion / RE)</option><option value="175">România (Romania / RO)</option><option value="176">?????? (Russian Federation / RU)</option><option value="177">Ruanda (Ruanda / RW)</option><option value="178">Saint Kitts and Nevis (Saint Kitts and Nevis / KN)</option><option value="179">Saint Lucia (Saint Lucia / LC)</option><option value="180">Saint Vincent and the Grenadines (Saint Vincent and the Grenadines / VC)</option><option value="181">Samoa (Samoa / WS)</option><option value="182">San Marino (San Marino / SM)</option><option value="183">São Tomé e Príncipe (Sao Tome and Principe / ST)</option><option value="184">??????? ??????? ???????? (Saudi Arabia / SA)</option><option value="185">Sénégal (Senegal / SN)</option><option value="186">Seychelles (Seychelles / SC)</option><option value="187">Sierra Leone (Sierra Leone / SL)</option><option value="188">Singapura (Singapore / SG)</option><option value="189">Slovensko (Slovakia / SK)</option><option value="190">Slovenija (Slovenia / SI)</option><option value="191">Solomon Islands (Solomon Islands / SB)</option><option value="192">Soomaaliya (Somalia / SO)</option><option value="193">South Africa (South Africa / ZA)</option><option value="194">South Georgia and the South Sandwich Islands (South Georgia and the South Sandwich Islands / GS)</option><option value="195">España (Spain / ES)</option><option value="196">Sri Lanka (Sri Lanka / LK)</option><option value="197">St. Helena (St. Helena / SH)</option><option value="198">St. Pierre and Miquelon (St. Pierre and Miquelon / PM)</option><option value="199">??????? ??????? (Sudan / SD)</option><option value="200">Suriname (Suriname / SR)</option><option value="201">Svalbard and Jan Mayen Islands (Svalbard and Jan Mayen Islands / SJ)</option><option value="202">Swaziland (Swaziland / SZ)</option><option value="203">Sverige (Sweden / SE)</option><option value="205">????????? ??????? ??????? (Syrian Arab Republic / SY)</option><option value="206">Taiwan (Taiwan / TW)</option><option value="207">?????????? (Tajikistan / TJ)</option><option value="208">Tanzania (United Republic of) (Tanzania (United Republic of) / TZ)</option><option value="209">?????????????? (Thailand / TH)</option><option value="210">Togolaise (Togo / TG)</option><option value="211">Tokelau (Tokelau / TK)</option><option value="212">Tonga (Tonga / TO)</option><option value="213">Trinidad and Tobago (Trinidad and Tobago / TT)</option><option value="214">????????? ???????? (Tunisia / TN)</option><option value="215">Türkiye (Turkey / TR)</option><option value="216">Türkmenistan (Turkmenistan / TM)</option><option value="217">Turks and Caicos Islands (Turks and Caicos Islands / TC)</option><option value="219">Uganda (Uganda / UG)</option><option value="218">Tuvalu (Tuvalu / TV)</option><option value="220">??????? (Ukraine / UA)</option><option value="221">???????? ???????? ???????? (United Arab Emirates / AE)</option><option value="222">United Kingdom (United Kingdom / GB)</option><option value="223">United States (United States / US)</option><option value="224">United States Minor Outlying Islands (United States Minor Outlying Islands / UM)</option><option value="225">Uruguay (Uruguay / UY)</option><option value="226">O‘zbekiston (Uzbekistan / UZ)</option><option value="227">Vanuatu (Vanuatu / VU)</option><option value="228">Vaticanae (Vatican City State (Holy See) / VA)</option><option value="229">Venezuela (Venezuela / VE)</option><option value="230">Vi?t Nam (Viet Nam / VN)</option><option value="231">Virgin Islands (British) (Virgin Islands (British) / VG)</option><option value="232">Virgin Islands (U.S.) (Virgin Islands (U.S.) / VI)</option><option value="233">Wallis and Futuna Islands (Wallis and Futuna Islands / WF)</option><option value="234">????????? ??????? ????????? ??????????? (Western Sahara / EH)</option><option value="235">Yemen (Yemen / YE)</option><option value="236">Yugoslavia (Yugoslavia / YU)</option><option value="237">Zaire (Zaire / ZR)</option><option value="238">Zambia (Zambia / ZM)</option><option value="239">Zimbabwe (Zimbabwe / ZW)</option></select>

<!-- SelectBox mit Bundesländern -->
<select name="customerCountryStateID" id="customerCountryStateID" style="width:100%;"></select>
</body>
</html>

Wäre Euch dankbar, wenn mir irgendwer einen Tipp geben könnte...
Danke & Ciao,
Mike
 
Du könntest die jeweilige id in einem hiddenfeld speichern und dann beim neuaufruf über $_POST['hiddenfeldname'] darauf zugreifen. bei nur einer id ist das der einfachste weg.

Ich hoffe ich habe dein anliegen richtig verstanden!
 
Nö, hast Du nicht :)
Es geht mir nicht darum, wie ich an den Array nach dem Post rankomme (das ist das Kleinste Problem und wäre ansonsten auch im PHP Forum gepostet).
Ich brauche eine JS-Funktion, die mir die Anzeige der Bundesländer abhängig vom gewählten Land korrekt macht...

Danke trotzdem & Ciao,
Mike
 
Hallo Mike,

noch habe ich es nicht geschafft, dein Beispiel zum Laufen zu bringen, aber trotzdem einige Anmerkungen:
Wenn du den Wert von selectedIndex eines Select-Elements prüfst, lautet der Rückgabewert für keine Auswahl -1. Oder soll es unsichtbar werden, wenn man die erste Option wählt :confused:
Und wenn du nachher auf deinen Array arrParts zugreifen möchtest: Den Schlüssel des richtigen Array-Elements (Staaten-Id) erhälst du über die Eigenschaft value der ausgewählten Option, selectedIndex ist ja nur die Position...
Ich fürchte, man kommt auch nicht darum herum, die Arrays vorher zu initialisieren, etwa so:
Javascript:
arrParts[195] = new Array();
arrParts[195] = arrParts[195].push(new Array("A Coruña", 1));

Wenn man den Array arrParts so aufbaut wie von mir vorgeschlagen, sollte es jetzt funktionieren...
Mit der Id der Bundesländer/Regionen würde ich das so versuchen, wie du selbst es vorgeschlagen hast.

Javascript:
function updateCountrySelect(objSel){
   
    // Objekt für zweite Select-Gruppe
    objSelNew = document.getElementById("customerCountryStateID");
    // Optionen löschen
    objSelNew.length = 0;

    // Falls kein Land gewählt wurde
		
    if(objSel.selectedIndex == -1){
      objSelNew.style.display = "none";

    }else{
      objSelNew.style.display = "inline";
      
			stateId = objSel.options[objSel.selectedIndex].value;
			
      // Alle BL/Kantone durchlaufen
      for(i=0; i<arrParts[stateId].length; i++){
        // Neue Option erstellen
        objOpt = new Option(arrParts[stateId][i], arrParts[stateId][i], false, false);
        // Neue Option in Select-Struktur einhängen (immer an letzte Stelle)
        objSelNew.options[objSelNew.length] = objOpt;
      }
    }
  }
 
Hi,

Danke für die Unterstützung, aber ich kriegs nicht gebacken...
Mein Problem ist, dass ich in der JS Funktion nicht auf den Array zugreifen kann.
Hier ein Auszug um das Problem zu schildern:
PHP:
// Bundesland-Array bilden (nur ein Bundesland für Beispiel)
var arrParts = new Array();
arrParts[195] = new Array();
arrParts[195] = arrParts[195].push(new Array("A Coruña",130));
arrParts[195] = arrParts[195].push(new Array("Bundesland2",134));
arrParts[195] = arrParts[195].push(new Array("Bundesland3",138));

// Auszug aus der Funktion um auf den Array zuzugreifen
function updateCountrySelect(objSel){
    var stateID=0;
    stateID = objSel.options[objSel.selectedIndex].value;      
    alert('stateid:'+stateID); // -> 195 -> Passt
    alert('Array Länge: '+arrParts[195].length); // ->FEHLER: UNDEFINED
}

Und das kapier ich nicht... Müsste doch nach Adam Riese in dem Beispiel 3 liefern..
Wenn ich das Problem gelöst habe, müsste es eigentlich passen (die for-schleife zum aufbau der Selectbox ist dann nur noch Kür)

Hast Du noch eine Idee?
Ciao,
Mike
 
Du darfst nicht in arrParts[xxx] das Ergebnis von push() speichern... da überschreibst du den Array(push() gibt nicht den resultierenden Array zurück)
.....also so:
Code:
var arrParts = new Array();
arrParts[195] = new Array();
arrParts[195].push(new Array("A Coruña",130));
arrParts[195].push(new Array("Bundesland2",134));
arrParts[195].push(new Array("Bundesland3",138));
 

Neue Beiträge

Zurück