如何在不使用数据库的情况下选择国家/地区下拉选择表单项?

时间:2009-07-24 19:07:45

标签: php country

我有这个PHP代码,我用它来制作国家/地区的下拉表格 我想消除这个额外的mysql查询,只是将输出存储在页面上的代码中 但是我迷失了如何让用户国家选择如果我不使用查询来获取数据 请建议

<select name="country"  style="width:180px;" onChange="do_get_rest_popup(this.value)" o>
<?PHP
$sql="SELECT * FROM  users_countries  ORDER BY country";
$result_country = executequery($sql);   
while($line_country = mysql_fetch_array($result_country)){
   $db_country_id = $line_country['id']; 
   $country_name = $line_country['country'];
?>
<option value="<?=$db_country_id?>"<? if($line_member['country']==$db_country_id){ echo " SELECTED";} ?>><?=$country_name?></option>
<?
}
?>
</select>

关于在页面上输出的代码,我已经为这篇文章减少了国家数量

<select name="country"  style="width:180px;" onChange="do_get_rest_popup(this.value)" o> 
<option value="217">Turkmenistan</option> 
<option value="218">Turks and Caicos Islands</option> 
<option value="219">Tuvalu</option> 
<option value="220">Uganda</option> 
<option value="221">Ukraine</option> 
<option value="222">United Arab Emirates</option> 
<option value="223">United Kingdom (Great Britain)</option> 
<option value="224" SELECTED>United States</option> 
</select>

3 个答案:

答案 0 :(得分:2)

这样的事情怎么样?

<?
$countries = array(
"217" => "Turkenistan",
"218" => "Turks and Caicos Islands",
"219" => "Tuvalu",
"220" => "Uganda",
"221" => "Ukraine",
"222" => "United Arab Emirates",
"223" => "United Kingdom (Great Britain)"
"224" => "United States");
?>

<select name="country" style="width:180px;" onChange="do_get_rest_popup(this.value)" /> 
<?php
$countryCounter = 1;
$amtOfCountries = count($countries);
foreach ($country as $id => $c) {
    if ($countryCounter == $amtOfCountries) { 
    echo "<option value=\"$id\" SELECTED>$c</option>";
    } 
    else {
    echo "<option value=\"$id\">$c</option>";
    $countryCounter++;
        }
}
?>
</select>

编辑:我没有对此进行测试,但你应该明白这个想法

答案 1 :(得分:1)

你可以:

  • 使用var_export()将一组国家/地区打印为PHP代码,然后在某处硬编码。
  • 使用Pear Cache_Lite之类的东西来缓存数据库中的值 - 这非常简单易用,这意味着如果修改数据库中的值,您只需删除缓存文件即可再生。

使用上述两个选项,您将拥有一个数组,您可以以与现在正在执行的操作类似的方式循环,以生成html。

答案 2 :(得分:1)

您可以缓冲静态html并为所选值执行简单的字符串替换。

1)将国家/地区HTML列表保存到countries.html

2)在加载时,将countries.html读入变量并执行字符串替换:

$countries = file_get_contents('countries.html');    
echo str_replace('value="'.$userCountry.'"','value="'.$userCountry.'" SELECTED',$countries);

总体来说内存效率不高,但确实可以节省数据库命中和处理时间。