我有这个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 :(得分: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)
你可以:
使用上述两个选项,您将拥有一个数组,您可以以与现在正在执行的操作类似的方式循环,以生成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);
总体来说内存效率不高,但确实可以节省数据库命中和处理时间。