Webアプリケーションを作成する場合、Webサーバーというサービス上でPHPを動作させる必要があります。
PHPは、前回インストールしているので今回はWebサーバをインストールしましょう。

Webサーバのインストールの詳細は下記の記事を参考にするといいでしょう。
http://pocketstudio.jp/log2/2007/01/windows_apache_224_php_520.html

WebサーバApache(アパッチ)がインストールできたら、もう一度PHPのインストーラを起動し、PHPをWebサーバで動作させるように”Web Server Step Up”の項目を実行します。これで、Apacheのhttpd.confにPHPが動作できる設定が自動で記載されます。

一旦サーバを再起動すると、設定が反映されPHPがサーバ上で動作するようになっているはずです。

さて、上記のインストールを終えた時点で貴方のパソコンがWebサーバーとして機能しているわけです。
適当なWebブラウザを立ち上げて
“http://localhost”
と入力してください。正常にWebサーバが動作していれば何か表示されるはずです。

動作していない場合は、”404 Not Found”と表示されいるかもしれません。その場合は、インストール手順を見なおして下さい。

そして、貴方のパソコンのどこかのフォルダがWebサーバの公開フォルダとなっています。そのフォルダ内に置かれたファイルはWeb上に公開されると同じなので注意が必要です。もっとも、市販されているルータを通してインターネットに接続している場合はその心配はありません。(ルータがインターネットに公開されないようにしてくれています)

で、どこのフォルダが公開フォルダになっているかは”http.conf”の”DocumentRoot”という文字を検索するとそこに記載されています。

公開フォルダに前回作成したPHPを起き、Webブラウザで

“http://localhost/Hello.php”

と入力すると、前回コンソールで出力された文字がWebブラウザに表示されているはずです!

これで、Webアプリケーションを作成する開発環境は整いました!
お疲れ様です。

●スクリプトで、オブジェクトの色を変更することは出来ない。
 →オブジェクトの色を変更する場合は、シンボルに変換した後ツール上で色を変更するしか無い。
   ランダムに色を変える場合、フレーム別に色を変更し、そのフレームのジャンプさせることで色違いのパターンを作るしか無い。
   組み合わせがあった場合、全パターンの色違いを作ることになる。が、これ以外の実装方法は見つけられなかった。

配列の値からインデックス値を求めるスクリプトです。
関数フレームに記述して使ってください。

//配列のindexを返す
get_ar_ret_1 = "";
tmp = eval( get_ar_args_index add get_ar_args_name );
if( mblength( tmp ) > 0 ) {
	tmp_cnt = 1;
	for( n = 1; n < mblength( tmp ); n ++ ){
		if( mbsubstring( tmp, n, 1 ) eq "/" ){
			if( get_ar_ret_1 eq get_ar_args_node ) {
				get_ar_ret_1 = tmp_cnt;
				break;
			}
			tmp_cnt ++;
			get_ar_ret_1 = "";
		} else {
			get_ar_ret_1 = get_ar_ret_1 add mbsubstring( tmp, n, 1 );
		}
	}
}

使用例

ar_1="26/57/25/56/26/57/27/58/29/59/30/60/22/";

//配列変数名
get_ar_args_index = "ar_";
//1次元目のインデックス
get_ar_args_name = 1;
//2時限目のインデックス
get_ar_args_node = 30;

call( "get_ar" );
//結果取得
ret = get_ar_ret_1;

とあるFlashを作ったときに実装した関数です。
汎用的だと思っているので、メモっておきます。

関数フレームに下記のソースを記述

get_ar_ret_1 = "";
tmp = eval( get_ar_args_index add get_ar_args_name );
if( mblength( tmp ) > 0 ) {
	tmp_cnt = 1;
	for( n = 1; n < mblength( tmp ); n ++ ){
		if( mbsubstring( tmp, n, 1 ) eq "/" ){
			if( tmp_cnt == get_ar_args_node ) break;
			tmp_cnt ++;
			get_ar_ret_1 = "";
		} else {
			get_ar_ret_1 = get_ar_ret_1 add mbsubstring( tmp, n, 1 );
		}
	}
}

