PHP & JavaScript Room :: 設置サンプル

実行結果

ソース

<?
/* [関数名] make_sel_opts
 * [機 能] ファイルから連想配列を生成し、プルダウンを生成
 * [説 明] カンマ区切りのCSVファイルから連想配列を生成し、
 *     その連想配列のキーを1グループとしてoptgroupタグで括る。
 *     そのキーの値である配列の値をoptionのtextとして生成した
 *     プルダウンのHTML文を返す。optionのvalueには'0'からの連番を振る。
 * [引 数]
 * @param string $filename CSVファイル名
 * @param string $selected デフォルトで選択するインデックス番号(デフォルトは'0')
 * @param string $funcChk OnChangeイベントなどを記述(デフォルトは'')
 * [返り値]
 * @return string $htm 生成されたHTML文
 *     エラーの場合はFALSEを返す
*/

function fmake_sel_opts($filename$selected=0$funcChk="") {
    //初期化
    $idx=0;
    $htm="";
    $listData=Array();

    //ファイルの存在確認
    if (!@file_exists($filename)) return false;
    //ファイルからリストデータを配列に読み込む
    $fp=@fopen($filename"r");
    while (!@feof($fp)) {
        $dat=@fgetcsv($fpfilesize($filename), ",");
        if(!$dat[0]) continue;
        $listData[$dat[0]][]=$dat[1];
    }
    @fclose($fp);

    if (!@is_array($listData)) return false;
    $htm="<select ".$funcChk.">\n";
    foreach ($listData as $k1=>$v1) {
        if (@is_array($v1) && $v1[0]!="") {
            /* グループ化 */
            $htm.="<optgroup label='".$k1."'>\n";
            foreach($v1 as $v2){
                $htm.="<option value='".$idx."'".(($idx==$selected) ? " selected" "")." style='margin-left:1em;'>".$v2."</option>\n";
                $idx++;
            }
            $htm.="</optgroup>\n";
        }else{
            $htm.="<option value='".$idx."'".(($idx==$selected) ? " selected" "").">".$k1."</option>\n";
            $idx++;
        }
    }
    $htm.="</select>\n";
    return $htm;
}
?>
<form>
<?
$filename="/module/include/dat/food.csv";
$selected="1";
$funcChk="onChange=\"alert(this.value + '=' + this[this.selectedIndex].text)\"";
echo fmake_sel_opts($filename$selected$funcChk);
?>
</form>

polarized women