0

我有这个 PHP 代码,我用它来选择国家/地区的下拉表单我想消除这个额外的 mysql 查询,只是将输出像代码一样存储到页面上但是我不知道如何拥有用户国家SELECTED 如果我不使用查询获取数据请指教

<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>
4

3 回答 3

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>

编辑:我没有对此进行测试,但您应该明白

于 2009-07-24T19:32:10.977 回答
1

你可以:

  • 使用 var_export() 将国家/地区数组打印为 PHP 代码,然后在某处对其进行硬编码。
  • 使用Pear Cache_Lite之类的东西缓存数据库中的值- 这使用起来非常简单,这意味着如果您修改数据库中的值,您所要做的就是删除缓存文件以使其重新生成。

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

于 2009-07-24T19:13:13.247 回答
1

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

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

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

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

总体而言内存效率不是很高,但它确实节省了数据库命中和处理时间。

于 2009-07-24T19:18:59.350 回答