質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

241閲覧

[php5.3.3]checkdate関数での複数項目のチェック方法

DaisukeMori

総合スコア217

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2018/07/02 10:10

分からないこと

現在、checkdate関数を使って正しい日付チェックのバリデート処理を実装しようとしています。1項目だけなら、存在しない日付のチェックはかけられたのですが、
複数項目でのチェックがかからない状態です。

書き方をご教授お願い幸いです。

php

1$error = array(); 2 3// わざと正しくない日付を代入しています 4$date1 = '2018-02-30'; 5$date2 = '2018-07-32'; 6$date3 = '2018-13-01'; 7 8// このコードだと一番最後に書いたdate3にしかバリデートチェックがかからない 9if(!empty($date1)){list($Y, $m, $d) = explode('-', $date1);} 10if(!empty($date2)){list($Y, $m, $d) = explode('-', $date2);} 11if(!empty($date3)){list($Y, $m, $d) = explode('-', $date3);} 12 13// checkdate関数でバリデート処理 14if (checkdate($m, $d, $Y)==false) { 15$error[] = '存在しない日付です'; 16} 17 18// エラー文書き出し 19foreach ($error as $value) { 20echo $value; 21}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

配列でループ処理するとか

PHP

1$error =[]; 2$dates = ['2018-02-30','2018-07-32','2018-13-01','2018-07-02']; 3foreach($dates as $date){ 4 if(!empty($date)){ 5 list($Y, $m, $d) = explode('-', $date); 6 if (checkdate($m, $d, $Y)==false) { 7 $error[] = '存在しない'; 8 }else{ 9 $error[] = '存在する'; 10 } 11 } 12} 13print_r($error);

投稿2018/07/02 10:26

編集2018/07/02 10:27
yambejp

総合スコア114583

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

DaisukeMori

2018/07/02 10:47

無事この方法で複数項目のバリデーションを実装できました。
guest

0

list($Y, $m, $d) でそれぞれの値を上書きしているので最後の値しか使えない状態ですね。
日付文字列を渡したら分割してcheckdateをかける関数でも作ってみては。

投稿2018/07/02 10:14

kei344

総合スコア69366

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

DaisukeMori

2018/07/02 10:49

関数を作れるようにならないといけないのですが、 ひとまず今回の要件は「配列でループ処理する」で実装に至ったので、 別のコメントをベストアンサーにさせて頂きました。 すみません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問