人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPでFormタグを使用するときの質問です。

一度DBに入れたデータをもってきて、
そのデータを元にSELECTボックスを自動的に
選択させたり、CheckBoxを自動的にチェックさせて
おくような方法はないでしょうか?

コードをベタで書けばできるのは分かるのですが、
このようなことが簡単にできるようなライブラリを探しています。

PHPのバージョンは5.2.1を使用しています。

よろしくお願いします。


●質問者: vencqr109
●カテゴリ:コンピュータ インターネット
✍キーワード:dB PHP SELECT コード タグ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● esecua
●35ポイント

ライブラリなどを使用しなくとも、素直に簡単にif else を使えばいいのではないでしょうか?


チェックボックスの数にもよりますが、ひとつひとつチェックし表示してやればいいと思うのですが。

例えば

$s = "select * from tbl where name='h'";
....

if ($item == 1)
{
$out = '<input type="checkbox" name="" value="1" checked>';
$out .= '<input type="checkbox" name="" value="2">';
}
else {
$out = '<input type="checkbox" name="" value="1">';
$out .= '<input type="checkbox" name="" value="2" checked>';
}

echo $out;

間違っていたらごめんなさい。http://www.tagindex.com/html_tag/form/input_checkbox.html

◎質問者からの返答

回答ありがとうございます。

はい、if等で表示させればできるのはわかるのですが、かなり数が多いためコード量がとてつもなく長くなってしまいます。

特にSelectボックスは100くらいの選択肢があります。

そのようなことを簡単にできる方法はあるかな、と思っています。


2 ● Sampo
●35ポイント

大まかな方針として、出力するHTML文書を一個の文字列とし、これを書き換えることでチェックを付けたり入力値を埋め込んだりすることにしましょう。

名前が$name、値が$valであるようなチェックボックスやラジオボックスにチェックを入れるには、

$html = preg_replace(
 "/(<input type=(radio|checkbox) name='$name' value='$val')(.*?>)/i"
 , "$1 checked='checked' $3", $html );

と書けます。(かなり簡略にした正規表現ですが)

名前が$nameのセレクトボックスに値$valをセットするなら

$html = preg_replace(
 "/(<select name='$name'.*?<option value='$val')(.*?<\\/select>)/i"
 , "$1 selected='selected' $2", $html );

ですね。

ただ、これらの正規表現を自分ですべて書き下ろすのは不効率ですしバグの元。これを自動生成する関数を作ってしまうのです。

具体的には

$replace = array(
 "name" => html_special_chars($name)
 ,"age" => 0+ $age
 ,"sex" => $sex=="M" ? "M" : "F"
);

みたいにして作った連想配列を与えると、一気に正規表現でHTMLに埋め込んでくれる関数です。

一度作ってしまえば、今後も活躍し続けてくれることが確実なライブラリになりますよ。

http://end

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