関数フレーム名を"get_ar"1とすると使用するときは

ar_1="26/57/25/56/26/57/27/58/29/59/30/60/22/";
ar_2="31/2/30/1/31/2/32/3/34/4/35/5/32/";
ar_3="36/7/36/7/37/8/38/9/40/10/41/11/55/";
ar_4="42/13/41/12/42/13/43/14/45/15/46/16/66/";
ar_5="47/18/46/17/47/18/48/19/50/20/51/21/77/";
ar_6="52/23/51/22/52/23/53/24/55/25/56/26/88/";

//配列変数名
get_ar_args_index = "ar_";
//1次元目のインデックス
get_ar_args_name = 2;
//2時限目のインデックス
get_ar_args_node = 3;
//上記の場合だと "ar_2" 配列の3番目の要素を取得
//結果は30となる
call( "get_ar" );
//結果取得
ret = get_ar_ret_1;

参照の追加と宣言は下記のコードを使う
using Excel = Microsoft.Office.Interop.Excel; //省略宣言

下記のマイクロソフトオンラインサポートのページを参照
http://support.microsoft.com/kb/302084/ja

“フレーム = 1 :Flash MX テキストフィールドインスタンス名”
なるエラーメッセージに数時間苦しめられました。。。

これが出るケースは、ダイナミックテキストに変数名をつけて、そのダイナミックテキストにプログララマブルにテキストを表示してやろうと代入したら上記のエラーメッセージになるというワケ。

原因はめちゃくちゃシンプル。ダイナミックテキストに”変数名”を付けるべきなのだが、実は”インスタンス名”に名前をいれているのが原因。ツールのプロパティ部分には目立つ部分にインスタンス名のプロパティがあるが、ここに名前を入れても意味が無い。下の方に隠れている変数名の部分に名前を設定すればOK!

ただ、それだけっす!

前回はインストールして終わりました。今回はPHPの簡単なプログラムを書いてみましょう!

PHPはテキスト処理が得意な言語です。そして、PHPの初期はC言語とPerlをかけ合わせてものになっています。なので、C言語を勉強した人も、Perlを勉強した人も、あまり抵抗なくPHPを描くことができると思います。(C言語から入ってきた人は変数宣言が無いということに気持ち悪いと思う人がおおいでしょうけども)

適当なフォルダに、”Hello.php”というテキストファイルを作って見ましょう。Hello.phpは、下記のような内容にします。

<?php
 echo ("Hallow!!");
?>

Hello.phpファイルに上記の内容をタイプして保存します。
そして、コンソールを立ち上げて、ファイルを作成したフォルダに移動します。
そこで、Hello.phpを起動してみましょう。

私の場合、Eドライブのe:\home\php_baseという場所にファイルを作成しましたので、コンソールでは下記のようにコマンドを発行します。

> e: [enter]
> dir e:\home\php_base [enter]
> php Hello.php [enter]
Hello

3行目を入力すると、4行目が自動的に出力されます。この4行目がPHPの実行結果になるわけです。
Hello.phpは、この”Hello”を出力するためのPHPのプログラムだったのです!!

とりあえず、これでPHPのプログラムを書き、動作させることに成功しました。

おめでとうございます。

今回はここまでです。

Webアプリケーションを作るプログラム言語は、Perl,PHP,Ruby,C,C++など様々な言語がある。一般的にはPHPですが、少し昔の主流はPerlでした。とにかく高速化が求められるニーズでは、C,C++が使用されています。
Rubyは、ビジネス業界ではあまり聞きません。たま~に、お客様が知っているからという理由で採用されることもありますが…

Webアプリケーションのほとんどは、サーバー上で動作するため、開発環境はUnix系のOS上で行われることになります。なので、Webアプリケーションを作成する場合Unixの知識も必要になってきます。

