[PHP-users 25746] Html_Quick_Form チェックボックスの確認 画面について

T.H php_user_th @ yahoo.co.jp
2005年 6月 7日 (火) 09:39:58 JST


お世話になります。T.Hと申します。

PHP初心者でとてもつまらない質問でしたらすいません。

「まるごとPHP vol.1」を購入して、Html_Quick_FormとHTML_Quick_Form

ControllerとSmartyを利用してみたのですが、チェックボックスやセレクトボックス

の確認画面で、チェックした項目のみ取り出し表示させる方法が分からなくつまづ

いています。ご教授頂ければ光栄です。

1.システムの画面遷移は以下の方法です。

----------------------------------------------------------------------------
---------

(入力フォームの書き込み→入力情報の確認→完了)

----------------------------------------------------------------------------
---------

2.ソースは以下の通りです。

----------------------------------------------------------------------------
---------

class Page_Account_Credentials extends HTML_QuickForm_Page{

    function buildForm(){

        $this->_formBuilt = true;

        $this->addElement("header", "title", "テストフォーム");

        $this->addForms();

        $submit[] =& $this->createElement( "submit", $this->getButtonName(
"next"), "確認画面へ");

        $submit[] =& $this->createElement("reset",null,"リセット");
        $this->addGroup( $submit, "submit", "", " ", "", FALSE);
        $this->setDefaultAction('next');

   }//end of buildForm()


   // フォームの生成
   function addForms(){

        //ニックネーム
        $this->addElement("text","nick_name","ニックネーム:
",array('size'=>40));

        //性別
        $sex[] =& $this->createElement( "radio",NULL,NULL, "男性", "1");
        $sex[] =& $this->createElement( "radio",NULL,NULL, "女性", "2");
        $this->addGroup( $sex, "sex", "性別:");

        //好きな観光地
        $ck[] = $this->createElement('checkbox','ck_01',null,'東京');
        $ck[] = $this->createElement('checkbox','ck_02',null,'名古屋');
        $ck[] = $this->createElement('checkbox','ck_03',null,'京都');
        $ck[] = $this->createElement('checkbox','ck_04',null,'大阪');
        $ck[] = $this->createElement('checkbox','ck_05',null,'広島');
        $ck[] = $this->createElement('checkbox','ck_06',null,'福岡');

        $this->addGroup($ck,"ck_answer","好きな観光地は?:","");


        //全要素にtrimフィルターを適用
        $this->applyFilter('__ALL__','trim');

        //空文字チェック
        $this->addRule( "nick_name", "ニックネームを入力して下さい。",
"required",NULL,"client");


        $this->addRule( "sex", "性別が選択されていません",
"required",NULL,"client");
        $this->addRule( "ck_answer", "好きな観光地は少なくとも一つは選択して
下さい", "required",NULL,"client");

        //内容チェック
        $this->addRule( "nick_name", "ニックネームは全角で10文字までです。",
"maxlength", 20, "client");

    }//end of addForms()

}//end of class


class Page_Confirm_Information extends Page_Account_Credentials{

   function buildForm()
   {


    $this->_formBuilt = true;


//$this->setDefaults($_SESSION['_regWizard_container']['values']['page1']);
//setDefaultsメソッドだと、書き直すと更新されない?

$this->setConstants($_SESSION['_regWizard_container']['values']['page1']);
//setConstantsメソッドだと、更新される


    //フォームの生成
    $this->addForms();

    $prevnext[] =& $this->createElement('submit',
$this->getButtonName('next'), '投稿');
    $prevnext[] =& $this->createElement('submit',
$this->getButtonName('back'), 'やり直す');
    $this->addGroup($prevnext, 'buttons','', ' ', false);
    $this->setDefaultAction('process');

    $this->freeze();

   }
}

〜以下、smartyを利用し出力〜

----------------------------------------------------------------------------
--------

3.確認画面での出力については、以下の通りです。

<現在の出力>

ニックネーム:○○○○

性別:()男性(x)女性

好きな観光地:[x]東京[]名古屋[x]京都[]大阪[]広島[]九州

<出力したいフォーマット>

ニックネーム:○○○○

性別:女性

好きな観光地:東京 京都

----------------------------------------------------------------------------
--------

では、ご教授頂けると幸いです

__________________________________
Save the earth
http://pr.mail.yahoo.co.jp/ondanka/



PHP-users メーリングリストの案内