2016-05-05 3 views
0

So funktioniert der Code mit Drop-Down/Select Länder - Städte - (Zeitzone) Mein Problem ist, wie man die Städte und die Zeitzone vom Land trennt.Separates Land und Stadt mit PHP und HTML

Bitte bitte helfen Sie mir.

html code 
 
<label for="timeZone"><br>City<br /> 
 
\t \t <select id="timeZone" name="timeZone"> 
 
\t \t \t <?php echo displayTimeZoneSelect("Europe/Amsterdam"); \t 
 
\t \t \t ?> 
 
\t \t </select> 
 
\t </label> 
 
\t

PHP CODE 
 
    /** 
 
    * returns a HTML formated TimeZone select 
 
    * 
 
    * @param $selectedTimeZone string The timezone marked as "selected" 
 
    * @return string 
 
    */ 
 

 
    function displayTimeZoneSelect($selectedTimeZone = 'America/New_York'){ 
 
    \t $countryCodes = getCountryCodes(); 
 
    \t $return = null; 
 
    \t foreach ($countryCodes as $country => $countryCode) { 
 
    \t \t $timezone_identifiers = DateTimeZone::listIdentifiers(DateTimeZone::PER_COUNTRY,$countryCode); 
 
    \t \t foreach($timezone_identifiers as $value){ 
 
    \t \t \t /* getTimeZoneOffset returns minutes and we need to display hours */ 
 
    \t \t \t $offset = getTimeZoneOffset($value)/60; 
 
    \t \t \t /* for the GMT+1 GMT-1 display */ 
 
    \t \t \t $offset = (substr($offset,0,1) == "-" ? " (GMT" : " (GMT+") . $offset . ")"; 
 
    \t \t \t /* America/New_York -> America/New York */ 
 
    \t \t \t $displayValue = (str_replace('_',' ',$value)); 
 
    \t \t \t /* Find the city */ 
 
    \t \t \t $ex = explode("/",$displayValue); 
 
    \t \t \t $city = (($ex[2]) ? $ex[2] : $ex[1]); 
 
    \t \t \t /* For the special names */ 
 
    \t \t \t $displayValue = htmlentities($country." - ".$city.$offset); 
 
    \t \t \t /* handle the $selectedTimeZone in the select form */ 
 
    \t \t \t $selected = (($value == $selectedTimeZone) ? ' selected="selected"' : null); 
 
    \t \t \t $return .= '<option value="' . $value . '"' . $selected . '>' 
 
    \t \t \t \t . $displayValue 
 
    \t \t \t \t . '</option>' . PHP_EOL; \t \t \t 
 
    \t \t } 
 
    \t } 
 
    \t return $return; 
 
    } 
 

 

 
    function getCountryCodes(){ 
 
    $return = array(
 
    "Afghanistan (‫افغانستان‬‎)"=>"AF", 
 
    "Åland Islands (Åland)"=>"AX", 
 
    "Albania (Shqipëri"=>"AL", 
 
    "Algeria (‫الجزائر‬‎)"=>"DZ", 
 
    "American Samoa"=>"AS", 
 
    "Andorra"=>"AD", 
 
    "Angola"=>"AO", 
 
    "Anguilla"=>"AI", 
 
    "Antarctica"=>"AQ", 
 
    "Antigua and Barbuda"=>"AG", 
 
    "Argentina"=>"AR", 
 
    "Armenia (Հայաստան)"=>"AM", 
 
    "Aruba"=>"AW", 
 
    "Ascension Island"=>"AC", 
 
    "Australia"=>"AU", 
 
    "Austria (Österreich)"=>"AT", 
 
    "Azerbaijan (Azərbaycan)"=>"AZ", 
 
    "Bahamas"=>"BS", 
 
    "Bahrain (‫البحرين‬‎)"=>"BH", 
 
    "Bangladesh (বাংলাদেশ)"=>"BD", 
 
    "Barbados"=>"BB", 
 
    "Belarus (Беларусь)"=>"BY", 
 
    "Belgium (België)"=>"BE", 
 
    "Belize"=>"BZ", 
 
    "Benin (Bénin)"=>"BJ", 
 
    "Bermuda"=>"BM", 
 
    "Bhutan (འབྲུག)"=>"BT", 
 
    "Bolivia"=>"BO", 
 
    "BONAIRE, SINT EUSTATIUS AND SABA"=>"BQ", 
 
    "Bosnia and Herzegovina"=>"BA", 
 
    "Botswana"=>"BW", 
 
    "Bouvet Island"=>"BV", 
 
    "Brazil (Brasil)"=>"BR", 
 
    "British Indian Ocean Territory"=>"IO", 
 
    "British Virgin Islands"=>"VG", 
 
    "Brunei"=>"BN", 
 
    "Bulgaria (България)"=>"BG", 
 
    "Burkina Faso"=>"BF", 
 
    "Burundi (Uburundi)"=>"BI", 
 
    "Cambodia (កម្ពុជា)"=>"KH", 
 
    "Cameroon (Cameroun)"=>"CM", 
 
    "Canada"=>"CA", 
 
    "Canary Islands (islas Canarias)"=>"IC", 
 
    "Cape Verde (Kabu Verdi)"=>"CV", 
 
    "Caribbean Netherlands"=>"BQ", 
 
    "Cayman Islands"=>"KY", 
 
    "Central African Republic"=>"CF", 
 
    "Ceuta and Melilla"=>"EA", 
 
    "Chad "=>"TD", 
 
    "Chile"=>"CL", 
 
    "China (中国)"=>"CN", 
 
    "Christmas Island"=>"CX", 
 
    "Clipperton Island"=>"CP", 
 
    "Cocos (Keeling) Islands"=>"CC", 
 
    "Colombia"=>"CO", 
 
    "Comoros (‫جزر القمر‬‎)"=>"KM", 
 
    "Congo (Republic)"=>"CG", 
 
    "Congo (DRC)"=>"CD", 
 
    "Cook Islands"=>"CK", 
 
    "Costa Rica"=>"CR", 
 
    "Côte d’Ivoire"=>"CI", 
 
    "Croatia"=>"HR", 
 
    "Cuba"=>"CU", 
 
    "Curaçao"=>"CW", 
 
    "Cyprus"=>"CY", 
 
    "Czech Republic"=>"CZ", 
 
    "Denmark"=>"DK", 
 
    "Diego Garcia"=>"DG", 
 
    "Djibouti"=>"DJ", 
 
    "Dominica"=>"DM", 
 
    "Dominican Republic"=>"DO", 
 
    "Ecuador"=>"EC", 
 
    "Egypt"=>"EG", 
 
    "El Salvador"=>"SV", 
 
    "Equatorial Guinea"=>"GQ", 
 
    "Eritrea"=>"ER", 
 
    "Estonia"=>"EE", 
 
    "Ethiopia"=>"ET", 
 
    "Falkland Islands (Islas Malvinas)"=>"FK", 
 
    "Faroe Islands"=>"FO", 
 
    "Fiji"=>"FJ", 
 
    "Finland"=>"FI", 
 
    "France"=>"FR", 
 
    "French Guiana"=>"GF", 
 
    "French Polynesia"=>"PF", 
 
    "French Southern Territories"=>"TF", 
 
    "Gabon"=>"GA", 
 
    "Gambia"=>"GM", 
 
    "Georgia"=>"GE", 
 
    "Germany"=>"DE", 
 
    "Ghana"=>"GH", 
 
    "Gibraltar"=>"GI", 
 
    "Greece"=>"GR", 
 
    "Greenland"=>"GL", 
 
    "Grenada"=>"GD", 
 
    "Guadeloupe"=>"GP", 
 
    "Guam"=>"GU", 
 
    "Guatemala"=>"GT", 
 
    "Guernsey"=>"GG", 
 
    "Guinea"=>"GN", 
 
    "Guinea-Bissau"=>"GW", 
 
    "Guyana"=>"GY", 
 
    "Haiti"=>"HT", 
 
    "Heard & McDonald Islands"=>"HM", 
 
    "Honduras"=>"HN", 
 
    "Hong Kong (香港)"=>"HK", 
 
    "Hungary"=>"HU", 
 
    "Iceland"=>"IS", 
 
    "India"=>"IN", 
 
    "Indonesia"=>"ID", 
 
    "Iran (‫ایران‬‎)"=>"IR", 
 
    "Iraq (‫العراق‬‎)"=>"IQ", 
 
    "Ireland"=>"IE", 
 
    "Isle of Man"=>"IM", 
 
    "Israel"=>"IL", 
 
    "Italy"=>"IT", 
 
    "Jamaica"=>"JM", 
 
    "Japan (日本)"=>"JP", 
 
    "Jersey"=>"JE", 
 
    "Jordan (‫الأردن‬‎)"=>"JO", 
 
    "Kazakhstan"=>"KZ", 
 
    "Kenya"=>"KE", 
 
    "Kiribati"=>"KI", 
 
    "Kosovo (Kosovë)"=>"XK", 
 
    "Kuwait (‫الكويت‬‎)"=>"KW", 
 
    "Kuwait (‫الكويت‬‎)"=>"KG", 
 
    "Laos (ລາວ)"=>"LA", 
 
    "Latvia"=>"LV", 
 
    "Lebanon (‫لبنان‬‎)"=>"LB", 
 
    "Lesotho"=>"LS", 
 
    "Liberia"=>"LR", 
 
    "Libya (‫ليبيا‬‎)"=>"LY", 
 
    "Liechtenstein"=>"LI", 
 
    "Lithuania"=>"LT", 
 
    "Luxembourg"=>"LU", 
 
    "Macau (澳門)"=>"MO", 
 
    "Macedonia(Македонија"=>"MK", 
 
    "Madagascar"=>"MG", 
 
    "Malawi"=>"MW", 
 
    "Malaysia"=>"MY", 
 
    "Maldives"=>"MV", 
 
    "Mali"=>"ML", 
 
    "Malta"=>"MT", 
 
    "Marshall Islands"=>"MH", 
 
    "Martinique"=>"MQ", 
 
    "Mauritania (‫موريتانيا‬‎)"=>"MR", 
 
    "Mauritius"=>"MU", 
 
    "Mayotte"=>"YT", 
 
    "Mexico"=>"MX", 
 
    "Micronesia"=>"FM", 
 
    "Moldova"=>"MD", 
 
    "Monaco"=>"MC", 
 
    "Mongolia (Монгол)"=>"MN", 
 
    "Montenegro "=>"ME", 
 
    "Montserrat"=>"MS", 
 
    "Morocco (‫المغرب‬‎)"=>"MA", 
 
    "Mozambique "=>"MZ", 
 
    "Myanmar "=>"MM", 
 
    "Namibia "=>"NA", 
 
    "Nauru"=>"NR", 
 
    "Nepal (नेपाल)"=>"NP", 
 
    "Netherlands "=>"NL", 
 
    "New Caledonia ("=>"NC", 
 
    "New Zealand"=>"NZ", 
 
    "Nicaragua"=>"NI", 
 
    "Niger"=>"NE", 
 
    "Nigeria"=>"NG", 
 
    "Niue"=>"NU", 
 
    "Norfolk Island"=>"NF", 
 
    "Northern Mariana Islands"=>"MP", 
 
    "North Korea"=>"KP", 
 
    "Norway"=>"NO", 
 
    "Oman (‫عُمان‬‎)"=>"OM", 
 
    "Pakistan (‫پاکستان‬‎)"=>"PK", 
 
    "Palau"=>"PW", 
 
    "Palestine"=>"PS", 
 
    "Panama "=>"PA", 
 
    "Papua New Guinea"=>"PG", 
 
    "Paraguay"=>"PY", 
 
    "Peru "=>"PE", 
 
    "Philippines"=>"PH", 
 
    "Pitcairn Islands"=>"PN", 
 
    "Poland "=>"PL", 
 
    "Portugal"=>"PT", 
 
    "Puerto Rico"=>"PR", 
 
    "Qatar (‫قطر‬‎)"=>"QA", 
 
    "Réunion"=>"RE", 
 
    "Romania "=>"RO", 
 
    "Russia (Россия)"=>"RU", 
 
    "Rwanda"=>"RW", 
 
    "Saint Barthélemy"=>"BL", 
 
    "Saint Helena"=>"SH", 
 
    "Saint Kitts and Nevis"=>"KN", 
 
    "Saint Lucia"=>"LC", 
 
    "Saint Martin (FRENCH PART)"=>"MF", 
 
    "Saint Pierre and Miquelon"=>"PM", 
 
    "SAINT VINCENT AND THE GRENADINES"=>"VC", 
 
    "Samoa"=>"WS", 
 
    "San Marino"=>"SM", 
 
    "São Tomé and Príncipe"=>"ST", 
 
    "Saudi Arabia (‫المملكة العربية السعودية‬‎)"=>"SA", 
 
    "Senegal "=>"SN", 
 
    "Serbia "=>"RS", 
 
    "Seychelles"=>"SC", 
 
    "Sierra Leone"=>"SL", 
 
    "Singapore"=>"SG", 
 
    "Sint Maarten (DUTCH PART)"=>"SX", 
 
    "Slovakia"=>"SK", 
 
    "Slovenia"=>"SI", 
 
    "Solomon Islands"=>"SB", 
 
    "Somalia "=>"SO", 
 
    "South Africa"=>"ZA", 
 
    "South Georgia & South Sandwich Islands"=>"GS", 
 
    "South Korea (대한민국)"=>"KR", 
 
    "South Sudan (‫جنوب السودان‬‎)"=>"SS", 
 
    "Spain "=>"ES", 
 
    "Sri Lanka"=>"LK", 
 
    "Sudan (‫السودان‬‎)"=>"SD", 
 
    "Suriname"=>"SR", 
 
    "Svalbard and Jan Mayen"=>"SJ", 
 
    "Swaziland"=>"SZ", 
 
    "Sweden "=>"SE", 
 
    "Switzerland "=>"CH", 
 
    "Syria (‫سوريا‬‎)"=>"SY", 
 
    "Taiwan (台灣)"=>"TW", 
 
    "Tajikistan"=>"TJ", 
 
    "Tanzania"=>"TZ", 
 
    "Thailand (ไทย)"=>"TH", 
 
    "Timor-Leste"=>"TL", 
 
    "Togo"=>"TG", 
 
    "Tokelau"=>"TK", 
 
    "Tonga"=>"TO", 
 
    "Trinidad and Tobago"=>"TT", 
 
    "Tristan da Cunha"=>"TA", 
 
    "Tunisia (‫تونس‬‎)"=>"TN", 
 
    "Turkey "=>"TR", 
 
    "Turkmenistan"=>"TM", 
 
    "Turks and Caicos Islands"=>"TC", 
 
    "Tuvalu"=>"TV", 
 
    "Uganda"=>"UG", 
 
    "Ukraine"=>"UA", 
 
    "United Arab Emirates"=>"AE", 
 
    "United Kingdom"=>"GB", 
 
    "UNITED STATES"=>"US", 
 
    "U.S. Outlying Islands"=>"UM", 
 
    "Uruguay"=>"UY", 
 
    "Uzbekistan"=>"UZ", 
 
    "Vanuatu"=>"VU", 
 
    "Vatican City (Città del Vaticano)"=>"VA", 
 
    "Venezuela"=>"VE", 
 
    "Vietnam "=>"VN", 
 
    "VIRGIN ISLANDS, BRITISH"=>"VG", 
 
    "VIRGIN ISLANDS, U.S."=>"VI", 
 
    "Wallis and Futuna"=>"WF", 
 
    "Western Sahara (‫الصحراء الغربية‬‎)"=>"EH", 
 
    "Yemen (‫اليمن‬‎)"=>"YE", 
 
    "Zambia"=>"ZM", 
 
    "Zimbabwe"=>"ZW"); 
 
    return $return; 
 
    } 
 
    /** 
 
    * Calculates the offset from UTC for a given timezone 
 
    * 
 
    * @return integer 
 
    */ 
 
    function getTimeZoneOffset($timeZone) { 
 
    \t $dateTimeZoneUTC = new DateTimeZone("UTC"); 
 
    \t $dateTimeZoneCurrent = new DateTimeZone($timeZone); 
 
    \t $dateTimeUTC = new DateTime("now",$dateTimeZoneUTC); 
 
    \t $dateTimeCurrent = new DateTime("now",$dateTimeZoneCurrent); 
 
    \t $offset = (($dateTimeZoneCurrent->getOffset($dateTimeUTC))/60); 
 
    \t return $offset; 
 
    } 
 
    \t \t \t

