2016-05-05 7 views
0

これはコードがドロップダウン/選択を使用して動作する方法です - 都市 - (タイムゾーン)私の問題は、都市と都市から時間帯を分離する方法です。別の国と都市PHPとHTMLを使用

ご親切にお手伝いください。

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

正しく理解していれば、 'Europe/Amsterdam'を'/'で分割して2つの変数で' Europe'と 'Amsterdam'を得る必要がありますか? –

+0

@ JayS。はい、まったくです。あなたが国を選択すると、都市のコンテンツが生成されるか、タイムゾーンで別の選択肢がロードされます。 –

+0

@ JayS。はい、まったくです。あなたが国を選択すると、都市のコンテンツが生成されるか、タイムゾーンで別の選択肢がロードされます。 –

答えて

1

私はあなたの質問を誤解。

目的を達成するにはjavascriptを使用する必要があります。サーバーにタイムゾーンを送信した後、都市の配列をJSON形式でエンコードし、それをクライアントにエコーする必要があります。クライアントはその応答を取得し、別の選択フィールドに値を設定します。

jQuery AJAXの使用をお勧めします。

+0

提案していただきありがとうございます –

+0

このプロジェクトの例または可能な参考資料をお知らせください。 :) –

+0

https://www.youtube.com/watch?v=fEYx8dQr_cQこのビデオは良いイントロです。彼が/ api/ordersを使うことについて話し合ったら、代わりに '<?php $ cities = getArrayOfCities($ _ POST ['timezone'])のように見えるあなた自身のPHPファイルを使うでしょう。 echo json_encode($ cities);?> '明らかに、それは単純化され、$ _POSTを通してタイムゾーンを与えられた都市を取得するコードを定義する必要があります。私はこれが最初に混乱するかもしれませんが、Googleのものだけを聞くかもしれないことを知っています、そして、あなたはそれを手に入れます。あなたが答えを見つけることができない質問があるなら、私にPMを自由に感じてください。 @SasukeScend –

関連する問題