MySQLデータベースを呼び出して日付表示をする方法について

このQ&Aのポイント
  • MySQLのデータベースから日付を取得して表示する方法について困っています。キーを元に呼び出して表示させたいのですが、うまくできません。
  • date関数を使用して日付の表示形式を指定しても、うまく表示されない問題があります。直接dateを使用するだけではなく、他の手順を踏む必要があるのでしょうか。
  • 試した3つの方法(date関数やキーの表示)については理解できますが、なぜ表示形式を指定すると01-01-1970が表示されるのか理解できません。何か他の解決策があるのでしょうか。
回答を見る
  • ベストアンサー

MySQLのデータベースを呼んで日付表示をする点で困っています。

MySQLのデータベースを呼んで日付表示をする点で困っています。 フィールド名:k_pvm 型:DATE データ:2009-12-21 phpでキーを元に呼び出して表示しています。表示形式は、d-m-Yで21-12-2009と表示させたいのですが、うまくできません。 echo "<tr><td>Rekisteri: </td><td><input type='hidden' name='kpv'>" . date('d-m-Y', $row['k_pvm']) . "</td></tr>"; 表示> 01-01-1970 以下、日付データ部分を変えて試してみました。 date($row['k_pvm']) > 2009-12-21 $row['k_pvm'] > 2009-12-21 date('d-m-Y') > 2009-12-22 (試した当日の日付) 試した3点については理解できますが、呼び出したデータに表示形式を指定するとどうして、01-01-1970を表示するのか解りません。直接dateで表示するのではなく、何か手順を踏まないといけないのでしょうか。

  • MySQL
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

$row['k_pvm']で出てくるのは結局文字列でしかないので date('d-m-Y', strtotime($row['k_pvm'])) 的な処理では?

pech00
質問者

お礼

ありがとうございます。 時間なしで日付だけなので、strtotime の説明を読んでいませんでした。 また一歩進めます。

