縦カレンダーの曜日に色づけする方法を知りたい

このQ&Aのポイント
  • 縦カレンダーの曜日に色づけする方法について教えてください
  • PHPのswitch文を使用して、縦カレンダーの曜日に色をつける方法を教えてください
  • カレンダーの日付部分に曜日の色を表示する方法を教えてください
回答を見る
  • ベストアンサー

縦カレンダーの曜日に色づけ

<?php $lastd = date("d", mktime(0, 0, 0, $mm + 1, 0, $yyyy)); for ($i = 1; $i <= $lastd; $i++) ?> <tr> <?php  $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 //曜日表示  $_m =$m;  $dd = $i;  $aday = array("日", "月", "火", "水", "木", "金", "土"); while( $m==$_m ){ printf("<td><center>%s</center></td>", $aday[date("w", $ts)]); $d++; //次の日の月を$_mに代入 $_m = date("m",$ts); } ?> 日付の部分を"switch文"を使って書きたいのですが、わからずに苦労しています。教えてもらえると助かります。よろしくお願いします。

  • PHP
  • 回答数1
  • ありがとう数0

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

  • ベストアンサー
  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.1

whileループで何をやろうとしているのか理解出来ないが、これは、ループにする意味がないのでは??? 単純に縦型カレンダーならforループだけが有用で、あとはswitchやwhile を使わなくても、曜日を配列に入れてるように、色指定用文字列を配列に入れて、tdタグにstyle属性を付け加えればいいでしょう。 それから、forループ内で同じ配列を何度も作成し直すのは時間の無駄です。ループ外で先に作りましょう。 ーー手順抜粋ーー // 配列作成 $aday = array("日", "月", "火", "水", "木", "金", "土"); $textcolor = array("red", "blue", "darkorange", "teal", "green", "darkgoldenrod", "navy"); $backcolor = array('#ffcccc','#cccccc','#ffccff','#ccffff','#ccffcc','#ffffcc','#ccccff'); $lastd = date("d", mktime(0, 0, 0, $mm + 1, 0, $yyyy)); print '<table border="1">'; // ループ開始 for ($i = 1; $i <= $lastd; $i++){ print '<tr>'; $ts = mktime(0, 0, 0, $mm, $i, $yyyy); // $ymd表示部分省略 //曜日表示 $w = date("w", $ts); printf('<td style="color:%s;background-color:%s;"><center>%s</center></td>' ,$textcolor[$w],$backcolor[$w], $aday[$w]); print '</tr>'; } // ループ終了 print '</table>';

fufufumi98
質問者

補足

hrm_mmmさん、お返事ありがとうございました。 早速コードを書き、実行してみました。 print '<table border="1">'; print '<tr>'; print '</tr>'; print '</table>'; 自分のコードで以上のことを書くとエラーとなるので、抜いて実行してみました。結果はきちんと表示されているのですが、 ______ 曜日|日付 ______ 月 |11月8日 ______ 火 |11月9火 ______ ・ |・ ・  ・ と曜日と日付が逆になってしまいました。いろいろと試してみたのですが、直らずに困っています。何か方法はありますか。何度もすみません。。。