さて、とにかくPHPをインストールしてみましょう。最近では、Windows用のPHPも配布されているので、Windows環境でも容易にPHPを導入することができます。

PHPの入手は、下記のURLから行うことができます。とりあえずは、最新のバージョンのWindowsインストーラをダウンロードするといいでしょう。

http://php.net/downloads.php

ダウンロードと、インストールが終わったらWindowsのコンソール(コマンドプロンプト)を立ち上げてPHPが起動するかをやってみましょう。

コンソールを立ち上げて、
> php -v [Enter]

と入力すると。PHPのバージョンば出力され、PHPは終了します。
渡しの環境の場合は、このように出力されました。

C:\Users\AllUser>php -v
PHP 5.3.2 (cli) (built: Mar 3 2010 20:36:54)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

上記の出力結果から、PHPのバージョンは5.3.2がインストールされていることが分かります。
とにかく、これでPHPがインストールし、動作することが確認できました。

お疲れ様です。今回はここまで。

検索ダイアログにてを入力することで改行コードが入力されます。
が、画面には文字が表示されません。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using myExcel = Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;

namespace WindowsFormsApplication1 {
    public class excel {
        protected List _header;
        protected List> node;
        protected bool onLoad;

        ///

        /// データの有無を取得
        /// 

        public bool exists {
            get { return onLoad; }
        }

        ///

        /// データの件数取得
        /// 

        public int data_num {
            get { return node.Count; }
        }

        ///

        /// ヘッダ情報取得
        /// 

        public List header {
            get { return _header; }
        }

        ///

        /// データの取得
        /// 

        public List> data {
            get { return node; }
        }

        public enum readType:int{
            all = 0,
            brand,
            items
        }
        protected readType dataType;

        public excel(readType type) {
            _header = new List();
            node = new List>();
            onLoad = false;
            dataType = type;
        }

        ///

        /// エクセルファイルからデータを取得する
        /// 

        ///
ファイル名
        public void loadExcel(string name) {
            myExcel.ApplicationClass app = new myExcel.ApplicationClass();

            //非表示設定
            app.Visible = false;
            app.DisplayAlerts = false;

            //ブック取得
            myExcel.Workbook book = app.Workbooks.Open(name,
                Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                Type.Missing, Type.Missing, Type.Missing, Type.Missing);

            //シート取得
            myExcel.Worksheet sheet = (myExcel.Worksheet)book.Sheets[1];
            sheet.Activate();

            ReadExcel(sheet);
            //保存
            //book.Save();

            //保存したことにする
            book.Saved = true;

            //デストラクタ処理
            Marshal.ReleaseComObject(sheet);
            sheet = null;

            book.Close(Type.Missing, Type.Missing, Type.Missing);
            Marshal.ReleaseComObject(book);
            book = null;

            app.Quit();
            Marshal.ReleaseComObject(app);
            app = null;

            onLoad = true;
        }

        ///

        /// データの読み出し
        /// 

        ///
アクティブなシート
        private void ReadExcel(myExcel.Worksheet sheet) {
            myExcel.Range range;

            //ヘッダ読み出し
            int col = 1;
            range = (myExcel.Range)sheet.Cells[1, col];
            while (range.Text.ToString().Length > 0) {
                _header.Add(range.Text.ToString());
                col++;
                range = (myExcel.Range)sheet.Cells[1, col];
            }

            //データ読み出し
            int len = _header.Count;
            int row = 1;
            col = 0;
            while (row < 1000) {
                row++;
                range = (myExcel.Range)sheet.Cells[row, 2];
                string tmp = (string)range.Text;
                if (tmp.Length == 0) break;
                List p = new List();
                for (col = 1; col <= len; col++) {
                    range = (myExcel.Range)sheet.Cells[row, col];
                    tmp = (string)range.Text;
                    p.Add(tmp);
                }
                node.Add(p);
            }
        }
    }
}