Webページにラジオボタンがあり、初期は2個でした。
<form method="POST" action="next.php"> <input type="radio" name="radio1" value="1">Aを希望 <input type="radio" name="radio1" value="2">Bを希望 </form>
「Bを希望」を選ばれた場合だけ処理したいときは、PHPで次のフォームを作成していた場合、
if ($_POST["radio1"] === "2") { // Bの処理 }
と書けば処理ができます。
この状態に対して選択肢が増えて、「Cを希望」を選ばれた場合だけ処理したいとなると、HTMLとPHPはそれぞれ以下のように直しがちです。
<form method="POST" action="next.php"> <input type="radio" name="radio1" value="1">Aを希望 <input type="radio" name="radio1" value="2">Bを希望 <input type="radio" name="radio1" value="3">Cを希望 </form>
単純に"2"を"3"に直しています。
if ($_POST["radio1"] === "3") { // Cの処理 }
これだけなら、直し忘れは無さそうですが、2つのソースコードを直すのが面倒に感じます。
また、他の箇所で「Cを希望」を選ばれた場合だけ処理したかった場合や、「Cを希望」以外を選ばれた場合だけ処理したかった場合、
photo credit: xmodulo Chat Box in Etherpad Lite via photopin (license)
特別な値にしてしまう
漏れなく対処できるようにするには、必ず特別な値を設定する方法が考えられます。valueの値を"99"などの値にしてしまい、次のフォームでは"99"の場合だけ処理するようにします。
<form method="POST" action="next.php"> <input type="radio" name="radio1" value="1"/>Aを希望 <input type="radio" name="radio1" value="2"/>Bを希望 <input type="radio" name="radio1" value="99"/>Cを希望 </form>
まず値が変わらなという前提で"99"としています。
if ($_POST["radio1"] === "99") { // Cの処理 }
値を定義してしまう
もう一つの方法として、値を定義してしまう方法が考えられます。共通で読み込むファイルに値を定義して、その値を利用して処理します。
<?php define("SPECIAL", "3"); ?>
定義した値をvalueに設定します。
<form method="POST" action="next.php"> <input type="radio" name="radio1" value="1">Aを希望 <input type="radio" name="radio1" value="2">Bを希望 <input type="radio" name="radio1" value="<?php echo SPECIAL;?>">Cを希望 </form>
判定する場合も定義した値との比較となります。
if ($_POST["radio1"] === SPECIAL) { // Cの処理 }
特別な値にしてしまうか、値を定義してしまうのか、どちらを選ぶかと考えると、値を定義していまう方を選びます。
値を定義したファイルにコメントで、なぜそのような値を定義したのかを書きます。
ソースコードを見て、定義された値を利用しているということは、なにか理由があったのだと気づきやすいとも考えています。