- 締切済み
該当日のスケジュール内容を別ウィンドウで表示したいのですが…。
初めて質問させて頂きます。 プログラム初心者です。 今、課題でカレンダー作成(予定を表示させる)をしています。 現在の時点でカレンダーの指定日(予定のある日)にリンクをつけるところまでは出来たのですが、リンク先に移動した際に該当日の予定を表示させるのが出来なくて困っています。 (予定はCSVファイルからuploadしています。) どなたかお力を貸して頂けませんでしょうか??…orz。 宜しくお願いします。 ソースはこちらです。 …読みにくくてすみません(泣 <html> <head> <meta http-tquiv="Content-Type" content="text/html;charset=EUC-JP"> <title>カレンダー</title> </head> <form name="skl" method="post" action="yotei.php"> <body> <?php $year = date("Y"); $month = date("n"); $day = date("j"); $year2=$_GET["year"]; $month2=$_GET["month"]; $day2=$_GET["day"]; //先月、来月をクリックした場合の処理 if($year2!="" || $month2!="" || $day2!="") { if($year2!="") { $year = $year2; } if($month2!="") { $month = $month2; } if($day2!="") { $day = $day2; }else { $day = 1; } } // カレンダー表示(先月の場合) if($month==1) { $year3 = $year-1; $month3 = 12; }else { $year3 = $year; $month3 = $month-1; } // カレンダー表示(来月の場合) if($month==12) { $year4 = $year+1; $month4 = 1; }else { $year4 = $year; $month4 = $month+1; } // テーブルの作成 print "<tableborder='1'><tr>"; print "<td width='250' align='center' bgcolor='yellowgreen' colspan='7'>"; print "<a href=\"?year=$year3&month=$month3\"><<</a>"; print " ".$year."年".$month."月のカレンダー "; print "<a href=\"?year=$year4&month=$month4\">>></a></td></tr>"; print "<tr><td align='center' bgcolor='pink'>日</td>"; print "<td align='center' bgcolor='silver'>月</td>"; print "<td align='center' bgcolor='silver'>火</td>"; print "<td align='center' bgcolor='silver'>水</td>"; print "<td align='center' bgcolor='silver'>木</td>"; print "<td align='center' bgcolor='silver'>金</td>"; print "<td align='center' bgcolor='skyblue'>土</td></tr>"; $week = date(w,mktime(0,0,0,$month,1,$year)); for ($ix1 = 0 ; $ix1 < $week ; $ix1++) { print "<td align='center'>-</td>"; } // ファイルの読み込み $data = "date- data.CSV"; $file = fopen($data,"r"); while(!feof($file)){ $csv = fgets($file); $csv = mb_convert_encoding($csv, "EUC-JP", "SHIFT-JIS"); //csvファイルを配列に格納 $str = explode(",", $csv); for($day = 1 ; checkdate ($month,$day,$year) ; $day++) { if($str[1] == "$year/$month/$day") { $ymd[] = $str[1]; } } } for($day = 1 ; checkdate ($month,$day,$year) ; $day++) { print "<td align='center'"; if(($day+$week)%7 == 1 ) { print "bgcolor='pink'><font color='red'>"; }else if(($day+$week)%7 == 0 ) { print "bgcolor='skyblue'><font color='blue'>"; }else { print "bgcolor='wheat'>"; } for($i=0 ; $i<count($ymd) ; $i++) { if($ymd[$i] == "$year/$month/$day") { print "<a href=yotei.php>"; } } print "$day</td>"; if(($day+$week)%7 == 0 ) { print "</tr>"; } } fclose($file); $weekend = date(w,mktime(0,0,0,$month,$day,$year)); for ($ix2=0 ; $ix2<(7-$weekend) ; $ix2++) { if ($weekend != 0) { print "<td align='center'>-</td>"; } } print "</tr>"; print "</table>"; ?> <table border='0'> <tr> <td width="250"> <div align="center"> <input type="button" value="ファイル参照画面へ戻る" onClick="location.href='upload.php'" name="button"> </div> </td> </tr> </table> <br><br> </body> </form> </html>
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- dell_OK
- ベストアンサー率13% (776/5747)
単純に予定を表示するだけなら、このような方法があります。 私の環境では、投稿されたソースで正しく動作していないように見えましたので一部変更しますが、それが期待している動作と言うわけではありません。 また、CSVの内容がどのようなものかわからないので、以下のように設定します。 (不明な項目),(日付),(予定内容) 0,2008/11/1,2008年11月1日の予定 また、1日の予定内容は、すべてその1日に書かれていると設定します。 つまり、 0,2008/11/1,2008年11月1日の予定、その1 0,2008/11/1,2008年11月1日の予定、その2 と言うようなデータはなく、 0,2008/11/1,2008年11月1日の予定、その1、その2 となっている。 以下、追加変更ソース。 $ymd[] = $str[1]; ↓この行を追加。 $ymd[] = $str[1]; $yotei[] = $str[2];//予定内容を格納する print "<a href=yotei.php>"; ↓この行を変更追加。 $yotei_str = urlencode($yotei[$i]); print "<a href=yotei.php?yotei=$yotei_str>$day</a>";//予定内容をURLで引き渡す ※このままですと、予定がある日の日付が2回表示されますので注意。 投稿ソースでは、</a>で閉じていないためだと思いますが、私が期待する動作をしていませんのでつぎはぎな変更をしています。 以下 yotei.php のソース。 <html> <head> <meta http-tquiv="Content-Type" content="text/html;charset=EUC-JP"> <title>カレンダー 予定</title> </head> <body> <?php $yotei_str = $_GET["yotei"]; echo $yotei_str; ?> </body> </html> あまりいい方法ではありませんが、表示するだけなら、これでできると思います。 他には、セッション変数を使ったり、日付をURLで引渡してyotei.phpで再度CSVを読んでその日の内容を探して表示する、などです。
お礼
dell_OK様 ご教授誠にありがとうございます。 まさに期待通りの結果が返ってきました!! 感動です☆★☆★ 本当にありがとうございました♪♪