重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

最近PHPの勉強を始めた初心者です。
はじめて質問させていただきます。

2005-1-1から2020-12-31の間で入力した日付の曜日を表示するプログラムを作成しています。

2005-1-1から2020-12-31の間以外ならエラー表示するようにしたいのですが、
入力した日付との比較がうまくいかず、思うように動きません。
どのように直せばいいのかを教えていただけないでしょうか?よろしくお願いします。

<?php

$year=$_POST["year"];
$month=$_POST["month"];
$day=$_POST["day"];

$date_str="$year-$month-$day";
$date_time=strtotime($date_str);

$firstdate_str="2005-1-1";
$firstdate_time=strtotime($firstdate_str);

$lastdate_str="2020-12-31";
$lastdate_time=strtotime($lastdate_str);

if ($date_time < $firstdate_time || $date_time> $lastdate_time)
 {
 echo "Please enter a date between 1/1/2005 and 12/31/2020.";
 }
else
 {
 $finddate=date('l', mktime(0,0,0,$month, $day, $year));
 echo "The day entered in on $finddate";
 }
?>

A 回答 (2件)

どのような動きをするのでしょうか?


試してみたところ、syntax errorが返ってきましたが、うまくいかないとはこのことを言っているのでしょうか?
実際試したときの動きを書いてほしいです。
syntaxを直して実行しましたら、うまくいきましたよ。
    • good
    • 0

不具合の状況をもう少し詳しく書いてほしいな。



POSTのデータがちゃんと取得できてるのは確認済みですか?確認済みということにして、質問のスクリプトをCLI版で動くようにちょっとだけ変更した(CLIにしたのはうちの都合なので気にしないでください)。
 $year="2004"; //3行目
 $month="12"; //4行目
 $day="31"; //5行目

このスクリプトを実行するとエラー。
 $ php -f date-error.php
 
 Parse error: syntax error, unexpected '{' in /home/hoge/date-error.php on line 17

不具合はこれかな?そうだとするとインデントに全角スペースを使ってるのが原因。投稿のために入れたのかもしれないけど、実際のスクリプトにも使用してるなら、半角スペースにすれば直る。

それ以外は問題ないように思う。別のエラーなら具体的に補足してください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!