2009-07-24 14 views
0

私はこの国の国のドロップダウンフォームを選択するために私が使用するこの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> 
+0

を取得する必要がありますが、あなただけの最初の動的「選択」の値を追加することができます静的コンテンツ(ファイル、キャッシュ、配列など)からすべてをロードします。その結果、リストの最初の値は常に「選択された」現在の値になります。選択した値は静的コンテンツ内の他の場所にも存在するため、選択した値が複製されます。 – Zachary

+0

興味深い考え – JasonDavis

答えて

2

どのようにこのような何かについては?

<? 
$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は:、私はこれをテストしていないが、あなたはこれが以下の回答の一部のようにエレガントではないという考え

+0

awsome私はこれを試してみよう!パフォーマンスの横のDB呼び出しを取り除きたいもう一つの理由は、米国のカナダとイギリスをすべての国の上のリストのトップに表示して大多数のユーザーのための簡単な選択をしたいのですが、その中で – JasonDavis

+0

私はこれを試してみましたが、データをフォームに取り込むことができません。配列があまりよくないので、仕事に迷うことになります。 – JasonDavis

+0

配列に表示される順序は、ドロップダウンリストに表示されるので、配列を宣言するときに配列の値を並べ替える必要があります。そして私はすでに私が投稿したものを間違って見ています。私のforeach文$ countyは$ countriesでなければなりません。私はウェブサーバーにアクセスできない、または私はそれをテストするだろう。 –

1
のためにダウン国の量をstrunk持っています

できます:

  • var_export()を使用して国の配列をPHPコードとして出力し、それをどこかにハードコードします。
  • Pear Cache_Liteのようなものを使用してデータベースから値をキャッシュします。これは使用するのが非常に簡単で、データベース内の値を変更する場合は、キャッシュファイルを削除して再生成するだけです。

上記の両方のオプションを使用すると、htmlを生成するために現在行っているのと同様の方法でループすることができます。

1

静的なHTMLをバッファリングして、選択した値の単純な文字列置換を実行できます。

1)変数にcountries.htmlを読んで、負荷時)countries.html

2への国のHTMLリストを保存して、文字列の操作を行い置き換えます

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

ない非常にメモリ効率の全体的な、しかし、それはありませんデータベースのヒットと処理時間を節約できます。

+0

なぜ出力バッファリングが必要ですか? file_get_contents()は何も出力しません。 –

+0

ハァー、もちろんそうです。私は自分のコードフラグメントを混ぜていた!私はそれを修正します。 – zombat

関連する問題