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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

Q&A

解決済

2回答

5109閲覧

【php】DBに登録された日付と本日日付の比較

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

0グッド

1クリップ

投稿2015/11/03 03:43

環境:PHP5.4系/mysql

現在入力フォームを作成しており、入力された日付をデータベースに登録。
データベースを参照し、入力された日付をドロップダウンリストに挿入。
本日日付と入力された日付を比較して初期選択状態にしたいと考えています。

/* データベースから入力された日付を拾得 */
$sql2 = "SELECT DISTINCT ymd2 FROM coretime";
$stmt2 = $dbh->query($sql2);
$result2 = $stmt2->fetchAll(PDO::FETCH_ASSOC);

/* 本日日付の拾得 */
$today = getdate();

/* 値を比較してドロップダウンリストに表示 */

echo "日付選択:\n";
echo "<select name=todays>\n";
foreach ($result2 as $row2){
echo "<option value=". $row2['ymd2'];
if($today == $row2['ymd2']) echo " selected";
echo ">" . $row2['ymd2'];
echo "</option>\n";
echo "<br>\n";
}
echo "</select>\n";

色々試してみましたが、ソースを見る限りでは本日日付がうまく拾得出来ていないようです。
ご教授の程、よろしくお願い致します。

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

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

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

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

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

guest

回答2

0

ベストアンサー

php

1$today = getdate();

php

1$today = date('Y-m-d');

が手っ取り早いですね。

投稿2015/11/03 05:19

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2015/11/03 06:12

ありがとうございます。 ためして見ましたが、やはりダメでした。。。
退会済みユーザー

退会済みユーザー

2015/11/03 06:13

これでダメなら、ソースではなくてサーバー側の問題ですね。多分。
退会済みユーザー

退会済みユーザー

2015/11/03 06:33

入力フォームでは <input type="date" name="ymd2" value="YYYY-MM-DD" required> このように渡してますので、このvalueの値がおかしいということですかね。。。
退会済みユーザー

退会済みユーザー

2015/11/03 06:39 編集

いいえ違います。サーバー側の問題です。
退会済みユーザー

退会済みユーザー

2015/11/03 06:42 編集

<?php echo date('Y-m-d H:i:s'); ?> だけ記述されたファイルを作成して正しい値が返ってくるかを確認してください。
退会済みユーザー

退会済みユーザー

2015/11/03 10:10

2015-11-03 09:33:56と返ってきました。
退会済みユーザー

退会済みユーザー

2015/11/03 10:36 編集

いったい何時に実行した結果なんですか?あなたの回答をいつ読むかによって解釈変わってしまいますよ。 間違った値なら、 「何時得なければいけないのに、2015-11-03 09:33:56と返ってきた」という表現でないと意味通じないでしょう。 あなたがもしロンドン在住ならその値で間違ってはいないわけです。 つまりは、インターネットの世界では番校区共通の仕組みなので、ロケールという概念で時差を調整します。「日本の時間」が欲しいと表現しない限り、日本時間を返したりはしません。 date_default_timezone_set('Asia/Tokyo'); をスクリプトの先頭に記述してください。
退会済みユーザー

退会済みユーザー

2015/11/03 10:43

申し訳ないです。 今度は2015-11-03 10:06:59と表示されましたが、現在は2015-11-03 19:43なので、間違った値を取ってきていますね。。。
退会済みユーザー

退会済みユーザー

2015/11/03 10:49

それは、date_default_timezone_set('Asia/Tokyo'); を記述した結果ですか?それともdate('Y-m-d')のみの値ですか?
退会済みユーザー

退会済みユーザー

2015/11/03 10:54 編集

<html> <head> <title>test</title> </head> <body> <?php date_default_timezone_set("Asia/Tokyo"); echo date('Y-m-d H:i:s'); ?> </body> </html> こういった形ですね。
退会済みユーザー

退会済みユーザー

2015/11/03 11:03

おかしいですね… いったいどこのレンタルサーバーを使っているんでしょう?
退会済みユーザー

退会済みユーザー

2015/11/03 11:10

VagrantとVertualboxのローカル開発環境で動かしてます。
退会済みユーザー

退会済みユーザー

2015/11/03 11:22

ありがとうございます。 参照させて頂きましたが、どこに設定すればいいのかさっぱりわかりません。。
退会済みユーザー

退会済みユーザー

2015/11/03 11:30

確認してませんでしたね。 仮想環境上に乗せているOSの種類によって変わりますね。
退会済みユーザー

退会済みユーザー

2015/11/03 12:05

centosになります。
退会済みユーザー

退会済みユーザー

2015/11/03 12:16

じゃあ問題ないですね。 ターミナルを使って設定するだけですよ。
guest

0

ソースを見る限りでは本日日付がうまく拾得出来ていないようです

とは限りません。これは、実際に確認した事実でしょうか?それとも憶測でしょうか?

http://php.net/manual/ja/function.getdate.php
リファレンスをご確認ください。

getdate の返り値はリテラルではありません。連想配列です。

投稿2015/11/03 04:21

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2015/11/03 04:33

ご回答ありがとうございます。 if($today == $row2['ymd2']) echo " selected"; この部分の「==」を「=」に変えた所、全てにselectedが付いていました。 ということはif文が適用されておらず、$row2['ymd2']は出力出来ているので、$todayが取れていないのではないか?という憶測になります。 試しにprint_r($today)を書いてみたら、何も表示されませんでした。。 解決策があれば、ご教授願います。。
退会済みユーザー

退会済みユーザー

2015/11/03 05:01

> この部分の「==」を「=」に変えた所、全てにselectedが付いていました = がひとつだと代入ですから当たり前の結果ですよね…。 $row2['ymd2'] の結果を明記してください。
退会済みユーザー

退会済みユーザー

2015/11/03 05:18

初心者なもので、申し訳ないです…。 数行に渡るのでソースコードを1文抜粋しました。 よろしくお願い致します。 日付選択: <select name=todays> <option value=2015-10-17>2015-10-17</option> <br> </select>
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問