У меня есть выпадающий список в моей форме, который предварительно выбирает страну пользователя на основе его / ее IP-адреса, и он отлично работает.
Проблема: Этот вопрос в выпадающем списке является обязательным для заполнения, поэтому, если пользователь не ответил на него, он не сможет перейти на следующую страницу. Моя проблема в том, что, поскольку он предварительно выбран в списке, даже если пользователь не выбрал его, он может перейти на следующую страницу.
Что мне нужно: Хотелось бы узнать, можно ли получить страну пользователя по IP, но НЕ предварительно выбрать это, и просто показать это в верхней части списка например, перед опцией «Оставить пустым» (чтобы пользователь мог ее легко увидеть).
Это мой код:
<label> Where were you born?<span>*</span></label>
<div class="fieldset content">
<select name="q5[]" multiple="multiple" width="200px" size="10px">
<?php
require 'vendor/autoload.php';
$gi = geoip_open('/usr/local/share/GeoIP/GeoIP.dat', GEOIP_STANDARD);
$ip = $_SERVER['REMOTE_ADDR'];
$preselect_country = geoip_country_name_by_addr($gi, $ip);
include('newCountry.php');
while ($line = mysql_fetch_array($result)) {
if($preselect_country == $line['country']){
$selected = "selected";
}else{
$selected = "";
}
echo "<option value=\"{$line['country']}\" {$selected}>{$line['country']}</option>\n";
}
geoip_close($gi);
?>
</select>
</div>
Я ценю, если кто-то может помочь мне исправить это.
Спасибо,
Вы можете создать свой select
иметь пустое первое значение и указать страну в качестве второй опции в списке. Другие страны могут пойти ниже этого. Чтобы настроить это с помощью вашего PHP-скрипта, вы можете создать две строки: одну для верхней части списка (с пустым параметром и страной пользователя), а другую для остальной части списка:
$list_top = "<option>Choose one...</option>\n";
$list_bottom = "";
while ($line = mysql_fetch_array($result)) {
if($preselect_country == $line['country']){
$list_top .= "<option value=\"{$line['country']}\">{$line['country']}</option>\n";
}else{
$list_bottom .= "<option value=\"{$line['country']}\">{$line['country']}</option>\n";
}
}
echo $list_top . $list_bottom;
Других решений пока нет …