[PHP-users 29020] Re: HTML_QuickForm での日付の大小チェック
石井 栄徳
ishii @ seedplanning.co.jp
2006年 4月 19日 (水) 12:26:58 JST
石井です。
HTML_QuickFormの標準ルールで対応しきれないと判断したものは、
registerRuleで独自関数(独自ルール)を作って対応しています。
以下のテストコードは生年チェック(年のみ)なので、複数POST値の比較
の場合は参考にはならないかもしれませんが、独自関数内で$_POSTに直接
アクセスすれば可能だと思います。(もっとスマートなやりかたがありそ
うですが…)
ご参考まで。
$form =& new HTML_QuickForm('member', 'post');
$form->addElement('text', 'birth_year', '生年', array('class'=>'birth_year'));
$form->registerRule('checkBirthYear', 'callback', 'qf_rule_checkBirthYear');
$form->addRule('birth_year', '正しい生年を指定してください','checkBirthYear', null);
function qf_rule_checkBirthYear($year)
{
$min = 1900;
$max = (int)date('Y') - 24; // 24歳以上なら入力可能
return ($min<=$year && $year<=$max);
}
On Wed, 19 Apr 2006 11:32:36 +0900
Yamada Kenichi <yamada_ken1232 @ yahoo.co.jp> wrote:
> みなさん、こんにちは。
>
> 開始日≦終了日チェックって、よくあると思うのですが、
> 以下のテストコードが思うように機能してくれません。
>
>
> <HTML>
> <HEAD>
> <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
> <TITLE>compareの確認</TITLE>
> </HEAD>
> <?php
> // http://localhost/comptest.php
>
> require_once "HTML/QuickForm.php";
>
> $title = "compareの確認";
> $btntitle = "compareの確認";
>
> // フォーム表示
> $form = new HTML_QuickForm('frm', 'post');
> $form->addElement('header', 'Header1', $title);
>
> $form->addElement('text', 'USER_NAME','ユーザー名');
> $form->addElement('date', 'CDATE', '日付1');
> $form->addElement('date', 'CDATE2', '日付2');
> $form->addElement('submit', 'btnSubmit', $btntitle);
>
> // 必須項目設定
> $form->addRule('USER_NAME', '入力が必要です', 'required');
> $form->addRule('CDATE', '入力が必要です', 'required');
> $form->addRule(array('CDATE', 'CDATE2'),
> "日付1<=日付2で入力してください。",
> 'compare', '<=', 'server');
> // 必須項目メッセージ設定
> $form->setRequiredNote ('<font color=red>*</font>必須項目です');
>
> $form->validate();
> $form->display();
> ////////////////////////////////////////////////////////////////////////
> ?>
> </HTML>
>
> dateでなく、textならうまく機能します。
> また、dateのときも '<=' の代わりに '==' なら機能します。
>
> これは「仕様」と思ってあきらめるしかないのでしょうか?
> 「仕様」だとすると、うまい回避方法はないでしょうか?
>
> ---------------------------------------
> 山田健一
> _______________________________________________
> PHP-users mailing list PHP-users @ php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3
------------------------------------------------------------
石井 栄徳
ishii @ seedplanning.co.jp
PHP-users メーリングリストの案内