kazpgmの日記

『プログラム自動作成@自動生成』作成の日記

TOOL更新_AppHtmlUtil.php(HTMLSelect文字列、Radio文字列、CheckBox文字列作成クラス)

TOOL更新_これからAppHtmlUtil.php(HTMLSelect文字列、Radio文字列、CheckBox文字列作成クラス)はこのページを更新していく。

<?php
//  =============================================================
//  2010 kaz PHP自動作成お助けTOOL.(http://kazpgm.ddo.jp/) Start
//  修正BSDライセンス。
//  =============================================================
class AppHtmlUtil
{

    /**
     * 指定されたコードのHTMLSelect文字列を作成する。
     * <p>
     * @param  emts    コード配列
     * @param  indata 入力値(サニタイズ済みの値を指定する)
     * @param  name  name
     * @param  dflt  "▼選択してください"を設定する。設定しない場合""を指定する。
     * @param  elementsIdx  0(日本語),1(英語)を指定する。
     * @return HTMLOption文字
     */    
    function getHTMLSelect($emts, $indata, $name, $dflt, $elementsIdx = '0') {
        $result = "<select name=\"" . $name . "\" id=\"" . $name .  "\" ";
        $result .= " >\n";
        if ($dflt != '') {
            $result .= "<option value=\"\">" . htmlspecialchars($dflt)  . "</option>\n";
        }
        foreach ($emts  as $key => $val) {
            $selected = ((String)$indata == htmlspecialchars((String)$key) ? "selected" : "");
            $result .= "<option value='" .  htmlspecialchars($key) . "' " . $selected . ">" . htmlspecialchars($val[$elementsIdx]) . "</option>\n";
        }
        $result .= "</select>\n";
        return $result;
    }
        
    /**
     * 指定されたコードのHTMLRadio文字列を作成する。
     * <p>
     * @param  emts    コード名称
     * @param  indata 入力値(サニタイズ済みの値を指定する)
     * @param  name  name
     * @param  dflt  "指定なし"を設定する。設定しない場合""を指定する。
     * @param  elementsIdx  0(日本語),1(英語)を指定する。
     * @param  su  1行のITEM数
     * @param  addItemNm  コード名の先頭にこの項目名を付加する
     * @return HTMLRadio文字
     */    
    function getHTMLRadio($emts, $indata, $name, $dflt, $elementsIdx = '0', $su = 1, $addItemNm = '') {
        $indata = ($indata==null?"":$indata);
        $result = "";
        $i = 0;
        foreach ($emts  as $key => $val) {
            $i++;
            $checked = ((String)$indata ==  htmlspecialchars((String)$key) ? "checked" : "");
            $result .= "<input type=\"radio\" name=\"" . $name .  "\"  value=\"" .  htmlspecialchars($key) . "\" id=\"" . "radio_" . $name . $i . "\" " . $checked . " />\n";
            $result .= "<label for=\"" .  "radio_" . $name . $i . "\">" . $addItemNm . ($addItemNm =='' ? '':'を') .  htmlspecialchars($val[$elementsIdx]) . "</label>" . ((($i % $su) == 0) ? "<br>" : "") ."\n";
        }
        if ($dflt != '') {
            $checked = ((String)$indata == ""?"checked":"");
            $result .= "<input type=\"radio\" name=\"" . $name .  "\"  value=\"\" id=\"" . "radio_" . $name . "\" " . $checked . " />\n";
            $result .= "<label for=\"" .  "radio_" . $name . "\">" .  htmlspecialchars($dflt) . "</label>\n";
        }
        return $result;
    }
        
    /**
     * 指定されたコードのHTMLCheckBox文字列を作成する。
     * <p>
     * @param  emts    コード名称
     * @param  indata 入力値(サニタイズ済みの値を指定する)
     * @param  name  name
     * @param  elementsIdx  0(日本語),1(英語)を指定する。
     * @param  su  1行のITEM数
     * @return HTMLCheckBox文字
     */    
    function getHTMLCheckBox($emts, $indata, $name, $elementsIdx = '0', $su = 5) {
        $indata = ($indata==null?"":$indata);

        $result = "";
        $i = 0;
        foreach ($emts  as $key => $val) {
            $i++;
            if(is_array($indata)) { // 配列
                $checked = ($indata[ htmlspecialchars((String)$key)]<>"" ? "checked" : "");
            } else {
                $checked = ((String)$indata ==  htmlspecialchars((String)$key) ? "checked" : "");
            }

            $result .= "<input type=\"checkbox\" name=\"" . $name .  "\"  value=\"" .  htmlspecialchars($key) . "\" id=\"" . "check_" . $name . $i . "\" " . $checked . " />\n";
            $result .= "<label for=\"" .  "check_" . $name . $i . "\">" .  htmlspecialchars($val[$elementsIdx]) . "</label>" . ((($i % $su) == 0) ? "<br>" : "") ."\n";
        }
        return $result;
    }
        
    /**
     * 指定されたコードのHTMLCheckBoxの文字列のみを作成する。
     * <p>
     * @param  emts    コード名称
     * @param  indata 入力値(サニタイズ済みの値を指定する)
     * @param  elementsIdx  0(日本語),1(英語)を指定する。
     * @return HTMLCheckBoxの文字列のみ
     */    
    function getHTMLCheckBoxDispStr($emts, $indata, $elementsIdx = '0') {
        $indata = ($indata==null?"":$indata);

        $result = "";
        $i = 0;
        foreach ($emts  as $key => $val) {
            $i++;
            if(is_array($indata)) { // 配列
                if ($indata[ htmlspecialchars((String)$key)]<>"") {
                    if ($elementsIdx == '0') {
                        $result .=  htmlspecialchars($val[$elementsIdx]) . "、";
                    } else {
                        $result .=  htmlspecialchars($val[$elementsIdx]) . ", ";
                    }
                }
            } else {
                if ($indata ==  htmlspecialchars($key)) {
                    if ($elementsIdx == '0') {
                        $result .=  htmlspecialchars($val[$elementsIdx]) . "、";
                    } else {
                        $result .=  htmlspecialchars($val[$elementsIdx]) . ", ";
                    }
                }
            }
        }
        if ($result == "") {
            if ($elementsIdx == '0') {
                $result = "全て";
            } else {
                $result = "AllSelected";
            }
        } else {
            if ($elementsIdx == '0') {
                $result = mb_substr($result,0, mb_strlen($result) - mb_strlen("、"));
            } else {
                $result = mb_substr($result,0, mb_strlen($result) - mb_strlen(", "));
            }
        }
        return $result;
    }

}
//  =============================================================
//  2010 kaz PHP自動作成お助けTOOL.(http://kazpgm.ddo.jp/) End
//  修正BSDライセンス。
//  =============================================================

 ■サイト:http://kazpgm.ddo.jp/

3/24 23:00-02:00 今日も昨日のつづき。プログラム配置に沿った修正をやっている。これも載せていなかったので今日載せた。いろいろな人がこれらの作成メソッドを作っている。でも自分で作成した物が一番使いい。そう、気に入っている。
6/10 20:40-21:00 AppHtmlUtilを使用するとき、@param indata 入力値はサニタイズ済みの値を指定することにした。画面出力もサニタイズすることにした。