0

重複の可能性:
ページの読み込み時にドロップダウン リストで既に選択されており、変更可能なオプション

ドロップダウンリストがあります:

<select name="province">
                <option value="Alberta">Alberta</option>
                <option value="British Columba">British Columba</option>
                <option value="Manitoba">Manitoba</option>
                <option value="New Brunswick">New Brunswick</option>
                <option value="Newfoundland">Newfoundland</option>
                <option value="N.W. Territories">N.W. Territories</option>
                <option value="Nova Scotia">Nova Scotia</option>
                <option value="Ontario">Ontario</option>
                <option value="Prince Edward Island">Prince Edward Island</option>
                <option value="Saskatchewan">Saskatchewan</option>
                <option value="Yukon Territory">Yukon Territory</option>
                <option value="Quebec">Quebec</option>
</select>

フォームは選択を MySQL データベースに送信します。プロフィールページです。ユーザーがこのプロファイル ページに戻って選択を変更すると、ユーザーの選択 (MySQL から取得されたもの) が選択済みとして表示されます。これを達成する方法はありますか?

すなわち。プロファイル ページを再度読み込むときは、データベースと照合し、フィールドを取得してリストと比較し、その値を選択済みとして選択します。

4

2 に答える 2

1

あなたは正しいロジックを手に入れました。

  <?php
        $province_array = array('Alberta', 'British Columba', ......, 'Quebec');

        echo '<select name="province">';
        //get the user's setting with user_id from DB. You should get this before this script.
        $sql = "SELECT user_province FROM the_table WHERE user_id=$user_id;";
        $query = mysql_query($sql, $the_connection) or die (mysql_error());
        if($row = mysql_fetch_assoc($query)) {
          $user_province = $row['user_province']; 
           foreach($province_array as $value) {
         if ($value == $user_province) { //if the province==the user's setting, make it default 
           echo '<option value="'.$value.'" selected="selected">'.$value.'</option>';
         } else { //else, echo it as regular
           echo '<option value="'.$value.'">'.$value.'</option>';
         }
       }
    }
    echo '</select>';
    ?>
  1. データベースへの接続を確立します。
  2. 異なるユーザーの州をデータベースから区別するために、「user_id」のようなものを取得できることを確認してください。
  3. それではサンプルです。
于 2012-09-28T20:46:01.833 に答える
0

これが私がすることです:

フォームが表示される前に変数を初期化します。

if ($_SERVER['REQUEST_METHOD'] == "POST") {  // if we're getting info from the form
    $defaultProvince = $_POST['province'];    // set the province to the selected pulldown
} else {
    $defaultProvince = "";                   // otherwise default to an empty string
}

$provinces = ("Alberta",                     // set up the provinces array
              "British Columbia",
              "Manitoba",
              "New Brunswick",
              ....
              );

次に、フォーム表示ルーチン内に次を追加します。

echo '<select name="province">\n';
foreach ($provinces as $province) {         // run through our array of provinces
    echo '   <option value="$province"';
    if ($province === $defaultProvince) {   // if the default province matches this particular array province
                                            // then we'll select it
         echo ' selected="selected"'        // xhtml 1.0 Strict/1.1 compliant
    }
    echo '>$province</option>\n';
}
echo '</select>\n';
于 2012-09-28T17:57:52.683 に答える