• 締切済み

PHPとPostgreSQLを使用した勤怠管理システム

現在、PHPとPostgreSQLを使用して勤怠管理システムを 作成しているのですが、解らない事があるので質問させて下さい。 この手の事で色々と質問しているのですが、ツギハギだらけでDBにも 負荷をかけてしまうような作りになってしまったので 一から作り直しているところです。 ご教授の程、よろしくお願いします。 1)今月15日から来月14日までの曜日つき日付を取得する 2)労働時間を入力してチェックボックスを押せば、日付と労働時間がDBに登録される 3)チェックを押したとき、DBに該当データがあれば、INSERT。 4)チェックを押したとき、DBに該当データがなければ、UPDATE という処理を行いと思います。 以下に以前のコードを記載します。 $weekday = array("日","月","火","水","木","金","土"); //曜日の配列作成 $now = time(); // UNIXタイムスタンプを取得 $year = date('Y', $now); // 年を指定された書式で書式化する $month = date('m', $now); // 月を指定された書式で書式化する $day = date('d', $now); // 日を指定された書式で書式化する // 現在の日付が15日未満だったら、月をマイナスする if($day < MONTH_HARF){ $month--; } // 指定した月の日数を取得 $numOfDays = date('t', mktime(0, 0, 0, $month, 1, $year)); // 日付が指定した月の日数以下ならば for($d = 0; $d < $numOfDays; $d++){ // $dateに15日から末日+14日までの値をyyyy年mm月dd日の形で代入 $date = date("Y年m月d日", mktime(0, 0, 0, $month, 15+$d, $year)); // $wに0~6までの数字に対応した曜日を代入 $w = date("w", mktime(0, 0, 0, $month, $d+1, $year)); // $ymddateに15日から末日+14日までの値をyyyymmdの形で代入 $ymddate = date("Ymd", mktime(0, 0, 0, $month, 15+$d, $year)); //1行の定義:日付(曜日) $line = $weekday[$w]; // 読み込まれた休日と表示されている日付が同じならば、$wに0を代入(日曜日) if($holiday_plasticOperation == $date){ $w = 0; } switch($w){ case 0: //日曜日の文字色 $style = "color:#C30;"; break; case 6: //土曜日の文字色 $style = "color:#03C;"; break; default: //月~金曜日の文字色 $style = "color:#333;"; } echo "<TD WIDTH=100>$date</TD><TD title='$yy'><span style=.$style.>$line</span></TD>"; echo "<TD><INPUT TYPE='text' NAME='work_time[$ymddate]' VALUE='$work_Time' TABINDEX=1 SIZE='7' STYLE='ime-mode: inactive;'></TD>"; echo "<TD><INPUT TYPE='CHECKBOX' NAME='work_check[]' VALUE='$ymddate' TABINDEX=2></TD>"; } どうか、ご教授の程よろしくお願いします。

  • PHP
  • 回答数5
  • ありがとう数3

みんなの回答

回答No.5

こんにちは。 DBに負担をかけない(当然最終的なパフォーマンスも)と言う事がメインでしょうから、その点だけ。 私もPostgreSQLで凝った作りでパフォーマンスが一気に落ちてしまい苦労した事があります。たくさんのクエリが一度に集中すると、まったくパフォーマンスが落ちてしまう、と言う事も経験しました。 私がとった対処方法としては、DBはクエリの度にHDDにアクセスしますので、クエリ回数を減らす事をまず主眼に置き、作りなおしました。 恐らくサーバのメモリ環境はそれほどプアでないでしょうから、PHP側で出来るだけ多くの処理をさせてしまうようにします。 一ヶ月分の該当データをまずSELECTして、PHPのメモリ上に置きます。 その後POSTされてきたデータの内容を見て、クエリをまとめます。 最後に一気にまとめたクエリを実行します。 とりあえずこうすれば二度のクエリで実行出来る事になるでしょうから、DBがロックされている時間も僅かだと思います。 私は全体的な見直しで数分かかっていた処理を数秒まで縮める事が出来ました(これは前任者のプログラミングがいかに悪いか、と言う事にもなりますけどね)。 また、これはもっと根本的な設計に関わるでしょうが、不必要なデータのお蔵入り、確定データのテーブル作成等も重要な事だと思います。 サーバの環境をいじれるのなら、PostgreSQLのチューニング(メモリ環境やvacum等)も大事です。 参考まで。

  • gogo-tea
  • ベストアンサー率75% (25/33)
