Ошибка PHP, Foreach () и HTML POST - PullRequest
       7

Ошибка PHP, Foreach () и HTML POST

0 голосов
/ 14 марта 2011

'У меня есть две страницы.на первой странице есть поле выбора, в котором есть все названия множества стран, когда пользователь щелкает страну и нажимает кнопку отправки, он переходит на вторую страницу, где расположен соответствующий флаг.Тем не менее, это не работает, когда я не вижу, что не так.Я потратил много времени на это и раздражаю меня, так что если кто-то может помочь, это было бы хорошо.

1-я страница:

<?php
echo "<form action='test2.php' method='post'>
";
echo '<br>Actual Region: <img src="flags/png/' . $country . '.png">';
$countries = array( 
'   af  '   =>' Afghanistan '   ,
'   al  '   =>' Albania '   ,
'   dz  '   =>' Algeria '   ,
'   as  '   =>' American Samoa  '   ,
'   ad  '   =>' Andorra '   ,
'   ao  '   =>' Angola  '   ,
'   ai  '   =>' Anguilla    '   ,
'   aq  '   =>' Antarctica  '   ,
'   ag  '   =>' Antigua and Barbuda '   ,
'   ar  '   =>' Argentina   '   ,
'   am  '   =>' Armenia '   ,
'   aw  '   =>' Aruba   '   ,
'   au  '   =>' Australia   '   ,
'   at  '   =>' Austria '   ,
'   az  '   =>' Azerbaijan  '   ,
'   bs  '   =>' Bahamas '   ,
'   bh  '   =>' Bahrain '   ,
'   bd  '   =>' Bangladesh  '   ,
'   bb  '   =>' Barbados    '   ,
'   by  '   =>' Belarus '   ,
'   be  '   =>' Belgium '   ,
'   bz  '   =>' Belize  '   ,
'   bj  '   =>' Benin   '   ,
'   bm  '   =>' Bermuda '   ,
'   bt  '   =>' Bhutan  '   ,
'   bo  '   =>' Bolivia '   ,
'   ba  '   =>' Bosnia-Herzegovina  '   ,
'   bw  '   =>' Botswana    '   ,
'   bv  '   =>' Bouvet Island   '   ,
'   br  '   =>' Brazil  '   ,
'   io  '   =>' British Indian Ocean Territory  '   ,
'   bn  '   =>' Brunei Darussalam   '   ,
'   bg  '   =>' Bulgaria    '   ,
'   bf  '   =>' Burkina Faso    '   ,
'   bi  '   =>' Burundi '   ,
'   kh  '   =>' Cambodia    '   ,
'   cm  '   =>' Cameroon    '   ,
'   ca  '   =>' Canada  '   ,
'   cv  '   =>' Cape Verde  '   ,
'   ky  '   =>' Cayman Islands  '   ,
'   cf  '   =>' Central African Republic    '   ,
'   td  '   =>' Chad    '   ,
'   cl  '   =>' Chile   '   ,
'   cn  '   =>' China   '   ,
'   cx  '   =>' Christmas Island    '   ,
'   cc  '   =>' Cocos (Keeling) Islands '   ,
'   co  '   =>' Colombia    '   ,
'   km  '   =>' Comoros '   ,
'   cg  '   =>' Congo   '   ,
'   cd  '   =>' Congo, Dem. Republic    '   ,
'   ck  '   =>' Cook Islands    '   ,
'   cr  '   =>' Costa Rica  '   ,
'   hr  '   =>' Croatia '   ,
'   cu  '   =>' Cuba    '   ,
'   cy  '   =>' Cyprus  '   ,
'   cz  '   =>' Czech Rep.  '   ,
'   dk  '   =>' Denmark '   ,
'   dj  '   =>' Djibouti    '   ,
'   dm  '   =>' Dominica    '   ,
'   do  '   =>' Dominican Republic  '   ,
'   ec  '   =>' Ecuador '   ,
'   eg  '   =>' Egypt   '   ,
'   sv  '   =>' El Salvador '   ,
'   gq  '   =>' Equatorial Guinea   '   ,
'   er  '   =>' Eritrea '   ,
'   ee  '   =>' Estonia '   ,
'   et  '   =>' Ethiopia    '   ,
'   eu.int  '   =>' European Union  '   ,
'   fk  '   =>' Falkland Islands    '   ,
'   fo  '   =>' Faroe Islands   '   ,
'   fj  '   =>' Fiji    '   ,
'   fi  '   =>' Finland '   ,
'   fr  '   =>' France  '   ,
'   gf  '   =>' French Guiana   '   ,
'   tf  '   =>' French Southern Territories '   ,
'   ga  '   =>' Gabon   '   ,
'   gm  '   =>' Gambia  '   ,
'   ge  '   =>' Georgia '   ,
'   de  '   =>' Germany '   ,
'   gh  '   =>' Ghana   '   ,
'   gi  '   =>' Gibraltar   '   ,
'   gb  '   =>' Great Britain   '   ,
'   gr  '   =>' Greece  '   ,
'   gl  '   =>' Greenland   '   ,
'   gd  '   =>' Grenada '   ,
'   gp  '   =>' Guadeloupe (French) '   ,
'   gu  '   =>' Guam (USA)  '   ,
'   gt  '   =>' Guatemala   '   ,
'   gg  '   =>' Guernsey    '   ,
'   gn  '   =>' Guinea  '   ,
'   gw  '   =>' Guinea Bissau   '   ,
'   gy  '   =>' Guyana  '   ,
'   ht  '   =>' Haiti   '   ,
'   hm  '   =>' Heard Island and McDonald Islands   '   ,
'   hn  '   =>' Honduras    '   ,
'   hk  '   =>' Hong Kong   '   ,
'   hu  '   =>' Hungary '   ,
'   is  '   =>' Iceland '   ,
'   in  '   =>' India   '   ,
'   id  '   =>' Indonesia   '   ,
'   ir  '   =>' Iran    '   ,
'   iq  '   =>' Iraq    '   ,
'   ie  '   =>' Ireland '   ,
'   im  '   =>' Isle of Man '   ,
'   il  '   =>' Israel  '   ,
'   it  '   =>' Italy   '   ,
'   ci  '   =>' Ivory Coast '   ,
'   jm  '   =>' Jamaica '   ,
'   jp  '   =>' Japan   '   ,
'   je  '   =>' Jersey  '   ,
'   jo  '   =>' Jordan  '   ,
'   kz  '   =>' Kazakhstan  '   ,
'   ke  '   =>' Kenya   '   ,
'   ki  '   =>' Kiribati    '   ,
'   kp  '   =>' Korea-North '   ,
'   kr  '   =>' Korea-South '   ,
'   kw  '   =>' Kuwait  '   ,
'   kg  '   =>' Kyrgyzstan  '   ,
'   la  '   =>' Laos    '   ,
'   lv  '   =>' Latvia  '   ,
'   lb  '   =>' Lebanon '   ,
'   ls  '   =>' Lesotho '   ,
'   lr  '   =>' Liberia '   ,
'   ly  '   =>' Libya   '   ,
'   li  '   =>' Liechtenstein   '   ,
'   lt  '   =>' Lithuania   '   ,
'   lu  '   =>' Luxembourg  '   ,
'   mo  '   =>' Macau   '   ,
'   mk  '   =>' Macedonia   '   ,
'   mg  '   =>' Madagascar  '   ,
'   mw  '   =>' Malawi  '   ,
'   my  '   =>' Malaysia    '   ,
'   mv  '   =>' Maldives    '   ,
'   ml  '   =>' Mali    '   ,
'   mt  '   =>' Malta   '   ,
'   mh  '   =>' Marshall Islands    '   ,
'   mq  '   =>' Martinique (French) '   ,
'   mr  '   =>' Mauritania  '   ,
'   mu  '   =>' Mauritius   '   ,
'   yt  '   =>' Mayotte '   ,
'   mx  '   =>' Mexico  '   ,
'   fm  '   =>' Micronesia  '   ,
'   md  '   =>' Moldova '   ,
'   mc  '   =>' Monaco  '   ,
'   mn  '   =>' Mongolia    '   ,
'   me  '   =>' Montenegro  '   ,
'   ms  '   =>' Montserrat  '   ,
'   ma  '   =>' Morocco '   ,
'   mz  '   =>' Mozambique  '   ,
'   mm  '   =>' Myanmar '   ,
'   na  '   =>' Namibia '   ,
'   nr  '   =>' Nauru   '   ,
'   np  '   =>' Nepal   '   ,
'   nl  '   =>' Netherlands '   ,
'   an  '   =>' Netherlands Antilles    '   ,
'   nc  '   =>' New Caledonia (French)  '   ,
'   nz  '   =>' New Zealand '   ,
'   ni  '   =>' Nicaragua   '   ,
'   ne  '   =>' Niger   '   ,
'   ng  '   =>' Nigeria '   ,
'   nu  '   =>' Niue    '   ,
'   nf  '   =>' Norfolk Island  '   ,
'   mp  '   =>' Northern Mariana Islands    '   ,
'   no  '   =>' Norway  '   ,
'   om  '   =>' Oman    '   ,
'   pk  '   =>' Pakistan    '   ,
'   pw  '   =>' Palau   '   ,
'   pa  '   =>' Panama  '   ,
'   pg  '   =>' Papua New Guinea    '   ,
'   py  '   =>' Paraguay    '   ,
'   pe  '   =>' Peru    '   ,
'   ph  '   =>' Philippines '   ,
'   pn  '   =>' Pitcairn Island '   ,
'   pl  '   =>' Poland  '   ,
'   pf  '   =>' Polynesia (French)  '   ,
'   pt  '   =>' Portugal    '   ,
'   pr  '   =>' Puerto Rico '   ,
'   qa  '   =>' Qatar   '   ,
'   re  '   =>' Reunion (French)    '   ,
'   ro  '   =>' Romania '   ,
'   ru  '   =>' Russia  '   ,
'   rw  '   =>' Rwanda  '   ,
'   sh  '   =>' Saint Helena    '   ,
'   kn  '   =>' Saint Kitts & Nevis Anguilla    '   ,
'   lc  '   =>' Saint Lucia '   ,
'   pm  '   =>' Saint Pierre and Miquelon   '   ,
'   vc  '   =>' Saint Vincent & Grenadines  '   ,
'   ws  '   =>' Samoa   '   ,
'   sm  '   =>' San Marino  '   ,
'   st  '   =>' Sao Tome and Principe   '   ,
'   sa  '   =>' Saudi Arabia    '   ,
'   sn  '   =>' Senegal '   ,
'   rs  '   =>' Serbia  '   ,
'   sc  '   =>' Seychelles  '   ,
'   sl  '   =>' Sierra Leone    '   ,
'   sg  '   =>' Singapore   '   ,
'   sk  '   =>' Slovakia    '   ,
'   si  '   =>' Slovenia    '   ,
'   sb  '   =>' Solomon Islands '   ,
'   so  '   =>' Somalia '   ,
'   za  '   =>' South Africa    '   ,
'   gs  '   =>' South Georgia & South Sandwich Islands  '   ,
'   es  '   =>' Spain   '   ,
'   lk  '   =>' Sri Lanka   '   ,
'   sd  '   =>' Sudan   '   ,
'   sr  '   =>' Suriname    '   ,
'   sj  '   =>' Svalbard and Jan Mayen Islands  '   ,
'   sz  '   =>' Swaziland   '   ,
'   se  '   =>' Sweden  '   ,
'   ch  '   =>' Switzerland '   ,
'   sy  '   =>' Syria   '   ,
'   tw  '   =>' Taiwan  '   ,
'   tj  '   =>' Tajikistan  '   ,
'   tz  '   =>' Tanzania    '   ,
'   th  '   =>' Thailand    '   ,
'   tg  '   =>' Togo    '   ,
'   tk  '   =>' Tokelau '   ,
'   to  '   =>' Tonga   '   ,
'   tt  '   =>' Trinidad and Tobago '   ,
'   tn  '   =>' Tunisia '   ,
'   tr  '   =>' Turkey  '   ,
'   tm  '   =>' Turkmenistan    '   ,
'   tc  '   =>' Turks and Caicos Islands    '   ,
'   tv  '   =>' Tuvalu  '   ,
'   uk  '   =>' U.K.    '   ,
'   ug  '   =>' Uganda  '   ,
'   ua  '   =>' Ukraine '   ,
'   ae  '   =>' United Arab Emirates    '   ,
'   uy  '   =>' Uruguay '   ,
'   us  '   =>' USA '   ,
'   um  '   =>' USA Minor Outlying Islands  '   ,
'   uz  '   =>' Uzbekistan  '   ,
'   vu  '   =>' Vanuatu '   ,
'   va  '   =>' Vatican '   ,
'   ve  '   =>' Venezuela   '   ,
'   vn  '   =>' Vietnam '   ,
'   vg  '   =>' Virgin Islands (British)    '   ,
'   vi  '   =>' Virgin Islands (USA)    '   ,
'   wf  '   =>' Wallis and Futuna Islands   '   ,
'   eh  '   =>' Western Sahara  '   ,
'   ye  '   =>' Yemen   '   ,
'   zm  '   =>' Zambia  '   ,
'   zw  '   =>' Zimbabwe    '   );

