[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 メーリングリストの案内