関連するQ&A

  • phpカレンダー縦型から格子型へ

    予約状況用の既存スクリプトから表示を変更させたいのですが、 変更内容は以下の通りです。(PHP+MySQL) ▼縦型から ------------------------ |1日 |○| |2日 |×| ・・・ |31日 |×| ▼カレンダー形式へ ------------------------ | |1|2|3|4|5|6| |○|×|△|○|○|×|×| |7|8|9|10|11|12|13| |○|×|△|○|○|×|×| ・・・ ------------------------------------------------ <table border="1"> <tr bgcolor="#ffd700"> <td>日付</td> <?php // 部屋表示 while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) { $roomid = $row["roomid"]; $roomname = cnv_dispstr($row["roomname"]); $link = $_SERVER["PHP_SELF"]."?act=det&roomid=".$roomid; ?> <td><a href="<?php echo $link?>"> <?php echo $roomname ?></a></td> <?php } ?> </tr> <?php $lastd = date("d", mktime(0, 0, 0, $mm + 1, 0, $yyyy)); for ($i = 1; $i <= $lastd; $i++) { ?> <tr> <?php $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 // 部屋ごとの予約表示 $res = mysql_query($sql, $conn) or die("データ抽出エラー"); while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) { $roomid = $row["roomid"]; $roomname = cnv_dispstr($row["roomname"]); $link = $_SERVER["PHP_SELF"]. "?act=upd&hiduke=".$ymd."&roomid=".$roomid; ?> <td><a href="<?php echo $link?>"> <?php echo yoyakuchk($ymd,$roomid) ?></a></td> <?php } ?> </tr> <?php } ?> </table> ------------------------------------------------ 調べたところ $lastd = date("d", mktime(0, 0, 0, $mm + 1, 0, $yyyy)); for ($i = 1; $i <= $lastd; $i++) { $days = date("d", mktime(0, 0, 0, $mm, $i, $yyyy)); $first_day = date('w', mktime(0, 0, 0, $mm, 1, $yyyy)); $last_day = date('w', mktime(0, 0, 0, $mm, $days, $yyyy)); } $last_week_days = ($days + $first_day) % 7; if ($last_week_days == 0){ $weeks = ($days + $first_day) / 7; }else{ $weeks = ceil(($days + $first_day) / 7); } 今月の日数、最初の日、最後の日の曜日、最後の週の曜日を得ればいいんだろうというところまでは分かったんですが、どう書き換えていいかわかりません。どなたか参考となるソースをご指南頂けると、とても助かります。

    • ベストアンサー
    • PHP
  • PHPのカレンダーに曜日をつけられづに困っています。

    <?php // 日付 if (!isset($hiduke)) { $hiduke = date("Y-m-d"); } if (!isset($yyyy)) { $yyyy = date("Y", strtotime($hiduke)); } if (!isset($mm)) { $mm = date("m", strtotime($hiduke)); } if (!isset($dd)) { $dd = date("d", strtotime($hiduke)); } // 表示ページ if (isset($_GET["act"])) { $act = $_GET["act"]; } if (!isset($act)) { $act = ""; } // ================================================= //  処理開始 ?> <?php conndb();?> <html> <head> <meta http-equiv="content-type" content="text/html; charset=Shift_JIS"> <title>予約システム</title> </head> <body> <h2>予約システム</h2> <?php // -- ページ内容の表示 switch ($act) { case "upd": // 更新 gamen_upd(); break; case "updconf": // 更新確認 gamen_updconf(); break; case "delconf": // 削除確認 gamen_delconf(); break; case "det": // 詳細表示 gamen_detail(); break; default: gamen_iti(); } ?> </body> </html> <?php closedb(); ?> <?php // ================================================= // ----- 一覧表示画面 function gamen_iti() { global $conn; global $hiduke; global $yyyy; //年 global $mm; //月 $array = cnv_formstr($_POST); extract($array, EXTR_SKIP); if (isset($kbn)) { if ($kbn == "upd" or $kbn == "del") { update_yoyaku($kbn); } } $sql = "SELECT * FROM jikan ORDER BY timeid"; $res = mysql_query($sql, $conn) or die("データ抽出エラー"); ?> <form method="post" action="<?php echo $_SERVER["PHP_SELF"]?>"> <table border="1"> <tr> <td><?php setmonth(); ?></td> <td><input type="submit" name="sub" value="予約表示"></td> </tr> </table> <input type="hidden" name="act" value="iti"> <input type="hidden" name="kbn" value="go"> </form> <p><?php echo date("Y 年 m 月 ", mktime(0, 0, 0, $mm, 1, $yyyy)) ?>予約一覧 <table border="1"> <tr bgcolor="#ffd700"> <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++) { ?> <tr> <?php $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   <?php } ?> </table> <?php } // ================================================= // ----- 年月選択リスト表示 function setmonth() { global $yyyy; global $mm; $array = cnv_formstr($_POST); extract($array, EXTR_SKIP); echo "<table><tr><td>"; // 年 echo "<select name=\"yyyy\">"; for ($i = 2008; $i <= 2025; $i++) { echo "<option"; if ($i == $yyyy) { echo " selected "; } echo ">$i"; } echo "</select>年"; // 月 echo "<select name=\"mm\">"; for ($i = 1; $i <= 12; $i++) { echo "<option"; if ($i == $mm) { echo " selected "; } echo ">$i"; } echo "</select>月"; echo "</td>"; echo "</tr></table>"; } ?> と参考書を見ながら、作っています。 PHPはまったくの初心者です。カレンダーの日付に曜日をつけられづに困っています。コードを含め詳しくをしえてもらえると助かります。よろしくお願いします。

    • 締切済み
    • PHP
  • 月曜日から始まる週間カレンダーの作り方

    いつもありがとうございます。 下記のようなコードを書いて1週間のカレンダーを作っていますが、 どうしても日曜日からの表示になります。 この表示を月曜日から始まり、日曜日で終わるカレンダーにならないものか考えるのですが、どうもうまくいきません。 よきアドバイスをお願いします。 <? //来週・前週の---日曜日----をgetした値 $get_sunday = htmlspecialchars($_GET["get_sunday"]); $entry_day = htmlspecialchars($_GET["entry_day"]); //変数の値の識別カレンダー表示 //get_sunday (来週・前週)の値がgetされていたら if($get_sunday!=""){ //getされた日曜日の日付 $mm = date("m",strtotime($get_sunday)); $dd = date("d",strtotime($get_sunday)); $yyyy = date("Y",strtotime($get_sunday)); //getされた日曜日の日付(日のみ) $sunday_num = $dd; //getされた日曜日の日付(年月日) $kyujin_day = date("Y-m-d",mktime(0,0,0,$mm,$dd,$yyyy)); } // ================================================= //変数の値の識別           カレンダー表示 //entry_day (指定した日)の値をgetされたら if($entry_day!=""){ $mm = date("m",strtotime($entry_day)); $dd = date("d",strtotime($entry_day)); $yyyy = date("Y",strtotime($entry_day)); //$week_numに今日の曜日ナンバーを代入(mktime(0,0,0,今日の月,今日の日,今日の年) //日0・月1・火2・水3・木4・金5・土6 $week_num = date("w", mktime(0,0,0,$mm,$dd,$yyyy)); //entry_dayの値 $kyujin_day = date("Y-m-d",mktime(0,0,0,$mm,$dd,$yyyy)); //日曜日の日付(日のみ) $sunday_num = $dd - $week_num; } // ================================================= //変数の値がない場合は本日の日付の取得 カレンダー表示 if($get_sunday=="" and $entry_day==""){ $mm = date("m",time()); $dd = date("d",time()); $yyyy = date("Y",time()); //$week_numに今日の曜日ナンバーを代入(mktime(0,0,0,今日の月,今日の日,今日の年) $week_num = date("w", mktime(0,0,0,$mm,$dd,$yyyy)); $kyujin_day = date("Y-m-d",mktime(0,0,0,$mm,$dd,$yyyy)); //日曜日の日付(日のみ) $sunday_num = $dd - $week_num; } //前週、次週に日曜日の日付を取得    カレンダー表示 $sunday_last = $sunday_num - 7; $sunday_next = $sunday_num + 7; ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>レンダー画面</title> </head> <body> <table> <tr> <td></td> <td bgcolor="#00FFFF">日</td> <td bgcolor="#00FFFF">月</td> <td bgcolor="#00FFFF">火</td> <td bgcolor="#00FFFF">水</td> <td bgcolor="#00FFFF">木</td> <td bgcolor="#00FFFF">金</td> <td bgcolor="#00FFFF">土</td> <td></td> </tr> <tr> <form method="get" name="form2"action="test2.php"> <td> <input type="hidden" name="get_sunday" value= "<?php echo date("Y-m-d", mktime(0, 0, 0, $mm, $sunday_last, $yyyy)); ?>"> <input type="submit" name="Submit2" value="前週へ"> </td> </form> <? //週カレンダー(前週ボタン作成)ここまで //週カレンダー日付を入れる $w2 = $sunday_num; $select_day = date("Y-m-d", mktime(0, 0, 0, $mm, $w2, $yyyy)); $i = 0; while($i < 7) { //日曜日から順に日付を$select_dayに入れていく ?> <td bgcolor="#CCFFFF"><? echo date("m月d日", mktime(0, 0, 0, $mm, $w2+$i, $yyyy)) ?></td> <? // 日付けを一つ繰り上げる $i++; } ?> <form method="get" name="form2" action="test2.php"> <td> <input type="hidden" name="get_sunday" value= "<?php echo date("Y-m-d", mktime(0, 0, 0, $mm, $sunday_next, $yyyy)); ?>"> <input type="submit" name="Submit" value="次週へ"> </td> </form> </table> </body> </html>

    • 締切済み
    • PHP
  • 1週間カレンダー

    こんばんは。お世話になっております。 書籍にあった下記のソースを参考に、1週間単位で表示(および週単位で移動)させたいと考えているのですが、for文などの応用が出来ず、アドバイスを頂戴できればと投函させて頂きました。 お忙しい中恐縮ですが、お力いただけたら幸いです。 描いている表示 <<    >> 日 月 火 水 木 金 土 24 25 26 27 28 29 30 <?php //感じなところでしょうが文字数制限のため省略。 //フォームにて、西暦、月を取得 //yyyy = $_POST["yyyy"]; //$yyyy = date("Y"); //$mm = date("m"); echo "<table border=\"1\">"; echo "<tr><td>日</td><td>月</td><td>火</td><td>水</td><td>木</td><td>金</td><td>土</td></tr>"; $wd1 = date("w", mktime(0, 0, 0, $mm, 1, $yyyy)); $d = 0; $lastd = date("d", mktime(0, 0, 0, $mm + 1, 0, $yyyy)); for ($i = 0; $i <= 5; $i++) { if ($d >= $lastd) {break;} echo "<tr>"; for ($j = 0; $j <= 6; $j++) { $d = $i * 7 + $j - $wd1 + 1; if ($d > $lastd or $d < 1) { echo "<td></td>"; } else { echo "<td>"; } echo $d; echo "</td>"; } } echo "</tr>"; } echo "</table>"; 丸投げのようで、すみません。そんなつもりはないのですが・・・要領が掴めず困っております。

    • ベストアンサー
    • PHP
  • 一行で表示させたい。

    質問は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
  • カレンダーで今月を取得できずに困っています。

    <?php if (!$yyyy && !$mm) { $yyyy = date("Y", $time); $mm = date("n", $time); $dd = date("j", $time); } if ($_GET["hyear"]) { $yyyy = $_GET["hyear"];   $mm = $_GET["hmonth"]; $dd = $_GET["hday"];     } $dd = 1; $youbi = array("日","月","火","水","木","金","土"); $you = date("w", mktime(0, 0, 0, $mm, $dd, $yyyy)); $backy = $yyyy; $backm = $mm - 1; $nexty = $yyyy; $nextm = $mm + 1; if ($backm == 0) { $backy = $yyyy - 1; $backm = 12; } if ($nextm == 13) {  $nexty = $yyyy + 1; $nextm = 1; } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <title>カレンダー</title> </head> <?php print "<table border ='7' width='800' height='520' a colspan='7' align='center'><tr>\n"; print "<a><a href='./calender.php?year=" . $backy . "&month=" . $backm . "'>←先月</a>\n"; print $yyyy."年".$mm."月のカレンダー\n";  print "<a><a href='./calender.php?year=" . $nexty . "&month=" . $nextm . "'>来月→</a>\n";   ?> </tr> <tr> <?php print "<td bgcolor='#ffaaaa'><b>日</b></td>\n"; print "<td bgcolor='#ffffdd'><b>月</b></td>\n"; print "<td bgcolor='#ffffdd'><b>火</b></td>\n"; print "<td bgcolor='#ffffdd'><b>水</b></td>\n"; print "<td bgcolor='#ffffdd'><b>木</b></td>\n"; print "<td bgcolor='#ffffdd'><b>金</b></td>\n"; print "<td bgcolor='#ddddff'><b>土</b></td>\n"; ?> </tr> <tr> <?php if ($dd == 1) { $yo = 0; for ($i = $yo; $i < $you; $i++) { print "<td a class='cale' valign='top'>&nbsp;</a>"; } } $monday = 0; for ($i = $dd; $i < 3660; $i++) { $you = date("w", mktime(0, 0, 0, $mm, $dd, $yyyy)); if ($you == 1) { $monday++; } $y2 = ($yyyy - 2000); $syunbun = (int)(20.69115 + 0.2421904 * $y2 - (int)($y2/4 + $y2/100 + $y2/400)); $syuubun = (int)(23.09000 + 0.2421904 * $y2 - (int)($y2/4 + $y2/100 + $y2/400)); //日曜日にはリンク貼らない elseif ($you == 0) { print "<td><a class='cale' align='center'><bgcolor='#ffaaaa'><font size='10' color=deeppink> $dd </font></a>\n"; } //土曜日なら elseif ($you == 6) { print "<td><a class='today' href='./yoyaku.php?hyouji=hiduke=$ymd'> <span class='cale'><align='center'><font size='10' color=green>" . $dd . "</span></font></a>"; } //今日なら elseif (($yyyy == date("Y")) && ($mm == date("n")) && ($dd == date("d"))) { print "<td><a class='today' href='./yoyaku.php?hyouji=hiduke=$ymd'> <span class='cale'><align='center'><font size='10'>" . $dd . "</span></font></a>"; } //今日以外なら else { print "<td><a class='date' href='./yoyaku.php?hyouji=hiduke=$ymd'> <span class='cale'><align='center'><font size='10'>" . $dd . "</span></font></a>"; } ?> <?php $dd++; $holiday = ""; if (checkdate($mm, $dd, $yyyy) == false) { break; } if ($you == 6) { print "</tr>\n<tr>\n"; } } //unset ($plan); $dd = $dd -1; $you = date("w", mktime(0, 0, 0, $mm, $dd, $yyyy)); if ($you < 6) { $yo = $you; for ($yo; $yo < 6; $yo++) { print "<a class='biga' align='top'>&nbsp;</a>"; } } ?> <body link="indigo" alink="yellow" vlink="indigo"> </body> <body> <h1 size = 10> </h1> <h1 style="background:#ffffff"> </tr> </table> 色々調べて直そうとしたのですが、どうしても表示させると1970年から表示されてしまい、今月から表示されません。どうしたら今月から表示されるのか教えてください。お願いします。

    • ベストアンサー
    • PHP
  • PHPでカレンダーを作成する際の計算がわかりません

    PHPを勉強し始めた初心者です。 参考書を片手にカレンダーを作成しているのですが、 その参考書に記載されている計算の意味がわかりません。 ///////以下抜粋 <?php //年月日を取得する if ($_SERVER['REQUEST_METHOD'] = "POST") { $yyyy = $_POST["yyyy"]; $mm = $_POST["mm"]; } else { $yyyy = date("Y"); $mm = date("m"); } //年月選択リストを表示する echo "<form method=\"POST\" action=\"" . $_SERVER['PHP_SELF'] . "\">"; echo "<table><tr><td>"; //年 echo "<select name=\"yyyy\">"; for ($i = 2000; $i <= 2020; $i++) { echo "<option"; if ($i == $yyyy) { echo " selected "; } echo ">$i"; } echo "</select>年"; //月 echo "<select name=\"mm\">"; for ($i = 1; $i <= 12; $i++) { echo "<option"; if ($i == $mm) { echo " selected "; } echo ">$i"; } echo "</select>月"; echo "</td>"; echo "<td><input type=\"submit\" value=\"表示\" name=\"sub1\"></td>"; echo "</tr></table></form>"; //カレンダーを表示する echo"<table border=\"1\">\n <tr>\n <td>日</td>\n <td>月</td>\n <td>火</td>\n <td>水</td>\n <td>木</td>\n <td>金</td>\n <td>土</td> </tr>"; //1日の曜日を取得する $wd1 = date("w", mktime(0,0,0,$mm,1,$yyyy)); $d = 0; $lastd = date("d", mktime(0,0,0,$mm + 1, 0, $yyyy)); for ($i = 0; $i <= 5; $i++) { if ($d >= $lastd) {break;} echo "<tr>"; for ($j = 0; $j <= 6; $j++) { $d = $i * 7 + $j - $wd1 + 1; if ($d > $lastd or $d < 1) { echo "<td> </td>"; } else { echo "<td>$d</td>"; } } echo "</tr>"; } echo "</table>"; ?> /////////////////// 上記のソースの for ($i = 0; $i <= 5; $i++) { if ($d >= $lastd) {break;} echo "<tr>"; for ($j = 0; $j <= 6; $j++) { $d = $i * 7 + $j - $wd1 + 1; if ($d > $lastd or $d < 1) { echo "<td> </td>"; } else { echo "<td>$d</td>"; } } echo "</tr>"; } この部分で、なぜ5なのかとかなぜこういう計算式なのかとかがわかりません。 どなたかこのソースの意味をご教授願いませんでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • 曜日に色をつけたいのですがわかりません

    <?php  $_m =$m;  $dd = $i;  $aday = array("日", "月", "火", "水", "木", "金", "土");     while( $m==$_m ){     printf("<td>%s</td>", $aday[date("w", $ts)]);     $d++;     //次の日の月を$_mに代入     $_m = date("m",$ts);     } ?> のコードの日曜日と土曜日に色をつけたいのですが分かりません。 phpは初心者なので、コード付で教えてもらえると助かります。 よろしくお願いします。

    • 締切済み
    • PHP
  • テーブルデータ表示後、再表示の方法

    初めて質問させて頂きます。うまく言葉に出来てないかもしれませんがよろしくお願い致します。 現在スケジュール管理をPHPとSqliteで作成しています。 yotei.phpでDBのデータを表示(HTMLのTABLE)し、予定の追加・更新をする場合は該当の日付をクリックするとrequire_onceでtoroku.phpを読込ます。toroku.phpでは更新処理か新規登録かを確認し、<form action="add.php?id='.$id.'&ymd='.$ymd.'" method="POST">にて登録・削除・リセットの各ボタンにあわせてのDB処理を行っています。 <?php session_start(); $link = sqlite_open('yotei.db', 0666, $sqliteerror); ?> ~一部省略~ <TABLE BORDER=1 WIDTH="100%" CELLPADDING="2" CELLSPACING="0"> <TBODY><TR> <TD>日付</TD> <TD>曜日</TD> <TD>予定時間</TD> <TD>作業内容</TD></TR> <?php //データ表示 $ymd = date('Ymd', mktime(0, 0, 0, $mm, $dd, $yy)); $i = 0; while ($ymd <= $to_date) { $sql = "SELECT * FROM timetbl where (id=$sid and ymd=$ymd)"; $result = sqlite_query($link, $sql, SQLITE_BOTH); if ($rows = sqlite_fetch_array($result)) { print('<TR>'); print('<TD WIDTH="5%" ALIGN="center" NOWRAP><A href="yotei.php?ymd='.date('Ymd', mktime(0, 0, 0, $mm, $dd, $yy)).'">'.date('m/d', mktime(0, 0, 0, $mm, $dd, $yy)).'</A></TD>'); print('<TD WIDTH="5%" ALIGN="center" NOWRAP bgcolor="'.$chk['color'].'">'.$chk['youbi_m'].'</TD>'); ~一部省略~ } else { print('<TR>');    print('<TD WIDTH="5%" ALIGN="center" NOWRAP><A href="yotei.php?ymd='.date('Ymd', mktime(0, 0, 0, $mm, $dd, $yy)).'">'.date('m/d', mktime(0, 0, 0, $mm, $dd, $yy)).'</A></TD>'); print('<TD WIDTH="5%" ALIGN="center" NOWRAP bgcolor="'.$chk['color'].'">'.$chk['youbi_m'].'</TD>'); ~一部省略~ print('</TR>'); } $dd = $dd + 1; $ymd = date('Ymd', mktime(0, 0, 0, $mm, $dd, $yy)); $i = $i + 1; if ($i > 30) { break; } } ('<TD WIDTH="5%" ALIGN="center"> </TD>'); ~一部省略~ ?> </TBODY></TABLE></DIV> <?php sqlite_close($link); if (!isset($_GET['ymd'])){   PRINT('</BODY>'); PRINT('</HTML>'); exit; } ?> <?php require_once("toroku.php"); ?> </tbody></table></div> toroku.phpでは、該当の日付のDBのデータを読み退避させてyotei.phpと同じ様に1か月分を再表示させてますが、yotei.phpの表示とtoroku.php再表示の表が重なって表示されてしまいます。 申し訳ありませんが、ご教示頂けませんでしょうか?

    • ベストアンサー
    • PHP
  • 改行されないカレンダー(PHP)

    ●質問の主旨 下記のコードでカレンダーを作りましたが、 日付が横一列に並んだ奇妙なカレンダーになってしまいます。 参考文献と比べて、同じコードを記述しているように思いますが、 なぜ改行されないのか、分かりません。 ご存知の方、アドバイスよろしくお願いします。 ●参考文献 西沢直木「プログラミングの教科書」P196 ●開発環境 windows8 xammp1.8.1 ●コード(test.4) <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>カレンダー</title> </head> <table border="1"> <tr> <th>日</th> <th>月</th> <th>火</th> <th>水</th> <th>木</th> <th>金</th> <th>土</th> </tr> <tr> <?php $y =2012; $m = 2; $wd1 = date("w", mktime(0, 0, 0, $m, 1, $y)); for ($i = 1; $i <= $wd1; $i++) { echo "<td> </td>"; } $d = 1; while (checkdate($m, $d, $y)) { echo "<td>$d</td>"; if (date("w", mktime(0, 0, 0, $m, $d, $y)) == 6) { //週を終了 echo"</tr>"; //次の週がある場合は新たな行を準備 if (checkdate($m, $d + 1, $y)) { echo"<tr>"; } } //日付を1つすすめる $d++; } // 最後の週の土曜日まで移動 $wdx = date("w", mktime(0, 0, 0, $m + 1, 0, $y)); for ($i = 1; $i < 7 - $wdx; $i++) { echo "<td> </td>"; } ?> </tr> </table>

    • ベストアンサー
    • PHP

専門家に質問してみよう