PHPでGET/POSTでフォームから値を受け取る(その2)

(1/1)
PHP で GET/POST でフォームから送信された値を受け取る」では、HTML の FORM の TEXT から入力した値を取り出す方法を解説した。今回は、RADIO や SELECT で入力した値を含めて取り出す方法を解説する。

(2021 年 2 月 17 日)PHP8 対応,リファラチェック追加

サンプル・プログラム

解説:配列を準備

0037: //radio配列
0038: $ItemRadio = array('日本語'=>1, '英語'=>2, '中国語'=>3);
0039: 
0040: //select配列
0041: $ItemSelect = array('--選択--'=>0, '睦月'=>1, '如月'=>2, '弥生'=>3, '卯月'=>4, '皐月'=>5, '水無月'=>6, '文月'=>7, '葉月'=>8, '長月'=>9, '神無月'=>10, '霜月'=>11, '師走'=>12);

FORM で RADIO を表示するための配列を $ItemRadio に用意する。
配列の要素は画面に表示するキーを、値は VALUE に設定するデータである。

同様に、SELECT を表示するための配列を $ItemSelect に用意する。

解説:パラメータを取り出す

0128: /**
0129:  * 指定したパラメータを取り出す
0130:  * @param string $key  パラメータ名(省略不可)
0131:  * @param bool   $auto TRUE=自動コード変換あり/FALSE=なし(省略時:TRUE)
0132:  * @param mixed  $def  初期値(省略時:空文字)
0133:  * @return string パラメータ/NULL=パラメータ無し
0134: */
0135: function getParam($key$auto=TRUE$def='') {
0136:     if (isset($_GET[$key]))         $param = $_GET[$key];
0137:     else if (isset($_POST[$key]))   $param = $_POST[$key];
0138:     else                            $param = $def;
0139:     if ($auto)  $param = mb_convert_encoding($paramINTERNAL_ENCODING, 'auto');
0140:     return $param;
0141: }

ユーザー関数 getParam は「PHP で GET/POST でフォームから送信された値を受け取る」で作った者と同じである。

0117: /**
0118:  * 指定したボタンが押されてきたかどうか
0119:  * @param string $btn  ボタン名
0120:  * @return bool TRUE=押された/FALSE=押されていない
0121: */
0122: function isButton($btn) {
0123:     if (isset($_GET[$btn]))     return TRUE;
0124:     if (isset($_POST[$btn]))    return TRUE;
0125:     return FALSE;
0126: }

0143: /**
0144:  * radioを作成する
0145:  * @param string $name   radioのNAMEおよびID
0146:  * @param array  $items  radio用配列
0147:  * @param bool   $def    選択されているradioの値/NULL:無選択
0148:  * @return string HTMLコンテンツ
0149: */
0150: function makeRadio($name$items$def) {
0151:     $html = '';
0152:     foreach ($items as $key=>$val) {
0153:         $checked = ($val == $def) ? ' checked' : '';
0154: $html .=<<< EOT
0155: <input type="radio" id="{$name}" name="{$name}" value="{$val}"{$checked} />{$key} 
0156: 
0157: EOT;
0158:     }
0159: 
0160:     return $html;
0161: }

0163: /**
0164:  * selectを作成する
0165:  * @param string $name   selectのNAMEおよびID
0166:  * @param array  $items  select用配列
0167:  * @param bool   $def    選択されているselectの値/NULL:無選択
0168:  * @return string HTMLコンテンツ
0169: */
0170: function makeSelect($name$items$def) {
0171: $html =<<< EOT
0172: <select id="{$name}" name="{$name}">
0173: 
0174: EOT;
0175:     foreach ($items as $key=>$val) {
0176:         $checked = ($val == $def) ? ' selected' : '';
0177: $html .=<<< EOT
0178: <option value="{$val}"{$checked}>{$key}</option>
0179: 
0180: EOT;
0181:     }
0182: $html .=<<< EOT
0183: </select>
0184: 
0185: EOT;
0186: 
0187:     return $html;
0188: }

これ以外に、指定したボタンが押されてきたかどうかを調べるユーザー関数 isButton、FORM の RADIO を作成するユーザー関数 makeRadio、FORM の SELECT を作成するユーザー関数 makeSelect を用意した。
RADIO と SELECT については、入力された値を保持するようにしてある。

参考サイト

(この項おわり)
header