cómo elegir un elemento de formulario desplegable de selección país sin necesidad de utilizar la base de datos?

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

  •  19-09-2019
  •  | 
  •  

Pregunta

Tengo este código PHP que utilizo para hacer una selección formulario desplegable del país del Me gustaría eliminar esta consulta MySQL adicional y aunque acaba de almacenar el resultado como en el código de la página Sin embargo, estoy perdido en la forma que tendría el país a los usuarios seleccionar si yo no uso la consulta para obtener los datos Por favor consejo

<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 esto en la página salidas, tengo Strunk la cantidad de países abajo 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>
¿Fue útil?

Solución

¿Qué tal algo como esto?

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

EDIT: no he probado esto, pero usted debe conseguir la idea

Otros consejos

Se podría:

  • imprimir una gran variedad de países como código PHP utilizando var_export (), y luego codificar que en algún lugar.
  • Caché los valores de la base de datos usando algo como pera Cache_Lite - esto es muy sencillo usar y esto significa que si modifica los valores en la base de datos, todo lo que tiene que hacer es borrar el archivo de caché para que se lo regenerada.

Con ambas las opciones anteriores, a continuación, tiene una matriz, que puede recorrer más de una manera similar a lo que está haciendo ahora con el fin de generar el HTML.

Se podría amortiguar el HTML estático y hacer una cadena simple para reemplazar el valor seleccionado.

1) Guardar la lista de HTML país en countries.html

2) En el tiempo de carga, leer countries.html en una variable y hacer una cadena reemplazar:

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

No es muy eficiente de la memoria en general, pero lo hace ahorrar el tiempo base de datos de golpear y procesamiento.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top