Получить страну пользователя по 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>

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

Спасибо,

1 ответ

Решение

Вы можете создать свой 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;
Другие вопросы по тегам