選択オプションの生成に使用される配列で指定された値の代わりに、データベースからフェッチされた値を使用できるように、この関数を変更するにはどうすればよいですか?
この関数を使用すると、選択要素のデフォルト値(または最も一般的に選択されるオプションに事前設定されている「デフォルト状態」)と、ユーザーがフォーム要素をクリックしてその値をアクティブに選択した場合(その値に設定したままにするという積極的な決定を行ったことを示します)。この関数は初期形式で正しく機能します。実際の例を含むフィドルをここに投稿しました:http://jsfiddle.net/chayacooper/JHAPp/4/
<script>
$('select').focus(function () {
var option = $(this).find("option[value*=default]");
option.attr('value', option.attr('value').replace(/_default/g, ''));
});
</script>
<select name="jeans">
<option value="$0">$0</option>
<option value="$50_default" selected="selected">$50</option>
<option value="$100">$100</option>
<option value="$150">$150</option>
</select>
ユーザーが自分の情報を確認および編集できるアカウントページで機能するように機能を調整するのに問題があります。関数の最初の使用では、オプションの値を手動で変更できます(つまり、に置き換えvalue="$50"
ますvalue="$50_default"
)が、アカウントページは以下のprintSelectOptions関数で$options配列を使用してdb情報に一致するオプションを事前に選択するための要素のオプション。以下の関数は、データベース内の情報に一致する値を事前に選択します(ユーザーが値を具体的に選択したかどうか、または値がまだ「デフォルト状態」であるかどうかに関係なく)。ただし、$options
変更されているかどうかに関係なく、「_default」文字列なしで値を送信している配列によって生成された正しいオプションを識別します。
これと連携して動作するようにjs関数を変更するには、ユーザーが要素に焦点を合わせていない場合に、値が「デフォルト状態」(「_default」を使用してデータベースからフェッチされた場合)にデフォルト値を送信するようにするにはどうすればよいですか? ' ストリング)?
<?php
try {
$stmt = $conn->prepare("SELECT * FROM price WHERE user_id = :user_id");
$stmt->bindValue(':user_id', $user_id);
$stmt->execute();
} catch(PDOException $e) {echo $e->getMessage();}
$row = $stmt->fetch();
$search_default = array('_default');
$replace_default = array('');
$row_default = str_replace($search_default, $replace_default, $row);
// This function selects the option matching the value in the db
function printSelectOptions($dataArray, $currentSelection) {
foreach ($dataArray as $key => $value) {
echo '<option ' . (($key == $currentSelection) ? 'selected="selected"' : '') . ' value="' . $key . '">' . $value . '</option>';
}
}
?>
<select name="jeans">
<?php
// Generates a <select> element with the options specified in this array
$options = array("Null"=>"", "$0"=>"$0", "$50"=>"$50", "$100"=>"$100", "$150"=>"$150");
$selected = $row_default['jeans'];
// Pre-selects the option matching the db information
echo printSelectOptions($options, $selected);
?>
</select>