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

PHPの質問です。
http://q.hatena.ne.jp/1163814335
http://q.hatena.ne.jp/1164007516
で質問させて頂いて回答を頂きました。この問題でさらに機能をつけたく、例えば今日の日付を取得します。今日が11/23であれば
$gd=getdate();$today=$gd['mday']; で今日の日付を取得します。今日から月末までは$iにリンクをつけて(リンク先はなんでもOK)、1日から$todayまでの日付は日付($i)はリンクをつけません。リンクは"<td align=\"center\"><A href=XXX>$i</A></td>\n";につけます。このような条件文はどのようにしたらよいでしょうか?できれば下のforループを元にお教えください。

for( $i = 1 - $w ; $i <= $n + 7 ; $i++ ){
if ( ( ( $i + $w ) % 7 ) == 1 ) {
print "<tr>\n";
}
if ( ( 0 < $i ) && ( $i <= $n ) ) {
//土日色塗り判定
print "<td align=\"center\">$i</td>\n";
} else {
print "<td>&nbsp;</td>\n";
}
if ( ( ( $i + $w ) % 7 ) == 0 ) {
print "</tr>\n";
if ( $i >= $n ) {
break;
}
}
}
print "</table>\n";

●質問者: popattack
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:23 Gd print Today リンク
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● Mook
●190ポイント ベストアンサー

カレンダーは今月のものを表示するという前提でしょうか。

日付の判定のみしています。

<html>
<head>
<title>PHPカレンダサンプル</title>
<?php

function drawCalender( $y ,$m ) {
 $t = mktime(0, 0, 0, $m, 1, $y); //$y年$m月1日のUNIXTIME
 $w = date('w', $t); //1日の曜日(0:日?6:土)
 $n = date('t', $t); //$y年$m月の日数
 print '<table border="1" bgcolor="FFFFFF">'."\n";
 print "<caption><font color=\"#0000FF\"><b>{$y}年{$m}月</font></b></caption>\n";
 print <<<DAY_TITLE
 <tr>
 <th>日</th><th>月</th><th>火</th><th>水</th><th>木</th><th>金</th><th>土</th>
 </tr>
DAY_TITLE;
 $gd=getdate();
 $today=$gd['mday'];
 if ( ( ( $i + $w ) % 7 ) == 1 )
 print "<tr>\n";
//曜日の色設定
 switch( ( $i + $w ) % 7 ) {
 case 1 : $color = '"red"'; break;
 case 0 : $color = '"yellow"'; break;
 default : $color = '"white"'; break;
 }
 for( $i = 1 - $w ; $i <= $n + 7 ; $i++ ) {
 if ( ( ( $i + $w ) % 7 ) == 1 )
 print "<tr>\n";
 if ( ( 0 < $i ) && ( $i <= $n ) ) {
 print "<td bgcolor=$color align=\"center\">";
// リンク処理:
// ↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ここから
 if ( $i > $today ) {
 print '<A href="http://www.nnh.to/'.sprintf("%02d/%02d", $m, $i).'.html" target="_blank">'.$i."</A>";
 } else {
 print $i;
 }
// ↑↑↑↑↑↑↑↑↑↑↑↑↑↑ ここまで
 print "</td>\n";
 } else {
 print "<td bgcolor=$color> </td>\n";
 }
 if ( ( ( $i + $w ) % 7 ) == 0 ) {
 print "</tr>\n";
 if ( $i >= $n ) 
 break;
 }
 }
 print "</table>\n";
}
?>
</head>
<body bgcolor="#E0F0E0">
 <center>
 <?php drawCalender( date('Y'), date('n') ); ?>
 </center>
</body>
</html>

もし、任意の月を表示するのであれば、

if ( $i > $today ) {

if mktime( 0,0,0,$m,$i,$y ) > mktime(0,0,0)

のように変更する必要があります。


2 ● Mook
●10ポイント

こちらはポイント不要です。

色判定が for 文の外に出ているので、色がついていませんでした。

for(...) {

の後ろに移動してください。

先ほど利用したリンクです。

この日なんの日

◎質問者からの返答

毎回Mook様には助けられます。完璧な回答ありがとうございました!助かりました!!

関連質問


●質問をもっと探す●



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