2009-07-24 37 views
0

我有这个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> 
+0

这并不像一些下面的答案一样优雅,但你可能只是先添加动态“中选择”值,然后从静态内容(文件,缓存,数组等等)加载所有内容。结果是您列表中的第一个值始终是“选定”的当前值。该选项将复制选定的值,因为选定的值也将在静态内容中的其他位置...再次,只是另一个选项。 – Zachary 2009-07-24 19:30:08

+0

有趣的想法 – JasonDavis 2009-07-24 21:29:00

回答

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

您可以:

  • 使用var_export()打印作为PHP代码的国家数组,然后在某处硬编码。
  • 使用像Pear Cache_Lite这样的缓存数据库中的值 - 这非常简单易用,这意味着如果修改数据库中的值,您只需删除缓存文件以重新生成缓存文件即可。

有了上述两个选项,你就可以得到一个数组,你可以通过类似的方式循环数组来生成html。

1

您可以缓冲静态HTML并为选定值做一个简单的字符串替换。

1)为国家节约HTML列表分为countries.html

2)在加载时,读countries.html到一个变量,做一个字符串替换:

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

不是很记忆效率的整体,但它确实保存数据库命中和处理时间。

+0

为什么你需要输出缓冲? file_get_contents()不应该输出任何东西 – 2009-07-24 23:58:39

相关问题