[PHP-users 462] Re: 日付の入力について

新開連三 php-users@php.gr.jp
Mon, 2 Jul 2001 19:13:27 +0900


新開と申します。

重松さん
> 現状、年、月、日の 3 つのフィールドを設け、数値を入力するという、
> 原始的すぎる方法を使っています。
> この方法ですと、いうまでもないことですが、あり得ない日付はおろか、
> 数値以外の文字も入力できてしまいますし、いわゆる全角数字で入力する
> 人もでてくるかもしれません。
私の場合は、年、月、日のフィールドを分けずに、1つにしています。
# これも原始的ですが・・・。
DBを使えてPostgreSQLであれば、以下の感じでどうでしょう。
CREATE FUNCTION make_date(text)
    RETURNS date
    AS 'SELECT $1 :: date'
    LANGUAGE 'sql';

PHPのソースは省略。

あり得ない日付はエラーになり、正しい日付だとyyyy-mm-ddといった形式で
(PostgreSQLの環境による)戻ります。
入力は20010730といった形でも登録確認画面等で2001-07-30と表示して
ユーザに確認してもらってからDBに登録してます。
全角数字はPHPで半角数字に変換すればいいと思います。

> なるべく多くの環境で少ない手間で入力できるインターフェイスを考えて
> いるのですが、みなさんはどうされているのでしょうか?
PostgreSQLを使っているので、多くの環境で動作するかは分かりません。
# JavaScriptも多くの環境で動作するといえるのかな?
少ない手間で入力できてるとは思います。

引用中略
> それぞれサーバと通信して、次の画面に切り替える必要があるかとは思う
> のですが、HTML 単体でそういう制御は可能なのでしょうか?
> # JavaScript, フレームは使わないでという意味です。>HTML 単体
サーバと通信しても良いと認識して書きました
(でないとPHPの話題じゃない)。
自分の場合だと入力チェックはサーバサイドで行っています。
その方がセキュリティ面等で安全だと思っていますので。
# JavaScriptにかなり疎いというのもある
ユーザには不親切かもしれませんね(反応が遅いかもしれない)。