+0

Wenn ich Sie richtig verstehe, müssen Sie etwas wie "Europa/Amsterdam" durch "/" aufteilen, um "Europa" und "Amsterdam" in 2 Variablen zu erhalten? –

+0

@JayS. Ja, genau. Wenn Sie ein Land auswählen, wird der Inhalt der Stadt eine andere Auswahloption mit der Zeitzone generieren oder laden. –

+0

@JayS. Ja, genau. Wenn Sie ein Land auswählen, wird der Inhalt der Stadt eine andere Auswahloption mit der Zeitzone generieren oder laden. –

Antwort

1

ich falsch verstanden Ihre Frage.

Sie müssen JavaScript verwenden, um Ihr Ziel zu erreichen. Nachdem Sie die Zeitzone an den Server gesendet haben, müssen Sie ein Array von Städten im JSON-Format codieren und es dem Client zurückgeben. Der Client erfasst dann diese Antwort und füllt ein anderes Auswahlfeld.

Ich würde empfehlen, jQuery AJAX zu verwenden.

+0

Vielen Dank für die Vorschläge –

+0

können Sie bitte ein Beispiel oder eine mögliche Referenz für dieses Projekt geben. :) –

+0

https://www.youtube.com/watch?v=fEYx8dQr_cQ. Dieses Video ist ein gutes Intro. Wenn er über die Verwendung von/api/orders spricht, würden Sie stattdessen eine eigene PHP-Datei verwenden, die ungefähr wie folgt aussieht: 'Offensichtlich ist das vereinfacht und Sie müssten den Code definieren, der die Städte mit der Zeitzone durch $ _POST erhält. Ich weiß, dass das auf den ersten Blick verwirrend klingen mag, aber nur Google-Dinge, und Sie werden es bekommen. Fühlen Sie sich frei, PM mich, wenn Sie irgendwelche Fragen haben, auf die Sie keine Antwort finden können. @SasukeScend –