echo "<br>Chosen Region: <select>";
foreach ($countries as $key => $value) {
echo "<option name=" . $key . ">" . $value . "</option>";
}
echo "</select><input type='submit' value='send' name='send' />
</form>";
?>

2-я страница:

<?php
$country = $_POST[$key];

echo "<img src='flags/png/' . $country . '.png'>";
?>

ОБНОВЛЕНИЕ: Я хочу связать страну с соответствующим кодом страны (который является ее ключом в массиве $ стран), потому что имена изображений являются кодами стран.поэтому, когда нажимается страна и отправляется щелчок, он принимает ключ (код страны), который помещает его в

Ответы [ 5 ]

5 голосов
/ 14 марта 2011

Вы должны прикрепить имя к тегу выбора вместо опции, чтобы получить его во втором php:

echo "<br>Chosen Region: <select name='country'>";
foreach ($countries as $key => $value) {
echo "<option value=" . $key . ">" . $value . "</option>";
}
echo "</select><input type='submit' value='send' name='send' />
</form>";

2-я страница

$country = $_POST['country'];
echo "<img src='flags/png/".$country.".png'>";
1 голос
/ 14 марта 2011

Я вижу следующие проблемы:

  • У вашего <select> нет имени, что может быть проблемой на второй странице, чтобы легко определить, что вы отправляете через него..

  • На второй странице я не вижу, откуда вы берете переменную $key для получения флага.

