結構復習っぽい内容ですが、
項目としてまとまってたのでもう一度。
目次
時間に関する関数
time
現在のUnixタイムスタンプを返す。
コード
echo time();
出力結果
1392683415
三十日後を出したいといった場合には、
time()+(60*60*24*30)
といった書き方も出来る。
date
ローカルの日付/時刻を書式化する。
第一引数:日付/時刻の書式
第二引数:表示したいタイムスタンプ(時間)。省略すると現在時刻となる。
コード
date('Y年m月d日(l) H:i:s',time()+60*60*24*30);
出力結果
2014年03月20日(Thursday)
曜日wについて
wで曜日を取得できるが、日曜日を0とした数値で取れてしまう。
(日)とか(月)なんてしたい場合は配列を使ってなんとかします。
1 2 3 |
$weeks = array('日','月','火','水','木','金','土'); $week = $weeks[date('w')]; echo date("Y年m月d日($week)"); |
2014年02月18日(火)
mktime
日付をUnixのタイムスタンプとして取得する。
第一引数:時
第二引数:分
第三引数:秒
第四引数:月
第五引数:日
第六引数:年
コード
echo mktime(9,0,0,2,18,2014);
出力結果
1392681600
strtotime
英文形式の日付をUnixタイムスタンプに変換する。
コード
echo strtotime("2014/02/18 09:53:30");
出力結果
1392684810
カウントダウンさせてみる
入力値にしたがって後何日なの?を表示する。
COOKIEを使う。
COOKIE専用phpファイルを用意しない。
コード
日付をinput[type=”number”]で取る場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
<?php require_once '../../php_include/Encode.php'; setcookie('event', $_POST['event'], time() + (60 * 60 * 24 * 30)); setcookie('year', $_POST['year'], time() + (60 * 60 * 24 * 30)); setcookie('month', $_POST['month'], time() + (60 * 60 * 24 * 30)); setcookie('day', $_POST['day'], time() + (60 * 60 * 24 * 30)); $_COOKIE['event'] = trim($_POST['event']); $_COOKIE['year'] = trim($_POST['year']); $_COOKIE['month'] = trim($_POST['month']); $_COOKIE['day'] = trim($_POST['day']); ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>カウントダウン</title> </head> <body> <h2>カウントダウン</h2> <form action="" method="POST"> <div> <label for="event">イベント名:</label> <input type="text" name="event" value="<?php print(e($_COOKIE['event'])); ?>"> </div> <div> <label>開催日:</label> <input type="number" name="year" value="<?php print(e($_COOKIE['year'])); ?>">年 <input type="number" name="month" min="1" max="12" value="<?php print(e($_COOKIE['month'])); ?>">月 <input type="number" name="day" min="1" max="31" value="<?php print(e($_COOKIE['day'])); ?>">日 </div> <div> <input type="submit" value="見る"> </div> </form> <?php if ($_COOKIE['event'] != '' && $_COOKIE['year'] != '' && $_COOKIE['month'] != '' && $_COOKIE['day'] != ''): ?> <?php $inputDay = mktime(0,0,0,$_COOKIE['month'],$_COOKIE['day'],$_COOKIE['year']); $countDown = ceil(($inputDay - time()) / (60*60*24)); ?> <div id="countdown"> <?php if($countDown < 0): ?> <p><?php print(e($_COOKIE['event'])); ?>の開催日は過ぎています。</p> <?php else: ?> <h2><?php print(e($_COOKIE['event'])); ?>まで</h2> <p>あと<span><?php print(e($countDown)); ?></span>日です。</p> <?php endif; ?> </div> <?php endif; ?> </body> </html> |
日付をinput[type=”date”]で取る場合
上記コードと同じ部分は省略
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php require_once '../../php_include/Encode.php'; setcookie('event', $_POST['event'], time() + (60 * 60 * 24 * 30)); setcookie('calender', strtotime($_POST['calender']), time() + (60 * 60 * 24 * 30)); $_COOKIE['event'] = trim($_POST['event']); $_COOKIE['calender'] = trim(strtotime($_POST['calender'])); ?> <!-- 中略 --> <div> <label for="calender">開催日:</label> <input type="date" name="calender" value="<?php print(e($_COOKIE['calender'])); ?>"> </div> <!-- 中略 --> <?php if ($_COOKIE['event'] != '' && $_COOKIE['calender'] != ''): ?> <?php $inputDay = $_COOKIE['calender']; $countDown = ceil(($inputDay - time()) / (60*60*24)); ?> <!-- 以下省略 --> |
setcookieは「次のページのロードから」なので登録直後はページに反映されないため、$_COOKIEにPOSTデータを代入している。
POSTデータが空の場合はカウントダウン表示を一切しない。
すでに過ぎた開催日を指定した場合は開催日が過ぎていると警告を出している。
特定レコードを一覧表示する
英単語のテーブルwordsからanで始まる英単語を20件取得する。
SQL文
SELECT * FROM words WHERE title LIKE "an%" LIMIT 20;
LIKEでtitleフィールドが「anから始まって以下0文字以上の文字列」に一致したレコードを取得。
LIMITで20件だけ取得。
コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<?php require_once '../../php_include/db_connect.php'; $db = getDB(); //db_connect.phpで定義したPDOオブジェクトを返す関数を実行している。 $stt = $db->prepare('SELECT * FROM words WHERE title LIKE "an%" LIMIT 20'); $stt->execute(); ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>an単語一覧</title> </head> <body> <h1>anから始まる単語</h1> <table border="solid 1px #FFFFFF"> <tr> <th>ID</th> <th>単語</th> <th>意味</th> </tr> <?php while ($row = $stt->fetch()): ?> <tr> <td><?php print($row['word_id']); ?></td> <td><?php print($row['title']); ?></td> <td><?php print($row['body']); ?></td> </tr> <?php endwhile; ?> </table> </body> </html> |
実行したSQLで取得したanから始まる単語20レコードの結果セット(仮想テーブル)をfetchで毎行読み込み、行が無くなるまでループする。
コメント
No Trackbacks.