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


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

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

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

よろしくお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/05/01 23:18:15
  • 終了:2007/05/08 23:20:03

回答(2件)

id:esecua No.1

esecua回答回数510ベストアンサー獲得回数102007/05/02 05:05:43

ポイント35pt

ライブラリなどを使用しなくとも、素直に簡単に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

id:vencqr109

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

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

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

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

2007/05/02 11:24:23
id:Sampo No.2

Sampo回答回数556ベストアンサー獲得回数1042007/05/02 20:19:26

ポイント35pt

大まかな方針として、出力する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

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません