0

ユーザー プロファイルの編集ページがあります。1 つのオプションは '国' で、すべての国が php ファイルにリストされています (国はデータベースからロードされません)。ユーザー編集プロファイル ページで、現在保存されているオプション値をリストから選択できるようにしたいと考えています。

私はこれを行うことができます:

<option value="Afghanistan" <?php if ($results['country'] == 'Afghanistan') echo 'selected';?> >Afghanistan</option>
<option value="Albania" <?php if ($results['country'] == 'Albania') echo 'selected';?> >Albania</option>
<option value="Algeria" <?php if ($results['country'] == 'Algeria') echo 'selected';?> >Algeria</option>
<option value="American Samoa" <?php if ($results['country'] == 'American Samoa') echo 'selected';?> >American Samoa</option>
 // The rest of the countries here :(..

すべての国をデータベースに入れずにこれを行うためのより良い(よりクリーンな)方法はありますか?

4

3 に答える 3

2

$countriesループを使用して配列を反復しforeach、オプションを生成し、国の値と照合して選択したものを見つけます。

例:

$countries = array("Afghanistan", "Albania", "Algeria", "American Samoa");

foreach ($countries as $country) {
    echo "<option value='$country'";
    if ($country == $results["country"]) {
        echo " selected";
    }
    echo ">$country</option>\n";
}

出力 ( の場合$results["country"] = "Albania"):

<option value='Afghanistan'>Afghanistan</option>
<option value='Albania' selected>Albania</option>
<option value='Algeria'>Algeria</option>
<option value='American Samoa'>American Samoa</option>
于 2012-08-26T19:31:24.090 に答える
2

あなたが何を望んでいるのか理解できたら、foreachループを使用することをお勧めします。

$countries = array(
    "Afghanistan",
    "Albania",
    "Algeria",
    "American Samoa"
    // ...
);

foreach($countries as $country) {
    echo '<option value="'.$country.'"';
    if($country == $results['country']) {
        echo ' selected="selected"';
    }
    echo '>'.$country.'</option>';
}
于 2012-08-26T19:33:29.583 に答える
0

国をDBに保存できない場合は、他の回答に加えて、テキストファイルに保存することを検討してください。それらを読み込んで繰り返します。これにより、コードを変更せずに新しい国を簡単に追加できるようになります。ちょっとした考え。

于 2012-08-26T20:27:12.247 に答える