我的表单中有一个下拉列表,可以根据用户的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;