先にDateChooserをカスタマイズした「FLASHカレンダー」を勉強したが、今回は、そこでも予告した簡単な日記である。 とてもシンプルなもので、メモ書き程度の日記を付けるのに使えるものである。 実用向きと言うよりは、Flashとphp間でのデータ交信の基本的なスクリプトを勉強するためのものといったほうが良いかもしれない。 データはログファイルに格納し、カレンダーの日付をクリックしたら、その日のデータに一致するものを表示できるようにしている。 ただ、同じ日付の書き込みが二度以上になってもデータは重複して蓄積していくが、表示されるのは最新のデータのみである。 また、データがいっぱいたまったらログファイルを分けるなどの処置は取っていない。 このSAMPLEをもとにいろいろ発展させていただければと思っている。 | ||||
SAMPLE(自由に書き込みができます。内容を削除したいときは、同じ日付で新たに空白を登録してください) | ||||
ステージの準備 | ||||
●390*190、背景色好みのステージ(12fps)を設定 ●コンポーネントのDateChooserをライブラリーにD&Dしておく ●新規シンボルの作成で、登録ボタンを作成し、リンケージ名をsubmit_btnとしておく |
||||
スクリプト(_root、FRAME1に記述) <修正追加、2008.12.18>同じ日付をクリックすると日付表示がundefinedになることを閲覧者から指摘があり、修正した。 |
||||
|
||||
FLASHスクリプトの説明 | ||||
●sdData.sendAndLoad("diary.php",rvData,"POST"); この既述も含めてphpとのデータ交信ははcgi とのやり取りと同じ(「FLASHとCGIとのやりとりの仕方」を参照)。 phpファイルへのパスを通すこと(ここでは同じディレクトリー) ●sdData.mode = mode; if (mode == "to") { 登録ボタンがクリックされたときは、phpにモード"to"で日付と日記内容のデータを送り、 phpがlogファイルにその日付と内容を記録する。 日付ボタンがクリックされたときは、phpにモード"from"で日付データのみを送り、phpからその日付の日記内容を受信 ●sdData.body = theDate+","+diaryBox.text; 日付と日記内容をカンマ区切りでphpに送る |
||||
phpスクリプト(diary.php を文字コードEUCで保存、ただし、文字コードはサーバー設定による) | ||||
|
||||
PHPスクリプトの説明 | ||||
●mb_internal_encoding("EUC-JP"); 文字コードはサーバーの設定に依存するので、それに合わせる。 ●$mode = $_POST["mode"]; POST受信のデータを変数に取り込む ●list($day,$diary) = split(",",$body); 受信データ$bodyをカンマ区切りで分けて、二つの変数(日付と日記内容)に分ける ●echo "&val=$diary&"; 変数$diaryを変数名 val でFlashに返す。 (この内容がFlashのテキストボックスに表示されるが、Flashが送った内容と同じなので、一見変化は見られない) ●$handle = fopen('diary.log', 'a'); 書き込みモードでファイルをオープン(ファイルがない場合は作成)。書き込みはファイルの終端から ●fputs($handle, "$day,$diary\n"); logファイルに書き込み ● $handle = fopen($file,'r'); $content = file($file); logファイルを読み込み専用で開き、配列として読み込んで、$contentに格納する ●foreach($content as $key) { $contentの各配列データ毎に ● if ($day == $body) { echo "&val=$diary&"; } もし、Flashから受信した日付データが、logファイルの日付データと一致したら、その日付の日記内容をFlashに返す |
||||
|
||||
HOME お勉強総リスト |