人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

会員制サイトphp+mysqlに関する質問です。
登録したユーザーの情報はテーブル(User)に記録されています。
テーブル(User)のフィールドは以下の4つです。
()内がフィールド名です。

会員コード(UserCD) text
パスワード(Pass) text
ニックネーム(Name) text
登録日時(Joined) datetime

独自タグAtimeとBtimeは以下の通りです。

if (date('H') >= 0 && date('H') <= 17)
$Atime = TRUE;
else
$Btime = TRUE;

##Atime##現在AM0時からPM6時の間です##Atime##
##Btime##現在AM0時からPM6時以外の間です##Btime##

##Atime##に囲まれた文字列はAM0時からPM6時までの間表示され
##Btime##に囲まれた文字列はそれ以外の時間帯に表示されます。

上記をカスタマイズし、登録日時から3日以内(72時間)である会員はAtime
登録日時から3日以上経過した会員はBtimeとしたいです。
登録日時はJoinedに記録されています。

ご教授いただけると幸いです。
よろしくお願い致します。

MySQL - 5.0.45

●質問者: xptree
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:MySQL name PHP USER カスタマイズ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● kn1967
●100ポイント ベストアンサー
$query = "
 SELECT CASE WHEN NOW() > DATE_ADD(Joined, INTERVAL 3 DAY) THEN 'A' ELSE 'B' END TAG
 FROM User
 WHERE UserCD = 'kn1967'
";
$rs = mysql_query($query);
$row = mysql_fetch_row($rs);

$Atime = FALSE;
$Btime = FALSE;
if ($row[0] == 'A' && date('H') >= 0 && date('H') <= 18) {
 $Atime = TRUE;
} elseif($row[0] == 'B' && date('H') > 18) {
 $Btime = TRUE;
}

現在日時 now() と joined+3日(72時間)を比較して

AもしくはBを返すというSQLを使った例ですが

動作確認せずに投稿しておりますので適宜調整願います。

◎質問者からの返答

回答ありがとうございます。

参考になりました。

説明不足ですいません、この場合SELECT文は必要ありませんでした。

if (現在日時 > 登録日時より3日加算した日時)

のみで構いません。

会員それぞれのJoinedは$Joinedに格納されています。

既に会員それぞれの情報を取得していることが前提です。

とりあえず自分で適当に当てはめてみたのが

if (getdate() > date_add($Joined, interval 3 day))

なのですが

この場合の正しい書き方を教えて頂けたら幸いです。

よろしくお願い致します。


2 ● sphire
●50ポイント
if (time() > strtotime($Joined) + 3*24*60*60) {
 $Atime = TRUE;
} else {
 $Atime = FALSE;
}
$Btime = !$Atime;

$JoinedがDATETIMEなら、上でいけると思います。

◎質問者からの返答

回答ありがとうございました。

無事できるようになりました。

助かりました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