получить страну пользователя по ip и показать ее в верхней части выпадающего списка, но НЕ предварительно выбирать

У меня есть выпадающий список в моей форме, который предварительно выбирает страну пользователя на основе его / ее 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>

Я ценю, если кто-то может помочь мне исправить это.

Спасибо,

0

Решение

Вы можете создать свой 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;
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector