2008年9月7日日曜日

ヘテムルのphp5 で ケースケのdata を使って予定表示スクリプト


<?php
$logdir = "./data/"; //データフォルダのパスを指定
$year = date("Y"); //年
$month = date("m"); //月
$nextmonth = date("m",strtotime("+1 month"));
$nextyear = date("Y", strtotime("+1 year"));
$day = date("d"); //日
$logpath = $logdir.$year.$month.".txt"; //上のふたつを直結してログファイルのパス作成
//===============================================
//■表示処理
//===============================================
$stamp = strtotime("$year-$month-$day");
$date = getdate( $stamp );
$wday = array( '(日)', '(月)', '(火)', '(水)', '(木)', '(金)', '(土)' );
$week = $wday[$date['wday']];

if( $month == 12 )//今月が12月だったとき
{
$nextmonth = 1; //翌月は1月
$nextyear = $year + 1; //来年となる
}
else //12月じゃない場合
{
$nextmonth = $month + 1;
$nextyear = $year;
}
$nextfilename = sprintf( "%04d%02d.txt", $nextyear, $nextmonth );//nextfilenameを整形
$nextpath = $logdir.$nextfilename;

// get_include_contents()関数
function get_include_contents($filename) {
if (is_file($filename)) {
ob_start();
include $filename;
$contents = ob_get_contents();
ob_end_clean();
return $contents;
}
return false;
}


//===============================================
//■検証開始
//===============================================

if (file_exists($logpath)) // 今月のファイルがある
{
$string = get_include_contents( $logpath ); // 読み込みファイル
// SJIS("ASCII,JIS,UTF-8,EUC-JP,SJIS")からUTF-8に変換
$logpathdoc = mb_convert_encoding($string, "UTF-8", "auto");
$lines = explode("n", $logpathdoc);
foreach ($lines as $line) {
$value = trim( $line ); // 改行を削除
$value = str_replace( '<br>', '&nbsp;', $value );//改行をスペースに置き換え
list( $daydata, $plan ) = explode( "t", $value );//スペースで分割
$daydata += 0; // 日付の前の数字をとる
$day += 0;
if($day == $daydata) // 今日がある
{
print("<em>本日の予定です!</em></br>");
print("<b>".date('n')."月".$daydata."日&nbsp;".$week."</b>
<h6 align="center" class="doc">".$plan."</h6>");
break;
}
if($day < $daydata) //将来がある
{
print("<em>各種イベントやセミナーがあります。お気軽にお問い合わせください。<em></br>");
print("<b>".date('n')."月".$daydata."日&nbsp;".$week."</b></ br><h6 align="center" class="doc">".$plan."</h6>");
break;
}

}//whileを抜ける
$date1 = array($daydata);
$date = date("j");
$key = array_search($date,$date1);
if ($key !== false) //今月の中にデータがあれば
{
brake;//ファイルをとじる
}
else {//今月にデータがなければ
if(file_exists($nextpath))//来月もある場合
{
$fp = fopen($nextpath,"r");
$str= fgets($fp);
$value = trim( $str ); //改行を削除 ファイルを扱うときは便利です
$value = str_replace( '<br>', '&nbsp;', $value );
list( $daydata, $plan ) = explode( "t", $value );
$daydata += 0; // 日付の前の数字をとる
print("<em>来月の予定です<em></br>");
print("<b>".$nextmonth."月".$daydata."日&nbsp;".$week."</b><h6 align="center" class="doc">".$plan."</h6>");
}
else //今月のみで来月がない
{
print("<h6 align="center" class="doc">自己分析に関する各種イベントやセミナーがあります。</h6>");
print("<h6 align="center" class="doc">お気軽に<a href="mailto:omosirosinri@tcn.zaq.ne.jp">メール</a>やお電話をどうぞ!</h6>");
}
}//今月にデータなしおわり
}//今月がある終わり
else if(file_exists($nextpath))//来月のみがある
{
$fp = fopen($nextpath,"r");
$str= fgets($fp);
$value = trim( $str ); //改行を削除 ファイルを扱うときは便利です
$value = str_replace( '<br>', '&nbsp;', $value );
list( $daydata, $plan ) = explode( "t", $value );
$daydata += 0; // 日付の前の数字をとる
print("来月の予定です<br>");
print("<b>".$nextmonth."月".$daydata."日&nbsp;".$week."</b>&nbsp;&nbsp;".$plan);
}//来月のみ終了
else//今月も来月もない
{
print("<h6 align="center">自己分析に関する各種イベントやセミナーがあります。</h6>");
print("<h6 align="center" class="doc">お気軽に<a href="mailto:omosirosinri@tcn.zaq.ne.jp">メール</a>やお電話をどうぞ!</h6>");
}
?>


おもしろ心理教室の予定表示

ヘテムルのphp4 で動かず、なぜか 外部ファイルのdata がsjif じゃないとケースケ じゃないと表示できないので、自分で苦労して書いた。

php pro に聞かずにすんだのは初めてではないだろうか?

外部ファイルとプログラムファイルのエンコードが違う場合は、このようにしてまずファイルをまるごとエンコードするファンクションを作って処理しないといけないらしい。

そうるすと、fget がうまく読み込めなくなるので、 explode で処理する。

意味が完全にわかっているわけじゃないのに、他のサイトを見ながら

内部エンコードUTF8のファイルからUTF-16のCSVファイルを読み込むとか
PHPで文字コード変換l とかを見て作った。

なんか、大変ですわ。サーバー引っ越しは。

お問合せフォーム

お名前 :
Email: (必須)
メッセージ: (必須)


0 コメント :

コメントを投稿



連絡フォーム

名前

メール *

メッセージ *

サイト内検索

View My Stats