回答No.4

>という形になると思いますが、どのように実現すればよいか解らず困っております。 実現する方法がわからない部分は具体的にどの部分なのかというのがいまいちはっきりしないのでお答えしにくいのですが・・・、 TDをechoしている部分を見ていて思ったのですが、work_checkのvalueは $ymddateではなく$dとかにしてチェックの入っている位置としての配列にしてみてはどうでしょうか。 work_timeも添え字をつけずにwork_time[]としたとして 仮にデータが --------------------- 日付  チェック 労働時間 20070415  レ    8  20070416      9 20070417  レ    7  20070418  レ    10  20070419      12 --------------------- とすると $work_check = array([0]=>0 [1]=>2 [2]=>3) $work_time = array([0]=>8 [1]=>9 [2]=>7 [3]=>10 ・・・) という形で受け取れるかと思うのであとは日付も同じように順番に $arrdate = array([0]=>20070415 [1]=>20070416 ・・・) といった配列を作れば、 14~30日のどこにチェックが入ってPOSTされたかわかるので ループさせながらSQLでデータがあるかチェックし、INSERT・UPDATEの処理をする。 という案はどうでしょうか。 あまりスマートな方法ではないですし、実際に動かしていないので処理抜けがあるかもしれませんが。。

  • gogo-tea
  • ベストアンサー率75% (25/33)
回答No.3

チェックボックスを使うということは、チェックされた複数行をボタン1つでいっぺんに追加・更新を行うということですよね? idはこのページを表示している時点で取得できてるはずなのでそのままhiddenでPOSTなりセッションなりで次のページで取得できますよね。 日付の取得方法がわからないというのは現在のページでは >echo "<TD><INPUT TYPE='CHECKBOX' NAME='work_check[]' VALUE='$ymddate' TABINDEX=2></TD>"; と書かれているので、次のページで受け取る方法がわからないということでしょうか? だとすれば次のページの先頭にでも if(isset($_POST['work_check'])){ $chk = $_POST['work_check']; print_r($chk); } のようにしてチェックされた日付がちゃんと受け取れるか確認してみたらどうかと思います。 ちなみにwork_check[]という形でPOSTするとwork_checkは array(work_check[0],work_check[1],work_check[2]) のような配列になると思うので、受け取るページ側での処理も配列として受け取って配列として処理をしなければいけないと思います。

destonias
質問者

補足

