• 締切済み

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
  • ありがとう数1

みんなの回答

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

元ソースの可読性がわるいのでなんともいえませんが $ymdstr = strftime("%Y年%m月%d日(%a)", $ts); の%aってところが曜日ですけど、これを変えたいということ?

fufufumi98
質問者

お礼

返信遅れてしまいすみませんでした。 %aを変えずに、PHPとMYSQLを使って曜日を別の枠に縦に表示したいのですが。。。 理解不足のため、困っています。

関連するQ&A

  • 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カレンダー縦型から格子型へ

    予約状況用の既存スクリプトから表示を変更させたいのですが、 変更内容は以下の通りです。(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
  • 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
  • 週だけのカレンダーを作成する方法

    週だけのカレンダーを作成しています。 1~31日までのカレンダーは作成できるのですが、その週だけのカレンダーを作成する方法が分かりません。どなたか週だけのソースを教えていただけるとありがたいです。 ■因みに1~31日までのカレンダーのソース Sub Gamen_cal( ) if kbn = "edi" or kbn = "del" then Call Update_sche end if %> <form method="POST" action="sche.asp"> <table border="1"> <tr> <td><% Call SetMonth %></td> <td><input type="Submit" name="sub" value="表示"></td> </tr> </table> <input type="hidden" name="act" value="cal"> <input type="hidden" name="kbn" value="go"> </form> <p><% =year(hiduke) %>年<% =month(hiduke) %>月 <table border="1"> <tr> <td bgcolor="#FFD700">日</td> <td bgcolor="#FFD700">月</td> <td bgcolor="#FFD700">火</td> <td bgcolor="#FFD700">水</td> <td bgcolor="#FFD700">木</td> <td bgcolor="#FFD700">金</td> <td bgcolor="#FFD700">土</td> </tr> <% Dim i,j,wd,nextmonth,matsubi wd = Weekday(DateSerial(year(hiduke), month(hiduke), 1)) nextmonth=DateAdd("m", 1, hiduke) matsubi=Day(DateSerial(year(nextmonth), month(nextmonth), 1 - 1)) For i = 0 to 5 if d >= matsubi then Exit For %> <tr> <% Dim d,ymd For j = 0 to 6 d = (i * 7) + j - wd + 2 ymd = DateSerial(year(hiduke), month(hiduke), d) %> <% if d > 0 and d <= matsubi then %> <td><a href="sche.asp?act=edi&hiduke=<% = ymd %>"> <% if yoteichk(ymd) = "OK" then Response.Write "●" %> <% = d %></a></td> <% else %> <td> </td> <% end if %> <% Next %> </tr> <% Next %> </table> <% End Sub ------------------------------------------------------------- ■週だけの場合どのようなソースになるのでしょうか?

  • PHP かけ算

    PHPを使い下記の表を作ろうとしております。 ぱっと見た所あと少しで出来そうな気もするのですが、 なにかが間違っています。 誰かお分かりになるかたが今したらお伺いできますでしょうか。 | 1 2 3 4 5 6 7 8 9 -------------------------------- 1| * 2 * 4 * 6 * 8 * 2| 2 * 6 * 10 * 14 * 18 3| * 6 * 12 * 18 * 24 * 4| 4 * 12 * 20 * 28 * 36 5| * 10 * 20 * 30 * 40 * 6| 6 * 18 * 30 * 42 * 54 7| * 14 * 28 * 42 * 56 * 8| 8 * 24 * 40 * 56 * 72 9| * 18 * 36 * 54 * 72 * <table border ="1"> <?php for($i = 0; $i <=9; $i++){ echo'<tr>'; if($i == 0){ echo '<td>&nbsp;</td>'; } else { echo'<td>'.$i.'</td>'; } for($j = 1; $j<=9; $j++){ if($i == 0){ echo'<td>'.$j.'</td>'; continue; } if($i*$j % 2 == 0) { echo '<td>'. $i * $j.'</td>'; } else { echo '<td>*</td>'; } } echo '</tr>'; } ?> </table>

    • ベストアンサー
    • PHP
  • PHPによるカレンダーについて

    PHPでカレンダーを作成しています。 プルダウンで年月を指定し、更新ボタンを押せば、指定した年月のカレンダーを表示させたいのですが、うまくいきません。 更新ボタンを押してもカレンダーが変わらないです。 KOMOカレンダーというサイトを参考にして、文字コードを変えただけです。 教えてくださる方がいらっしゃいましたら宜しくお願いいたします。 <?php $last_year = 2037; $wday_color = "#000000"; $sat_color = "#0000ff"; $sun_color = "#ff0000"; $reg_color = "#ffccff"; $year = (!isset($year)) ? date("Y") : $year; $month = (!isset($month)) ? date("n") : $month; ?> <HTML> <HEAD> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <TITLE>カレンダー</TITLE> </HEAD> <BODY> <P><FONT SIZE="6" COLOR="#006600">カレンダー</FONT></P> <P> <TABLE BORDER="1"CELLSPACING="1" CELLPADDING="1"> <TR> <TD COLSPAN="7"> <SELECT NAME="year"> <?php for($i = 2002; $i <= $last_year; $i++){ echo "<option value=".$i.(($i == $year) ? ' selected':'').">".$i."年\n"; } ?> </SELECT> <SELECT NAME="month"> <?php for($i = 1; $i <= 12; $i++){ echo "<option value=" . $i . (($i == $month) ? ' selected':'').">".$i."月\n"; } ?> </SELECT> <INPUT TYPE="SUBMIT" NAME="Submit" VALUE="更新"></TD> </TR> <TR> <TD> <P ALIGN="CENTER"><FONT COLOR="red">日</FONT> </TD> <TD> <P ALIGN="CENTER">月 </TD> <TD> <P ALIGN="CENTER">火 </TD> <TD> <P ALIGN="CENTER">水 </TD> <TD> <P ALIGN="CENTER">木 </TD> <TD> <P ALIGN="CENTER">金 </TD> <TD> <P ALIGN="CENTER"><FONT COLOR="blue">土</FONT> </TD> </TR> <?php $time = mktime(0, 0, 0, $month, 1, $year); $day_of_first = date("w", $time); $date_of_month = date("t", $time); $week_of_month = ceil($date_of_month / 7); if(($date_of_month % 7 > 7 - $day_of_first) || ($date_of_month % 7 == 0 && $day_of_first != 0)){ $week_of_month++; } for($i = 1; $i <= $week_of_month * 7; $i++){ if($i % 7 == 1){ echo "<tr>"; } if(($i - 1 < $day_of_first) || ($i > $date_of_month + $day_of_first)){ echo "<td>&nbsp;</td>"; }else{ if($i % 7 == 1){ $color = $sun_color; }elseif($i % 7 == 0){ $color = $sat_color; }else{ $color = $wday_color; } echo "<td width=30 height=30 align=right valign=top>"; echo "<font color=" . $color . ">"; echo $i - $day_of_first; echo "</font></td>"; } if($i % 7 == 0){ echo "</tr>\n"; } } ?> </TABLE> </FORM> </BODY> </HTML>

    • ベストアンサー
    • PHP
  • PHP 九九表

    PHPで九九の表を作っているのですが、 どうしてもここまでしか出来ませんでした。 <tr>,<td>を消してみると 数字が横に一列に表示されており、かけ算にはなっているのですが、 表にはどうしてもなりません。 なにかが違うのは分かっているのですが、ないが違うのか分かりません。 誰かお分かりになるかたがいましたらお伺いできませんでしょうか。 <?php echo '<table>'; echo '<tr>'; for ($i = 1; $i <= 9; $i++ ) { for ($j = 1; $j <= 9; $j++ ) echo '<td>' $i * $j'</td>'; echo '</tr>'; } echo '</table>'; ?>

    • ベストアンサー
    • PHP
  • PHPでカレンダーを作成するにあたって(祝日)の出力

    PHP初心者です。 勉強をかねて、PHPでカレンダーを作成しています。 カレンダー自体は作成できたと思うのですが、祝日も考慮したいので、どうコーディングすれば良いでしょうか? カレンダーは下記のように作成致しました。 <html> <head> <title>カレンダー</title> <link rel= "stylesheet" href="ookawa.css" type="text/css"> </head> <body> <table> <th colspan="7"><font size="+1"> <?php echo date("Y"); ?> <?php echo "/"; ?> <?php echo date("m"); ?> </font><font size="+1"></font></th> <tr> <td><font size="-1">日</font></td> <td><font size="-1">月</font></td> <td><font size="-1">火</font></td> <td><font size="-1">水</font></td> <td><font size="-1">木</font></td> <td><font size="-1">金</font></td> <td><font size="-1">土</font></td> </tr> <?php //当月の1日の曜日 $startwday = date("w", mktime(0, 0, 0, date("n"), 1, date("Y"))); //当月の最後の曜日 $endmday = date("t"); //当月の1日までの空欄 for($i = 0 ; $i < $startwday ; $i++) { if(($count % 7) == 0) { echo "<tr>"; } echo "<td> </td>"; $count++; } //●日付の書き込み for($i = 1 ; $i <= $endmday ; $i++) { if(($count % 7) == 0) { echo "<tr>"; } if($i == date("j")) { //☆本日の場合、背景色を黄色にする☆ echo "<td bgcolor=\"FFFF00\">"; } else { echo "<td align=\"center\ bgcolor=\"FFFF00\">"; } if(($count % 7) == 0) { //☆日曜日の場合、文字色を赤色にする☆ echo "<font color=\"red\">"; } elseif(($count % 7) == 6) { //☆土曜日の場合、文字色を青色にする☆ echo "<font color=\"blue\">"; } echo "$i"; if(($count % 7) == 0 or ($count % 7) == 6) { echo "</font>"; } echo "</td>"; $count++; if(($count % 7) == 0) { echo "</tr>\n"; } } //当月の最終日以降の空欄 for( ; ($count % 7) != 0 ; ) { echo "<td> </td>"; $count++; if(($count % 7) == 0) { echo "</tr>\n"; } } ?> </table> </body> </html> アドバイスを宜しくお願い致します。

    • 締切済み
    • PHP
  • phpでのアンケート編集

    社員旅行のアンケート編集のphpです。 (???)のところがどうしてもわからなくて上手く動きません。 どなたか回答お願いします。 <?php session_start(); ?> <html> <head> <body> <font size=5><b>社員旅行アンケート集計</b></font><br><br> <?php $db = mysql_connect("localhost","",""); mysql_select_db("syain_db"); $query = "SELECT * FROM trvl_t"; $result = mysql_query($query); if(mysql_num_rows($result) == 0) print"<br>無し"; else{ for($i = 0;$i <4;$i++) $cnt[$i] = 0; while($row = mysql_fetch_array($result))(???) mysql_close($db); echo "<table border =1>"; echo "<tr><td>旅行先</td><td>希望者数</td></tr>"; for($i=0;$i<4;$i++){ echo "<tr align=center>"; if($i == 0) echo "<td>北海道</td>"; elseif($i == 1) echo"<td>沖縄</td>"; elseif($i == 2) echo"<td>韓国</td>"; elseif($i == 3) echo"<td>香港</td>"; echo "<td>".(???)."</td>"; echo"</tr>"; } echo "</table>"; } ?>

    • ベストアンサー
    • PHP
  • 縦カレンダーの曜日に色づけ

    <?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

専門家に質問してみよう