DB連動のラジオボタンを作成する

ラジオボタンやチェックボックスなどのセレクトタイプのフォーム部品の初期値をDBから取得

checkedやselectedなどのoption要素はインラインで判定するのがおすすめ

CakePHPのみでなくPHP全体のエントリー。

セレクト型のフォーム部品には以下のものがある。

  • ラジオボタン
  • チェックボックス
  • セレクトボックス

これらのフォーム部品は、複数の選択可能な要素から構成することができて、その中で標準(選択済み)の値を設定することができる。具体的には以下のように設定する。

ラジオボタンとチェックボックスでは、

checked

を指定することで選択済みの値を設定することができる。

<input type="radio" value="1" checked>On
<input type="radio" value="0">Off
<input type="checkbox" value="0">option0
<input type="checkbox" value="1" checked>option1

セレクトボックスでは、

selected

オプションを指定することで現在の値を明示することが可能。

<select>
<option value="0" selected>option0</option>
<option value="1">option1</option>
<option value="2">option2</option>
</select>

上の状態で、ユーザーが別の選択肢を選んでsubmitすると、データベースの値が変更することになる。DBの値が変更したのであれば、上で設定されている選択済みのオプションもDBの値と同期させたほうがより良いといえる。

ユーザーが変更した値で選択済みのオプションを画面遷移先でダイレクトに変更するためには、

  • 事前にデータベースの値を取得した上で
  • 選択済みoption要素をインラインで判定

する方法がある。ラジオボタンの場合の具体例をあげてみる。

// $currentには0か1が返される
if( $current = get_current_option_from_db( $param ) )
{
	$on = $current;
}

else
{
	$off = $current;
}

選択肢の名称に関連した変数を事前に用意しておき、phpで以下のようにインラインで判定する。

<input type="radio" name="dynamic_radio" value="1" <?php echo (isset($on) === false ? '' : 'checked') ?>>On
<input type="radio" name="dynamic_radio" value="0" <?php echo (isset($off) === false ? '' : 'checked') ?>>Off

上の例はラジオボタンを例にしているが、チェックボックスやセレクトボックスに応用可能。

Webエンジニアブログにコメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

DB連動のラジオボタンを作成するの記事にコメントを投稿