comment choisir un menu déroulant élément de formulaire de sélection de pays sans utiliser la base de données?

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

  •  19-09-2019
  •  | 
  •  

Question

J'ai ce code PHP que j'utilise pour faire une forme de menu déroulant de sélection du pays Je voudrais éliminer cette requête supplémentaire mysql bien et juste stocker la sortie comme dans le code à la page Cependant, je suis perdu sur la façon dont j'aurais le pays utilisateurs SÉLECTIONNÉ Si je ne pas utiliser la requête pour obtenir les données S'il vous plaît conseiller

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

Code en matière de sorties cette page, j'ai Strunk la quantité de pays vers le bas pour ce poste

<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>
Était-ce utile?

La solution

Que diriez-vous quelque chose comme ça?

<?
$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: Je n'ai pas testé cela, mais vous devriez avoir l'idée

Autres conseils

Vous pouvez:

  • imprimer un tableau de pays comme le code PHP en utilisant var_export (), et alors que quelque part coder en dur.
  • Cache les valeurs de la base de données en utilisant quelque chose comme poire Cache_Lite - ce qui est très simple à utiliser et cela signifie que si vous modifiez les valeurs dans la base de données, tout ce que vous devez faire est de supprimer le fichier cache de l'avoir régénéré.

Avec les deux options ci-dessus, vous avez alors un tableau que vous pouvez passer en boucle d'une manière similaire à ce que vous faites maintenant afin de générer le code HTML.

Vous pouvez tamponner le html statique et faire une simple chaîne pour remplacer la valeur sélectionnée.

1) Enregistrer la liste HTML pays dans countries.html

2) Au moment de la charge, lisez countries.html dans une variable et faire une chaîne remplacer:

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

Pas très efficace de la mémoire globale, mais il fait enregistrer la base de données et appuyez sur le temps de traitement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top