Como escolher um item de formulário de seleção suspensa do país sem usar o banco de dados?
Pergunta
Eu tenho esse código PHP que eu uso para fazer uma seleção de formulários suspensos do país, gostaria de eliminar essa consulta MySQL extra e apenas armazenar a saída como no código na página, mas estou perdido sobre como eu teria o país dos usuários Selecionado se eu não usar a consulta para obter os dados, por favor, conselhos
<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>
Código sobre as saídas na página, eu reduzi a quantidade de países para este post
<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>
Solução
Que tal algo como isso?
<?
$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>
Editar: eu não testei isso, mas você deve ter a ideia
Outras dicas
Você poderia:
- Imprima uma matriz de países como código PHP usando var_export () e, em seguida, codifique isso em algum lugar.
- Cache os valores do banco de dados usando algo como Pêra cache_lite - Isso é muito simples de usar e significa que, se você modificar os valores no banco de dados, tudo o que você precisa fazer é excluir o arquivo de cache para regenerar.
Com as duas opções acima, você tem uma matriz que pode fazer uma maneira semelhante ao que está fazendo agora para gerar o HTML.
Você pode amortecer o HTML estático e fazer uma string simples substituir pelo valor selecionado.
1) Salvar a lista HTML do país em countries.html
2) No tempo de carregamento, leia countries.html
em uma variável e faça uma string substitua:
$countries = file_get_contents('countries.html');
echo str_replace('value="'.$userCountry.'"','value="'.$userCountry.'" SELECTED',$countries);
Não é muito eficiente em memória, mas salva o tempo de acertar e processamento do banco de dados.