関連するQ&A

  • 取り出した日付の表示

    phpにてDBに格納されている日付データを取り出した際にデフォルトで "2007-06-04"のように表示されてしまいますが、これを "07/06/04"や"07.06.04"のように表示するにはどうすればよいのでしょうか? MySQLのフィールドタイプはdateに設定しています。 print date(Y/m/d,"$row["日付フィールド"]");とやるとなぜか、 "1970/01/01"と表示されてしまいます。 普通に、print $row["日付フィールド"]");とやると 2007-06-04と出てしまいます。 どうぞ宜しくお願いします。

    • ベストアンサー
    • PHP
  • MySQL + PHP 同じテーブル内でのクエリについて

    PHP+MySQL勉強中の初心者です。 PHP+MySQL環境でのクエリについて、以下の条件でのクエリ結果を求めたいのですが、上手くできませんので、質問させてください。 MySQLのテーブルは以下のようになっています。 date        no   name ---------------------------- 2009-12-10   15   takada 2009-12-15   10   hirooka 2009-12-18   13   wakada 2010-01-10   15   takada 2010-01-11   13   wakada ----------------------------- 出力させたいクエリは、前月データを元にno列をKEYとした重複チェックです。 前月データを全件出力し、当月データに同じnoがあった場合、当月日付を 表示させたいと思っています。 (PHPで希望する出力結果) date       no   name     date2 ---------------------------------------- 2009-12-10  15   takada   2010-01-10 2009-12-15  10   hirooka 2009-12-18  13   wakada   2010-01-11 ----------------------------------------- 以下のようなソースでは、1行のみの出力結果しか表示されず、 whileの使い方に問題があると思うのですが、どのように解決すれば良いのかが解りません。 どうか、解決策をよろしくお願いいたします。 $mysql->query("SELECT * FROM xxxx where date LIKE '$y-$m%'"); while($row = $mysql->fetch()){ $date = $row["date"]; $no = $row["no"]; $name = $row["name"]; $mysql->query("SELECT * FROM xxxx where upddate LIKE '$y2-$m2%' and no = '$no'"); while($row = $mysql->fetch()){ $date2 = $row["date"]; echo <<<EOT <td>$date</td> <td>$no</td> <td>$name</td> <td>$date2</td><tr> EOT; } }

    • 締切済み
    • PHP
  • mysql内データ一覧表示

    for文を使用し、データ一覧を出しています。 ソースは for ($i = 0; $i < 10; $i ++) { if($row = mysql_fetch_array($result)) { $name1 = $row['name1']; $name2 = $row['name2']; $names .= '<tr>'."\n"; $names .= '<td>' .$name1. '</td>'."\n"; $names .= '<td>' .$name2. '</td>'."\n"; $names .= '</tr>'."\n"; } } echo $names; としています。 データベース内に内容10個あればもちろん10個表示されます。 例えば8個しか内容がない場合は8個表示されるのですが、残りの2個を空の<tr>~</tr>で埋めたいのですが、どのように記述したらよろしいでしょうか? 例は8個目までは <tr> <td>$name1の値</td> <td>$name2の値</td> </tr> 8個目以降は <tr> <td></td> <td></td> </tr> としたいです。 宜しくおねがいします。

    • ベストアンサー
    • PHP
  • 日付けによる表示分け

    いつも参考にさせていただいております。 MacOS 10.6  Safari 5.1 初歩的なことですが教えていただきたいのですが。 外部JavaScriptファイル内容(ファイル名 01.js) <!-- today = new Date(); y = today.getFullYear(); m = today.getMonth()+1; d = today.getDate(); // リンクA var ing_date = "20120224"; // 準備表示期間 var new_date = "20120311"; // 新規表示期間 // リンクB var j-ing_date = "20120301";    // 準備表示期間 var j-new_date = "20120401"; // 新規表示期間 のファイルを目次ページの中で、 目次ページ HTML 内容 <script language="JavaScript" src="java/01.js"> if ((y*10000+m*100+d) <= ing_date){ document.write("リンク-A"); document.write('<font color="#ff0000" size="2">&nbsp;制作中</font>'); } else if((y*10000+m*100+d) <= new_date){ document.write('<a href="../link/link-A.html" target="_top">リンク-A</a>'); document.write('&nbsp;<font color="#ff0000" size="2">&nbsp;新規</font>'); } //--> </script> </tr> <tr> <td valign="top" align="left" width="30">&nbsp;</td> <td height="20" align="left" valign="center"> <a href="../link/link-1.html" target="_top">リンク-1</a> </td> </tr> <tr> <td valign="top" align="left" width="30">&nbsp;</td> <td height="24" align="left" valign="center"> <a href="../link/link-2.html" target="_top">リンク-2</a> </td> </tr>     略・・・・・・・ として、新規リンクの表示をさせようとしているのですが、JavaScript部分が表示されません。 Safari上でエラーコンソールを見ても、エラー表示が出ません。 Scripyの書き方が間違っているのか?見当がつきません。 このような表示をさせるところが、4~5ヶ所あるので、日時をあわせたいと思って、このような試みをしました。 恐縮ですが、よろしくご教授ください。

  • 一行で表示させたい。

    質問は2つあります。 (1) <table border="1"> <td>日付</td> <td>曜日</td> <?php // 時間表示 while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) { $timeid = $row["timeid"]; $jikan = cnv_dispstr($row["jikan"]); ?> <td><?php echo $jikan ?></td> <?php } ?> </tr> <?php  $lastd = date("d", mktime(0, 0, 0, $mm + 1, 0, $yyyy)); for ($i = 1; $i <= $lastd; $i++) { $ts = mktime(0, 0, 0, $mm, $i, $yyyy); $ymd = date("Y/m/d", $ts); //予約者を表示してる $ymdstr = strftime("%Y年%m月%d日(%a)", $ts); ?> <td><?php echo $ymd ?></td> <?php //曜日表示 $aday = array("日", "月", "火", "水", "木", "金", "土"); $w = date("w", $ts); printf('<td style="color:%s;background-color:%s;"><span style = "font-size:15pt">%s</span></td>' ,$textcolor[$w],$backcolor[$w], $aday[$w]); ?> <?php// 時間ごとの予約表示 $res = mysql_query($sql, $conn) or die("データ抽出エラー"); while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) { $timeid = $row["timeid"]; $jikan = cnv_dispstr($row["jikan"]); $link = $_SERVER["PHP_SELF"]. "?hyouji=kousin&hiduke=".$ymd."&timeid=".$timeid; ?> <td><a href="<?php echo $link //予約者からリンクが外れる ?>"> <?php echo yoyakuchk($ymd,$timeid) ?></a></td> <?php } ?> </tr> <?php } ?> </table> を実行すると 9:00|9:30|10:00|.... 12/1 ○  ○  ○ 12/2鈴木  ○  ○ 12/3 ○ 山田 ○ と実行されます。 これを今日の日付だけを表示させたいのでうがうまくいかずに困っています。 (2)カレンダーの日付をクリックしたら、(1)の一行で表示している予約できる画面を表示させたいのこっちもうまくいかずに困っています。 例えば、 カレンダーで12月1日をクリックしたら、 9:00|9:30|10:00|.... 12/1 ○  ○  ○ が表示できるようにしたいです。 いい方法がありましたら、よろしくお願いします。

    • 締切済み
    • PHP
  • DB(mysql)のデータをviewに反映

    以前に投稿して回答を頂いた物に少し手を加えました。 前回は、入力した値を直接htmlファイルに表示させる仕様にしていましたが今回は一旦、DB側に登録して同じ日付のデータを全件表示させるという仕様に変えました。DB(mysql)側に登録しデータを取ってくるのは出来たのですが一件のみの取得表示になります。出来れば入力ずみの同じ日付けのデータを全件取得しデータが入っている所だけ表示したいのですが下記のソースでは、最新のデータしか表示されません。文字数の関係上、開始時間だけ取るようなソースコード記載しています。 (補足)laravelを使用 foreach($e_all as $e_time); $e_allで順に入ったデータを$e_timeに入れて $e_time->kubun $e_time->start_timeなどで順に取得させています。 (ソース一部抜粋) <table> <tr> <th>日付</th> <th>曜日</th> <th >区分</th> <th >開始</th> <th >終了</th> <th >休憩</th> <body> <?php $youbi = ['日', '月', '火', '水', '木', '金', '土']; $countdate = date('t', mktime(0, 0, 0, 10, 1, 2021)); for ($i = 0; $i < $countdate; ++$i) { $d = mktime(0, 0, 0, 10, 16 + $i, 2021); foreach($e_all as $e_time); echo '<tr>'; echo '<td class="px-4 py-3">'.date('d', $d).'</td>'; echo '<td class="px-4 py-3">'.$youbi[date("w",$d)].'</td>'; if(date('Y-m-d', $d) == $e_time->date_time){ if(!empty($e_time->start_time)){ echo '<td class="px-4 py-3">'.$e_time->kubun.'</td>'; echo '<td class="px-4 py-3">'.$e_time->start_time.'</td>'; }else{ echo '<td></td>'; } } echo '</tr>'; } ?> </body> </table> (イメージ) 16 火  17 水  DB側に同じ日付にデータがあれば全件取得表示をさせたい

    • ベストアンサー
    • PHP
  • 翌日の日付表示で土日を抜きたい

    質問させていただきます。 次回の会合部屋の予約可能日付を表示させるスクリプトを考えています。まず1日後の日付表示を考えているのですが、1日後が土曜日或いは日曜日の際には翌週の月曜日が表示されるようにしたいです。 現状は下記のとおり1日後の日付を表示する事しかできません。 <? $youbi = array("日","月","火","水","木","金","土"); $d=mktime(0,0,0,date("m"),date("d")+1,date("y")); print date("Y年m月d日",$d)." (".$youbi[date("w",$d)].")"; ?> 土曜日と日曜日は表示から省かれるようにする方法を教えてください。

    • ベストアンサー
    • PHP
  • mysqlのcountの挙動

    mysqlのcountの挙動について教えてください! tableの内容 id,temp_id,sex,create_date 1,aaa,1,2009-01-01 00:00:00 2,bbb,1,2009-01-02 00:00:00 3,bbb,1,2009-01-02 00:00:00 4,ccc,1,2009-01-03 00:00:00 5,ccc,1,2009-01-03 00:00:00 6,ccc,1,2009-01-03 00:00:00 実現したいことは単純で日付を参照し 2009-01-01であればsex=1は1件 2009-01-02であればsex=1は2件 2009-01-03であればsex=1は3件 と表示させたくforeach内で以下のソースで試したのですがうまく取得 できず任意の日付が2009-01-03であっても結果が1となってしまいます。 ※$val2には任意のY-m-d形式の配列の値が入ります。 $res =& $mdb2->query("SELECT Count(sex) AS cnt FROM table WHERE DATE_FORMAT(create_date, '%Y-%m-%d') = '" . mysql_real_escape_string($val2) . "' && sex = '" . mysql_real_escape_string(1) . "' GROUP BY temp_id"); while ($row = $res->fetchRow()) { $data[$key]['man'] = $row['cnt']; }

    • 締切済み
    • PHP
  • データベースの中身をテーブルで表示したいです

    mysqlデーターベースの中身をテーブルで表示したいのですがわからない事があるので書き込みしました。 テーブルAのデーターを <TABLE> <TR><TD>mysql1行目</TD><TD>mysql2行目</TD></TR> <TR><TD>mysql2行目</TD><TD>mysql4行目</TD></TR> </TABLE> <TD></TD>の間にレコード一つ分のデータを入れて2列で表示したいです。 whileを使ってデーターを取り出すと1行にレコード一つ分のデーターを表示するのはそのままできるんですが1行にレコード二つ分のデーターを出す場合<TR>と</TR>をどういう仕組みで表示させれば良いかわかりません。 誰か教えてもらえないでしょうか?

    • 締切済み
    • PHP
  • html、php、IE6またはfirefoxでの表示について

    MySQLに入れてあるデータをphpのforeachループを回すことでhtmlのテーブルに取り出して表示しようとしています。データはちゃんと取り出せてテーブルに入っているのですが、テーブルの画面上での配置がうまく設定できません。 firefoxでは、普通に表示されるのですが、IE6だとなぜか画面上だいぶん下の方に表示されます(表の上はぽっかりと大きな空白ができます)。ループを回したテーブルをdivタグで囲って色を付けてみますと(絶対値指定で座標を0、0にした)、画面左上の位置からちゃんと色がつくのですが、テーブルはそれとはずれて、だいぶん下に配置されます。余計なCSS、javascriptなどは全部落としてみましたが、ダメでした。 PHPフレームワークとしてCodeIgniterを使用しています。 以下に作成したものを貼り付けておきます。どなたかわかりましたら、よろしくご指導お願いします。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>登山記録</title> </head> <body> <table border="1"> <tr> <th>山名</th> <th>登山期間</th> <th>集合場所</th> <th>集合時刻</th> <th>登山開始</th> <th>登頂時刻</th> <th>登山終了</th> <th>山篭り(時間)</th> <th>天気</th> <th>出席メンバー</th> <th>コメント</th> <th>欠席メンバー(理由)</th> <th>パスワード</th> <?php foreach($all_data as $row): ?> <tr> <td><?=form_prep($row->yama_name);?></td> <td><? if($row->time_range1==$row->time_range2){ if($row->time_range1!=0){ echo form_prep(date("Y/m/d",$row->time_range1));}else { echo "-";}}else{?> <?php echo form_prep(date("Y/m/d",$row->time_range1))."~".form_prep(date("Y/m/d",$row->time_range2));} ?></td> <td><? if($row->gathering_place==""){ echo "-"; }else{ echo form_prep("$row->gathering_place");}?></td> <td><? if($row->g_time==0){ echo "-"; }else{ echo form_prep(date("Y/m/d H:i",$row->g_time));} ?></td> <td><?php if($row->nobori_start_time==0){ echo "-"; }else{ echo form_prep(date("Y/m/d H:i",$row->nobori_start_time));} ?></td> <td><?php if($row->nobori_peak_time==0){ echo "-"; }else{ echo form_prep(date("Y/m/d H:i",$row->nobori_peak_time));} ?></td> <td><?php if($row->nobori_end_time==0){ echo "-"; }else{ echo form_prep(date("Y/m/d H:i",$row->nobori_end_time)); } ?></td> <td><?php if($row->yama_gomori_time==0){ echo "-"; }else{ echo sprintf("%.2f",form_prep($row->yama_gomori_time)); } ?></td> <td><?php if($row->weather==""){ echo "-"; }else{ echo form_prep($row->weather); } ?></td> <td><?=form_prep($row->go_with);?></td> <td><?php if($row->comment==""){ echo "-"; }else{ echo form_prep($row->comment);}?></td> <td><?php if($row->absence_member==""){ echo "-"; }else{ echo form_prep($row->absence_member)."(".form_prep($row->absence_reason).")";}?></td> <td> <?=form_open('mount/mod_del/' . $row->id);?> <input type="password" name="password" size="6" value="" /> </td> <td> <input type="submit" name="modify" value="修正" /><br> <input type="submit" name="delete" value="削除" /> <?=form_close();?> </td> </tr> <?php endforeach; ?> </table> </body> </html>