Предложения:

  • Добавьте имя, чтобы можно было использовать вашу переменную сообщения, например, $_POST['nameOfSelect'], которая будет содержать идентификатор выбранной страны.Наряду с добавлением атрибута «value» к вашим тегам <option>.

  • Приведенное выше предложение исправит проблему с переменной $key, просто сделайте то же самое, что и в вашемтекущую вторую страницу $country = $_POST['nameOfSelect'], и это должно решить проблему.

Надеюсь, я был достаточно ясен и что это предложение поможет вам:)

ОБНОВЛЕНИЕ: Добавление кответ, конкретно ссылаясь на ваше обновление, да, добавление атрибута «значение» решит вашу проблему:

    echo "<br>Chosen Region: <select name='country'>";

    foreach ($countries as $key => $value) {
        echo "<option value=" . $key . ">" . $value . "</option>";
    }

Этот код приведет к $_POST['country'], содержащему именно тот код, который вам нужен, что позволит вам использоватьназвание изображения, как это:

$country = $_POST['country'];

echo "<img src='flags/png/' . $country . '.png'>";
1 голос
/ 14 марта 2011

В вашем коде отсутствует открывающий тег <select>.
Вы должны использовать его атрибут name в качестве ключа для доступа к массиву $_POST для получения выбранного значения.

Ваш HTML должен выглядетьэто:

<select name="country">
<?php
echo "<br>Chosen Region: <select>";
foreach ($countries as $key => $value) {
echo "<option value=" . $key . ">" . $value . "</option>";
}
</select>
?>

и файл php:

<?php
$country = $_POST['country'];
?>
0 голосов
/ 14 марта 2011

вам не хватает атрибута имени для вашего поля выбора.,Затем на второй странице выполните $ _POST ["страны"].Кроме того, ваши параметры должны иметь атрибут value, а не name.

0 голосов
/ 14 марта 2011

У вашего <select> отсутствует атрибут имени:

<select name='country'>
  ..options..
</select>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...