come scegliere un paese a discesa oggetto modulo di selezione senza utilizzare database?

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

  •  19-09-2019
  •  | 
  •  

Domanda

Ho questo codice PHP che uso per fare una selezione sotto forma di menu a discesa Paese del Vorrei eliminare questa query mysql in più e anche se solo memorizzare l'output come nel codice per sulla pagina Tuttavia mi sono perso su come avrei paese utenti selezionati Se io non uso la query per ottenere i dati Si prega di consulenza

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

Codice in materia di uscite questa pagina, ho Strunk la quantità di paesi verso il basso per questo 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>
È stato utile?

Soluzione

Che ne dite di qualcosa di simile?

<?
$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: non ho la prova questo, ma si dovrebbe ottenere l'idea

Altri suggerimenti

Si potrebbe:

  • stampare una serie di paesi come codice PHP utilizzando var_export (), e poi hardcode che da qualche parte.
  • Cache i valori dal database usando qualcosa come Pear Cache_Lite - questo è molto semplice da uso e significa che se si modificano i valori nel database, tutto ciò che dovete fare è eliminare il file di cache di averlo rigenerato.

Con entrambe le opzioni di cui sopra, allora avete un array che è possibile ciclare su in un modo simile a quello che si sta facendo ora, al fine di generare il codice HTML.

Si potrebbe tamponare l'HTML statico e fare una semplice stringa di sostituire per il valore selezionato.

1) Salvare l'elenco Paese HTML in countries.html

2) Al momento del caricamento, leggere countries.html in una variabile e fare una stringa di sostituzione:

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

Non è molto efficiente della memoria nel complesso, ma fa risparmiare il tempo database di colpire e di trasformazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top