Как выбрать элемент формы выпадения в стране без использования базы данных?

StackOverflow https://stackoverflow.com/questions/1179566

  •  19-09-2019
  •  | 
  •  

Вопрос

У меня есть этот 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>
Это было полезно?

Решение

Как насчет чего -то подобного?

<?
$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>

РЕДАКТИРОВАТЬ: Я не проверял это, но вы должны получить идею

Другие советы

Ты мог:

  • Распечатайте массив стран в качестве кода PHP с помощью var_export (), а затем где -то это где -то.
  • Кэшировать значения из базы данных, используя что -то вроде Груша cache_lite - Это очень просто для использования, и это означает, что если вы изменяете значения в базе данных, все, что вам нужно сделать, это удалить файл кэша, чтобы он был восстановлен.

С обоими вышеупомянутыми параметрами у вас есть массив, который вы можете перевернуть аналогично тому, что вы делаете сейчас, чтобы генерировать HTML.

Вы можете буферировать статический HTML и выполнить простую замену строки для выбранного значения.

1) Сохранить список HTML страны в countries.html

2) во время загрузки читать countries.html в переменную и сделайте заменить строку:

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

Не очень эффективно память в целом, но она сохраняет время нажима и обработки базы данных.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top