gogo-tea様、いつもお世話になっております。 >複数行をボタン1つでいっぺんに追加・更新を行うということですよね その通りでございます。 労働時間を入力し登録ボタンを押せば、そのままのページに再表示されるように作ろうと思っております。 チェックボタンを押して登録ボタンを押したとき、自分の考えてるロジックは PHP側で count("調べるカラム")とし if(~){ // SELECTして該当データがあればUPATE } else { SELECTして該当データがなければINSERT } という形になると思いますが、どのように実現すればよいか解らず 困っております。

noname#26650
noname#26650
回答No.2

> DBの該当データの有無によってINSERT、UPDATEを使い分ける DBに該当データがあるかないかを判断する方法はおわかりですか? if (該当データあり) {   insert文を発行; } else {   update文を発行; } という処理になるであろう、ということはおわかりですか? 上に書いた処理をphpでどのように書けばよいかはおわかりですか?

destonias
質問者

お礼

miraiya様、お世話になっております。 質問ばかりで申し訳ございません。 DBに該当データがあるかないかを判断する方法 $sql = "SELECT * FROM work_tbl WHERE id = 'ログインしている人のID', day = '日付?';"; $result = pg_query($con, $sql) if(result) {   pg_query($con, "INSERT ~"); } else {   pg_query($con, "UPDATE~"); } という処理になると思います。 しかし、肝心のチェックをつけた箇所だけINSERT、UPDATEするという処理 PHPで表示させている日付の取得方法などが解りません。 解りにくい質問ではあると思いますが、ご教授・参考になる考え方など… お待ちしております。 よろしくお願いします。

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.1

で、質問は何でしょう?

destonias
質問者

補足

Bonjin様、失礼しました。 DBに大きな負荷をかけてしまい、壊しそうになっていたので 頭が混乱しておりました… 当方が行いたい処理として -------------------------------- 日付 | 労働時間 | チェックボックス -------------------------------- というフォームがあり、日付はPHPで表示しております。 労働時間を入力し、 チェックを押したとき、DBに該当データがあれば、INSERTを… チェックを押したとき、DBに該当データがなければ、UPDATEを… という処理を行いたいのですが、DBの該当データの有無によってINSERT、UPDATEを使い分ける知識が無いため、皆様のお力をお借りしたいと思っております。

関連するQ&A

  • PHPとPostgreSQLを使用した勤務管理

    こんにちは、みなさん宜しくお願い致します。 現在PHPとPostgreSQLを使用して勤務管理を作成しているのですが またまた躓き自分ではこれ以上解決出来なくなったので、再度こちらにて質問させて頂きます。 ※自分が行おうとしている処理一覧です 下記のようなレアウトのテーブルがあります。 ---------------------------------------- 日付(曜日) | 労働時間 | チェックボックス | 登録ボタン  当月15日    |  翌月15日 ---------------------------------------- となっております。 1:日付表示は教えて頂いた処理で実現する事が出来ました。 <?php $now = time(); $year = date('Y', $now); $month = date('m', $now); $day = date('d', $now); if ($day < 15) $month--; $numOfDays = date('t', mktime(0, 0, 0, $month, 1, $year)); for ($d = 0; $d < $numOfDays; $d++){ echo date("Y-m-d(D)", mktime(0, 0, 0, $month, 15+$d, $year)). "\n"; } ?> 2:労働時間を入力し、登録ボタンを押せば日付と労働時間がDataBaseに登録される様にしたい 3:出来るならば登録をチェックボックスが押されている項目だけをDatabaseに登録するようにしたいのです。 しかし自分が試した限りではcheckboxを押した項目だけを取得させDatabase に登録させるという処理が出来ませんでした。 それどころか、労働時間を入力し登録ボタンを押せば労働時間を入力した 日付と労働時間がDataBaseに登録される処理すら出来ない状態です。 ご教授をお願いしたく質問させて頂きました。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP 余分に出来たタグを消したい

    PHP初心者です。 ただ今カレンダーを作成しております。 コードは以下です。 <?php $d=isset($_GET['d'])? $_GET['d']:date("Y-n-d"); list($year,$month,$day)=explode("-",$d); $prev=date("Y-n-d",mktime(0,0,0,$month-1,1,$year)); $next=date("Y-n-d",mktime(0,0,0,$month+1,1,$year)); $timestamp = mktime(0,0,0,$month,1,$year); $fd=date("w",$timestamp); $ld=date("t",$timestamp); ?> <table> <tr> <th><a href="?d=<?php echo$prev; ?>">←</a></th> <th colspan="5"><?php echo ("<h1>".$year."年".$month."月</h1>"); ?></th>   <th><a href="?d=<?php echo$next; ?>">→</a></th> </tr> <tr> <th class="sun">日</th> <th>月</th> <th>火</th> <th>水</th> <th>木</th> <th>金</th> <th class="sat">土</th> </tr> <tr> <?php $offset = $fd; // while($fd--){ //$y ++; // 空セル文曜日を増やす $s .= "<td></td>\n"; } for($i=1; $i<=$ld; $i++){ $tmp = $offset + $i; //$tmpを$offset(1日までの空セル) と $i(31日)を足したものにする $s.="<td>$i</td>\n"; //$sに日数とセルを追加 if($tmp % 7 ==0){ //$tmp(空セル+その月の日数)を7で割りあまりが0すなわち土曜日まできたら $s.= "</tr>\n<tr>\n"; //</tr>で改行をいれる } } $y=0; for($i=1; $i<=$tmp; $i++){ //$tmp(空セル+その月の日数)になるまで if($y % 7 == 0){ //7倍数になったら0にリセットする $y = 0; } $y++; //リセットされた残りの曜日 } $r=7-$y; $y=0; while($r--){ $s.='<td></td>'; } for($i=1; $i<=$tmp; $i++){ if($tmp % 7 == 0){ $s.="</table>\n"; break; }else{ $s.="</tr></table>\n"; break; } } echo $s; ?> 一見出来ているようですが、最終日が土曜日になると余分な<tr>が入ってしまいます。 原因として、 if($tmp % 7 ==0){ $s.= "</tr>\n<tr>\n";} と入れてあり、土曜日に7がくる(7で割り切れる数字で終わる)であるとは理解しているのですが、どうすれば、「最終セルに最後の日が来たときに<tr>をいれない」といった命令の仕方がわかりません。 素人ですので、分かりやすく解説していただけると嬉しいです。 よろしくお願い致します。

  • PHP カレンダー

    php初心者です。HTMLにカレンダーのソースを、そのまま下記のHPから埋め込んだのですが、表示されません。なぜでしょうか? http://shanabrian.com/web/php_calendar.php --------------HTML <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>index</title> <link href="style.css" rel="stylesheet" type="text/css" /> </head> <body> <?php function calendar($year, $month) { //月末 $l_day = date("j", mktime(0, 0, 0, $month + 1, 0, $year)); //初期出力 $tmp = <<<EOM <table cellspacing="0" cellpadding="0" border="0" class="calendar"> <caption>{$year}年{$month}月</caption> <tr> <th class="red">日</th> <th>月</th> <th>火</th> <th>水</th> <th>木</th> <th>金</th> <th class="blue">土</th> </tr>\n EOM; //月末分繰り返す for ($i = 1; $i < $l_day + 1;$i++) { //曜日の取得 $week = date("w", mktime(0, 0, 0, $month, $i, $year)); //曜日が日曜日の場合 if ($week == 0) { $tmp .= " <tr>\n"; } //1日の場合 if ($i == 1) { $tmp .= str_repeat(" <td>&nbsp;</td>\n", $week); } if ($i == date("j") && $year == date("Y") && $month == date("n")) { //現在の日付の場合 $tmp .= " <td class=\"today\">{$i}</td>\n"; } else { //現在の日付ではない場合 $tmp .= " <td>{$i}</td>\n"; } //月末の場合 if ($i == $l_day) { $tmp .= str_repeat(" <td>&nbsp;</td>\n", 6 - $week); } //土曜日の場合 if($week == 6) { $tmp .= " </tr>\n"; } } $tmp .= "</table?>\n"; return $tmp; } ?> <?= calendar(date("Y"), date("n")) ?> </body> </html> ---------------------CSS table.calendar { border-collapse:collapse; border:1px #666 solid; text-align:center; font-size:12px; } table.calendar td, table.calendar th { padding:5px; border:1px #666 solid; } table.calendar th { background:#eee; } table.calendar td.today { background:#999; color:#fff; } table.calendar .red { color:#f33; } table.calendar .blue { color:#33f; }

    • ベストアンサー
    • PHP
  • PHPでカレンダー

    PHPを使ってカレンダーを作成しました。が、コードの意味が良く分かりません。 コードは以下の通りです。 <?php if($_GET['num']==''){ $today_year = date("Y"); //4桁の西暦年 $today_month = date("n"); //1~12の月 }else{ $timestamp = mktime(0,0,0,date("n")+$_GET['num'],date("d"),date("Y")); $today_year = date("Y",$timestamp); $today_month = date("n",$timestamp); //1~12月 } $current = mktime(0,0,0,$today_month,1,$today_year); $first_day = date("w",$current); //1日の曜日を0~6に当てはめる $last_day= date("t",$current); //月の日数 ?> <html> <head> <title>カンレンダー</title> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> </head> <body> <h1><?php print (date("Y年m月",$current)); ?>のカレンダー</h1> <table border="1" cellpadding="0" cellspacing="2"> <tr> <th>日</th><th>月</th><th>火</th><th>水</th><th>木</th><th>金</th><th>土</th> </tr> <?php for($i=1; $i<=$first_day+$last_day; $i++){ if($i%7==1){print ("<tr>");} if($i>$first_day){ print ("<td>".($i-$first_day)."</td>"); }else{ print ("<td>&nbsp;</td>"); } if($i%7==0){print ("</tr>");} } ?> </table> </body> </html> for以降の部分が良く分かりません。よろしくお願いします。※上記のスクリプトで正しく表示されることは確認済です。

    • 締切済み
    • PHP
  • php テーブルの項目のループを分ける方法

    phpで勤務管理のプログラムを書いています。 テーブルの項目を日付($date)、曜日($youbi)、区分($kubun)、開始($start)、終了($end)、休憩($rest)として 日付と曜日は下記のループ分で日付に曜日を紐付けてループさせて 出来ています。(16日~翌月15日)ただ、区分、開始、終了、休憩は入力画面から取ってくるようにしているのですが、同じデータが日付けのループ分表示されてしまします。 日付け・曜日のループとデータ部分(開始・終了・休憩)のループは 別にしたいのですが可能でしょうか? <?php $kubun=$_POST["kubun"]; $start=$_POST["start"]; $end=$_POST["end"]; $rest=$_POST["rest"]; if($end>22.00){ $sasa=$end-22; $sa=""; }elseif($end<=22.00){ $sa=$end-$start-$rest-8; $sasa=""; } $youbi = array("日","月","火","水","木","金","土"); $countdate=date('t',mktime(0,0,0,11,1,2021)); for($i=0;$i<$countdate;$i++){ $d=mktime(0,0,0,11,16+$i,2021); echo '<tr>'; print '<td align="right">'.date("d",$d).'</td>'; echo '<td align="right">'.$youbi[date("w",$d)].'</td>'; echo '<td align="right">'.$kubun.'</td>'; echo '<td align="center">'.$start.'</td>'; echo '<td align="center">'.$end.'</td>'; echo '<td align="center">'.$rest.'</td>'; ?>

    • ベストアンサー
    • PHP
  • 明日の日にちを表示するときは

    下記のように1日後の日付を常に表示するときは どこを変えればいいのでしょうか? <TD>※明日は<script language="JavaScript"> <!-- // 訪問日表示 now = new Date(); year = now.getYear(); if (year < 2000) year = year + 1900; month = now.getMonth()+1; day = now.getDate(); wk = new Array("日","月","火","水","木","金","土"); document.write("有効期限:"+year+"年"+month+"月"+day+"日"); // --> </script>

  • PHP初心者です。

    PHP初心者です。カレンダースケジュールを作りたいのですが、以下について質問させていただきます。 selectボタンで2010~2020までのカレンダーを表示させることは出来たのですが、スケジュール欄にテキストボックスを作り、スケジュールを保存したいのですが、この部分でつまづいています。 PHPを勉強し始めて日が浅いのですが、宜しくお願い致します。 どなたかご教授下さい。 <html> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <body> <form method="post" action="<? print($PHP_SELF); ?>"> <select name="year"> <? for($nen=2010 ; $nen<2020; $nen++){ $kotosi=date("Y"); if($kotosi==$nen){ print("<option value='".$nen."' selected>".$nen."</option>"); }else{ print("<option value='".$nen."'>".$nen."</option>"); } } ?> </select> 年 <select name="month"> <? for($tuki=1 ; $tuki<13; $tuki++){ $kongetu=date("n"); if($kongetu==$tuki){ print("<option value='".$tuki."' selected>".$tuki."</option>"); }else{ print("<option value='".$tuki."'>".$tuki."</option>"); } } ?> </select> 月 <input type="submit" value="表示"> </form> <table border> <tr><th>日付</th><th>曜日</th><th>スケジュール</th></tr> <? $year=$_POST["year"]; $month=$_POST["month"]; $wstr=array('日','月','火','水','木','金','土'); for($i=1;checkdate($month,$i,$year);$i++){ $t=mktime(0,0,0,$month,$i,$year); $w=date("w",$t); print("<tr><td>".$i."</td><td>".$wstr[$w]."</td><td><input type='text' size='30'><input type='submit' value='Buttom'></td></tr>"); } ?> </table> </body> </html>

    • ベストアンサー
    • PHP
  • PHPとPostgreSQLを使用した労働管理システム

    自力では解決出来ず、どうしても解らない事があるので質問させて 頂きたいと思います。ご助言ご助力お願い致します。 題名にもあるように現在PHPとPostgreSQLを使用して労働管理システムを構築しようと考えています。 ・以下がWebのレイアウトとなっています ----------------------------------------------------- 日付(曜日) | 労働時間 | 遅刻時間 | 残業時間| その他 | ----------------------------------------------------- と、このようなレイアウトで労働時間・遅刻時間・残業時間などを 入力する画面を作成したのですが、肝心の曜日の出し方が解りません。 表示させたいのは当月の15日~来月の14日までを曜日含んだ日付です。 ※例えば3月であれば3月15日~4月14日までを曜日を含んだ形で 出力させたいのです。 4月15日になれば4月15日~5月15日が読み込まれるようにしたいです。 このような処理はPHPで可能でしょうか? ご助言よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • phpでの日付の取得について

    PHPでサイト内に、1週間分の日付を表示させ 日付ごとに指定したページに移動するよう、リンクを張りたいと思っております。 以下で日付は表示できたのですが 日付と日付の間にスペースを入れたいです。 ※可能であれば曜日も表示させたいです。 ↓現在、このように表示されます。 1/181/191/201/211/221/231/24 また、日付ごどに指定サイトへリンクも貼りたと思ってます。 <?php $nday = mktime(); for($i=0;$i<7;$i++){ print date("n/j",mktime(0,0,0,date("m",$nday),date("d",$nday)+$i,date("y",$nday)))."<td>"; } ?> どなたか、ご教授いただけないでしょうか? 以上、宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • 配列が受け取れないのはなぜなのでしょうか?

    カレンダーの日付にリンクをさせようとしているのですが、上手くできません。 リンクさせたい日付をforeachで配列として渡そうと思うのですが、 受け取ってくれません。 なぜ、受け取ることができないのでしょうか? 何が間違っているのでしょうか。 どなたかご指摘、アドバイスなどお願いします。 以下コードです。 <?php $qry = $_SERVER['QUERY_STRING']; if( ereg( "^[0-9]{8}", $qry ) ){ $today = getdate( mktime( 0, 0, 0, substr( $qry,4,2 ), substr( $qry,6,2 ), substr( $qry,0,4 ) ) ); }else{ $today = getdate(); } $f_today = getdate( mktime( 0, 0, 0, $today[mon], 1, $today[year] ) ); $prev_month = date( "Ymd", mktime( 0, 0, 0, $today[mon], 0, $today[year] ) ); $next_month = date( "Ymd", mktime( 0, 0, 0, $today[mon]+1, 1, $today[year] ) ); <table width=170><tr><td> <table width=100%> <tr><td colspan=7><a href="?<?= $prev_month ?>">≪ </a><?= $today[year] ?>年<?= $today[mon] ?>月 <a href="?<?= $next_month ?>"> ≫</a></td></tr> <tr><td>日</td><td>月</td><td>火</td><td>水</td><td>木</td><td>金</td><td>土</td></tr> <tr> <?php for ( $i=0; $i<$f_today[wday]; $i++ ) { echo "<td></td>\n"; } $day = 1; while( checkdate( $today[mon], $day, $today[year] ) ){ $link = sprintf( "%4d%02d%02d", $today[year], $today[mon], $day ); if( $link == 20081014 ){ //← 日付を指定※ここが問題の箇所です。 echo "<td><a href=?date=$link\">$day</a></td>\n"; }else{ echo "<td>$day</td>\n"; } if( $f_today[wday] == 6) echo "</tr><tr>"; $day++; $f_today[wday]++; $f_today[wday] = $f_today[wday] % 7; } if( $f_today[wday] > 0 ){ while( $f_today[wday] < 7 ) { echo "<td> </td>\n"; $f_today[wday]++; } } else { echo "<td colspan=7></td>\n"; } ?> </tr> </table> </td></tr></table> 下記のように日付を配列にするとダメです。 $day = 1; //以下を変更 $data = array( "200810005", "200810010", "20081011", "20081015", "20081025", "20081030" ); foreach( $data as $value ) { $val = $value; while( checkdate( $today[mon], $day, $today[year] ) ){ $link = sprintf( "%4d%02d%02d", $today[year], $today[mon], $day ); if( $link == $val ){  // ← 配列で代入※配列として受け取ってくれない。 echo "<td><a href=?date=$link\">$day</a></td>\n"; }else{ echo "<td>$day</td>\n"; } if( $f_today[wday] == 6) echo "</tr><tr>"; $day++; $f_today[wday]++; $f_today[wday] = $f_today[wday] % 7; } } ↑ここまで なぜ、できないのかが分からないので、色々試しても上手くいきません。 宜しくお願いします。

    • ベストアンサー
    • PHP