Webサーバ構築と、PHPを使ったサーバソフトの開発

Size: px
Start display at page:

Download "Webサーバ構築と、PHPを使ったサーバソフトの開発"

Transcription

1 HTML JavaScript プログラミングの 基 本 リレーショナルデータベースと SQL コマンドの 基 本 PHP プログラミングの 基 本 PHP+PostgreSql 連 携 プログラミングの 基 本 こんなことが 出 来 るようになります 1. インターネットを 含 めた Web の 仕 組 みが 理 解 できるようになります 2. HTML や JavaScript を 使 った Web プログラミングができるようになります 3. リレーショナルデータベースや SQL が 理 解 できるようになります 4. PHP や PostgreSql を 使 った Web サーバプログラミングができるようになります 5. 遠 隔 ログインやftpなどのような Web 関 連 基 本 操 作 ができるようになります 6. Web 上 で 公 開 されている 掲 示 板 やチャットなどの 仕 組 みが 理 解 できるようになります 7. IT 関 連 の 基 本 技 術 が 身 につきます <まえがき> 本 体 験 入 門 編 は PHP プログラミングを 中 心 に HTML,JavaScript PHP+PostgreSql 連 携 のプログラミ ングを 通 して Web システムとはどのようなものかを 体 験 して 頂 くことを 目 的 として 作 成 されたものです 特 に 本 編 は この Web 関 連 には 未 経 験 者 の 方 々を 対 象 としており Web 関 連 を 感 覚 的 に 理 解 して 頂 く 事 を 目 的 して 作 成 されたものです HTML,JavaScript PHP 及 び PostgreSql を 本 格 的 に 活 用 し システム 設 計 及 びプログラム 作 成 を 行 う 場 合 は もっと 踏 み 込 んだ 説 明 書 が 必 要 となりますので そのような 方 は 関 連 する 専 門 書 を 購 入 されることをお 勧 めします 1

2 目 次 第 1 章 Web ソフトウェアに 関 する 基 礎 知 識 1.1 パソコンで 各 種 のホームページが 参 照 できる 仕 組 みとは 1.2 サーバ 関 連 の 予 備 知 識 について 1.3 Web プログラム(HTML,JavaScript PHP)とはどんなものか 1.4 HTML,JavaScript, 及 び PHP を 理 解 する 上 での 予 備 知 識 1.5 各 種 のプログラミングを 行 う 為 の 予 備 知 識 第 2 章 HTML プログラミング 2.1 HTML プログラミングの 基 本 2.2 基 本 的 にタグの 構 文 2.3 基 本 的 なタグパラメータの 設 定 2.4 スタイルシートの 活 用 2.5 主 な HTML プログラミング 例 2.6 HTML による Web ページ 作 成 第 3 章 JavaScript プログラミング 3.1 JavaScript プログラミングの 特 徴 3.2 JavaScript プログラミングの 基 本 3.3 JavaScript プログラミング 例 3.4 JavaScript プログラムの 応 用 第 4 章 PHP プログラミング 4.1 PHP プログラミングの 特 徴 4.2 サーバ 側 及 びクライアント 側 で 動 作 するスクリプトプログラムの 検 証 4.3 基 本 的 な HTML,Java スクリプト PHP 組 み 合 わせプログラム 4.4 PHP 言 語 の 構 文 とプログラム 例 第 5 章 PHP と PostgreSql データベースの 連 携 プログラミング 5.1 データベースとファイル 編 成 5.2 SQL 言 語 によるデータベースアクセス 5.3 PHP から PostgreSql データベースをアクセスするライブラリ 5.4 データベース 関 連 のコマンド 2

3 5.5 psql データベースツールの 活 用 方 法 5.6 本 書 のサンプルが 想 定 するデータベースの 体 系 5.7 PHP 言 語 からデータベースをサクセスするプログラミング 第 6 章 Web を 理 解 する 上 での 予 備 知 識 6.1 プログラムの 分 類 6.2 ソフトウェアの 基 本 的 な 構 成 進 数 2 進 数 8 進 数 16 進 数 表 記 の 関 係 6.4 データの 型 宣 言 と 記 憶 形 態 6.5 オブジェクト 指 向 プログラミング 6.6 文 字 コードについて 6.7 暗 号 化 の 仕 組 み 6.8 コンピュータを 取 り 巻 く 技 術 の 進 化 第 7 章 最 終 課 題 7.1 スクリプトプログラミング 7.2 データベース 連 携 の 基 本 7.3 PHP と PostgreSql の 連 携 補 足 : 最 終 課 題 に 対 する 回 答 例 3

4 第 1 章 Web ソフトウェアに 関 する 基 礎 知 識 インターネット(ネットワーク)の 仕 組 みと その 上 で 各 種 のソフトウェアを 開 発 する 技 術 を 習 得 する 為 には いくつかの 用 語 と 内 容 を 理 解 する 必 要 があります 本 章 では これらの 概 要 を 簡 単 に 解 説 します なお 本 章 に 入 る 前 に Web ソフトウェア 全 般 の 抜 粋 版 である Web プログラミングの 体 験 編 により Web プログラミング 全 体 を 体 験 されることをお 勧 めします この 体 験 により 本 章 以 降 の 内 容 が もっと 分 かりやすいものになります 補 足 : 本 書 と Web プログラミングの 体 験 編 では 内 容 的 重 複 する 部 分 がありますが 復 習 と 内 容 補 足 の2 つの 側 面 から 本 書 は 解 説 を 行 っています 4

5 1.1 パソコンで 各 種 のホームページが 参 照 できる 仕 組 みとは インターネットは 世 界 規 模 のネットワーク 上 に 点 在 するサーバ 上 (プロバイダー 公 共 機 関 教 育 機 関 など)に 登 録 されている 情 報 を クライアントの 要 求 に 応 じて 提 供 する 仕 組 みにより 実 現 されています 勿 論 このサーバは 常 時 稼 動 状 態 であり しかもインターネットと 言 われるネットワーク 上 で 固 有 のアド レスを 持 っている 必 要 があります 例 えば 一 般 のユーザが 自 分 の HP をインターネット 上 に 開 設 したい 場 合 は 以 下 のような 手 順 を 踏 みます 1) インターネット 上 のサーバを 持 つプロバイダーから HP 開 設 用 の 場 所 を 借 ります ( HP 開 設 用 の 場 所 は レンタルサーバや 自 前 サーバでも 可 能 です) 2) ブラウザソフト(IE など)が 解 釈 できる 形 式 で プログラムを 作 成 ( 通 常 は HTML 形 式 )します 3) ftpなどの ネットワーク 上 でのファイル 転 送 用 ツールを 使 って プロバイダから 借 りた 場 所 に 作 成 したプログラムを 登 録 します (このプログラムはサーバ 上 で 動 作 する Web サーバソフトにより 管 理 されます) 4) 任 意 のクライアントから URL 形 式 ( 上 記 HP をインターネット 上 で 特 定 できる 形 式 です)で 上 記 の HP を 参 照 する 要 求 を 受 けると その HP を 管 理 するサーバは 要 求 された HP をそのまま 要 求 元 に 送 り 返 し ます (サーバ 上 のデータベース 等 をアクセスする HP であれば そのアクセスする 部 分 はサーバ 側 で 実 行 されます) 5) クライアント 上 のブラウザソフトは サーバから 送 られてきた HP(HTML 形 式 )を 解 釈 して 画 面 に 表 示 します 個 人 或 いは 企 業 がインターネット 上 で 直 接 サーバを 開 設 する 場 合 は インターネット 上 のアドレス(IP アドレス)を 取 得 し 独 自 のサーバを 開 設 することになります 勿 論 企 業 内 ネットワーク 上 にサーバを 構 築 する 場 合 も インターネット 同 様 にネットワーク 上 の 独 自 のアドレス(IP アドレス)を 取 得 し サー バを 開 設 することになります 本 コースでは このプロバイダが 提 供 するサーバ 或 いは 個 人 が 開 設 する 場 合 に 必 要 となるサーバ 上 で 動 作 するソフトウェアの 開 発 に 関 する 技 術 習 得 を 目 的 とします 5

6 1.2 サーバ 関 連 の 予 備 知 識 について ネットワーク 上 のサーバ 上 で 動 作 するソフトウェア( 通 常 Web サーバと 言 われます)を 理 解 する 上 で 必 要 となる 最 小 限 の 用 語 について 簡 単 に 開 設 します 1) WWW:WorldWideWeb IE(インターネットエクスプローラ) 等 で 代 表 される 各 種 のブラウザソフトが 認 識 できる HTML(ハ イパーテキスト マークアップランゲージ) 形 式 により 文 字 情 報 や 画 像 情 報 などをやりとりするイ ンターネット 上 のプロトコル( 通 信 を 行 う 為 の 約 束 のようなもの)と そのプロトコルを 実 現 する 上 で 関 連 する 各 種 のソフトウェアを 総 称 した 名 前 です WWW は クライアント サーバモデルにて 実 現 されています クライアント 側 は URL を 使 ってサーバ 上 の 情 報 を 要 求 します ウェーブ ダブリュー ダブリュー ダブリュー トリプル ダブリュー ダブリュー スリー ダ ブダブダブなどと 呼 ばれています 2) クライアント サーバモデル 通 信 を 行 う 場 合 クライアント( 利 用 者 )とサーバ( 提 供 者 )の 関 係 を 持 ち クライアント 側 から の 要 求 により 対 応 するサーバが 各 種 の 情 報 を 提 供 する 方 式 を 言 います インターネット 上 で 見 た 場 合 各 サイトの 情 報 を 検 索 する 全 てのユーザはクライアントとなり その 要 求 に 答 える 為 に 各 サイト に 設 置 してあるコンピュータ(プロバイダに 設 置 してある HP 等 が 登 録 されているコンピュータもサー バ)がサーバに 相 当 します 補 足 : 接 続 されているお 互 いが クライアントとなって 情 報 取 得 要 求 を 行 ったり サーバとなって 相 手 の 要 求 に 対 して 情 報 を 提 供 する 形 態 をピュアツーピュア 形 式 と 言 います 3) Web サーバソフト ネットワーク(インターネット 含 む) 上 に 接 続 されているクライアント 側 からの 要 求 に 従 い 対 応 する HTML テキストや 画 像 ファイルなどを 所 定 の 場 所 から 読 み 込 み( 予 め 所 定 の 場 所 に 登 録 されていな ければなりません) クライアント 側 に 返 却 するソフトウェアです この Web サーバソフトは クライ アントの 要 求 に 従 い CGI ソフトやスクリプトプログラム( 情 報 提 供 者 により 作 成 され 登 録 されて いるプログラム)を 実 行 し その 結 果 をクライアント 側 に 返 却 する 機 能 も 持 っています 主 なサーバソフトには 以 下 のようなものがあります ApacheWebServer: フリーソフトで Windows でも Linux 上 でも 動 作 します IIS(MicrosoftInternetInformationServer): マイクロソフト 社 の 商 用 ソフトウェアであり Wimdows 上 で 動 作 します 6

7 4) ブラウザソフト インターネット 上 に 存 在 する 各 種 のサイト 情 報 をクライアントユーザの 要 求 に 従 って 要 求 し サー バから HTML 形 式 のテキストと 画 像 などを 受 け 取 り クライアント 画 面 上 に 表 示 するアプリケーション ソフトウェアです このブラウザソフトは サーバより 送 信 されてくる HTML 形 式 のデータを 解 析 し そのブラウザソフトが 実 行 されるオペレーティングシステムの 助 けを 借 りてクライアント 画 面 に 画 像 や 文 字 列 を 表 示 します 主 なブラウザソフトには 以 下 のようなものがある IE:MicroSoftInternetService NN/NC:NetscapeNavigator/Communicator) Mozilla URL の 基 本 的 な 体 系 は 以 下 のとおりです http :スキーム 名 (プロトコルを 表 します) www :サーバー 名 asahi-net : 第 3ドメイン 名 (プロバイダー 名 など) co : 第 2ドメイン 名 ( 企 業 は co 行 政 府 は go その 他 は or 但 し 米 国 は gov com の3 文 字 ) jp : 第 1ドメイン 名 ( 日 本 は jp イギリスは uk 米 国 は US ) index.html :サーバー 上 のファイル 名 (ホームページのトップの 名 前 ) 上 記 URL は 日 本 (jp)にある 企 業 (co)のasahi-netにあるwwwというサーバ のindex.htmlというファイルをhttpプロトコルにて 参 照 するという 意 味 となりま 7

8 す また の 代 わりに IP アドレスを 直 接 設 定 することも 出 来 ます 6) IP:Internet Protocol Address IPアドレスとはネットワーク 上 に 接 続 されている 全 てのコンピュータに 設 定 されているユニーク なアドレスであり 現 状 では32ビット(8ビット 分 割 )から 構 成 されています このIPアドレスはネットワークアドレスとホストアドレスから 構 成 されています このネットワ ークアドレスとホストアドレスのビット 配 分 はIPアドレスのクラス(32ビットの 先 頭 の 数 ビット でクラスが 定 義 されます 基 本 的 には A タイプから D タイプがあります)に 応 じて 変 わります ま た サブネットマスクと IP アドレスのクラスの 組 み 合 わせによりサブネットワークアドレスの 設 定 も できます ひとつの LAN 状 に 接 続 する 端 末 数 を 多 くしたい 場 合 は(255 以 上 )ホストアドレスに 割 振 るビッ ト 数 が 多 い 形 態 を 使 用 します ちなみに タイプ A は24ビット タイプ B は16ビット タイプ C は8ビットがホストアドレスとして 割 り 付 けられます 32ビットでは43 億 のユニークなアドレスが 設 定 できますが 最 近 のネットワーク 普 及 により 不 足 が 懸 念 された 為 に 128ビットに 拡 張 (IPv6)され 実 用 に 入 っています 補 足 1: IP アドレスの 先 頭 の1~3ビットで IP アドレスのクラスが 切 り 分 けられます 0 :クラス A(ホストアドレスが24ビット 構 成 ) 10 :クラス B(ホストアドレスが16ビット 構 成 ) 110 :クラス C(ホストアドレスが8ビット 構 成 ) 補 足 2: IP アドレスにはグローバル IP アドレスとプライベート IP アドレスがあります グローバル IP アドレスは インターネット 上 に 接 続 される 時 に 使 用 される 世 界 でユニークなアドレスであり プライベート IP アドレスは インターネットに 接 続 しないローカルな LAN 等 で IP を 管 理 してい る 機 関 によって 使 用 許 可 されたアドレスです また このプライベート IP アドレスや IP アドレス を 持 たないコンピュータがインターネット(LAN)に 接 続 する 場 合 は インターネット 接 続 時 のみグ ローバル IP アドレスを 取 得 し サービスを 受 ける 事 になります このサービスを 提 供 しているのが プロバイダであり プロバイダの 持 つ DHCP サーバ(DynamicHostConfigulationProtocol)により 動 的 に 与 えられます ( 勿 論 各 自 がグローバル IP アドレスを 得 て 直 接 インターネットに 常 時 接 続 することも 可 能 です また DHCP サーバはインターネットに 限 らず ローカルな LAN 上 等 でも 動 的 に IP アドレスを 生 成 することができます ) IP アドレスの 管 理 機 関 がプライベースアドレスとして 使 用 許 可 しているアドレスは 以 下 の 通 りです クラス A 用 IP アドレス: ~ クラス B 用 IP アドレス ~

9 クラス C 用 IP アドレス ~ 補 足 3: サブネットマスクと IP アドレスの 関 係 は 以 下 の 通 りです 補 足 : LAN に 接 続 されたコンピュータは 同 じネットワークアドレスを 持 つものに 対 してのみアクセスが 許 されます 補 足 : jp ドメイン 名 (..jp)は JPRS(JapanRegistryService)に 申 請 を 行 って 取 得 することができますが 一 般 的 には ISP が 代 行 して 行 ってくれます 補 足 : 常 時 接 続 形 式 でインターネットに 接 続 されている 場 合 は MS-DOS プロンプトにおいて ipconfig コマ ンド("ipconfig /?"により 使 い 方 が 表 示 されます)を 実 行 してみてください 自 分 に 割 り 当 てられて いるグローバル IP アドレスが 表 示 されます 補 足 : ネットワークアドレスを 表 記 する 場 合 最 後 にネットワークアドレスを 定 義 するビット 数 を 表 記 するこ とがあります 以 下 の 例 では ネットワークアドレスが24ビットであるとこを 示 しています /24 9

10 補 足 :ipconfig 命 令 で 表 示 される 項 目 一 覧 Host Name TCP/IP のホスト 名 Primary DNS Suffix 最 優 先 で 用 いられる DNS サフィックス ホスト 名 と 合 わせて FQDN(Fully Qualified Domain Name)を 表 現 するのに 用 いられる マシン 名 (NetBIOS 名 )から IP アドレスを 導 く 名 前 解 決 の 方 法 を 表 す Node Type Node Type は 4 種 類 ( 下 記 の 別 表 を 参 照 )あり 特 に 指 定 がなければ Hybrid が 選 択 され る NetBIOS Scope ID NetBIOS におけるスコープ ID 通 常 は 空 欄 である IP Routing Enabled 複 数 のネットワーク アダプタ 間 で IP パケットがルーティングされるか 否 かを 表 す WINS Proxy Enabled DNS Suffix Search List WINS プロキシ 機 能 が 有 効 か 否 かを 表 す たいていは Disable DNS サフィックスの 候 補 一 覧 ホスト 名 から IP アドレスを 導 く 際 このリストから 順 番 にサフィックスが 選 ばれ FQDN が 生 成 される NetBIOS Resolution Uses マシン 名 (NetBIOS 名 )から IP アドレスを 導 くのに DNS を 利 用 するか 否 かを 表 す DNS Connection-specific DNS ネットワーク アダプタごとに 設 定 されている DNS サフィックス Suffix Description Physical Address ネットワーク アダプタの 説 明 LAN カードの 場 合 は 一 般 的 に 製 品 名 を 表 す 文 字 列 が 表 示 される ネットワーク アダプタの MAC アドレス DHCP Enabled DHCP サーバから IP アドレスのリースを 受 けるよう 設 定 されているか 否 かを 表 す Autoconfiguration Enabled IP Address Autoconfiguration IP Address Subnet Mask Default Gateway DHCP Server DNS Servers Primary WINS Server APIPA(Automatic Private IP Addressing)による IP アドレスの 自 動 設 定 が 有 効 か 否 かを 表 す 当 該 ネットワーク アダプタに 割 り 当 てられている IP アドレス APIPA により 当 該 ネットワーク アダプタに 割 り 当 てられた IP アドレス サブネット マスク デフォルト ゲートウェイの IP アドレス IP アドレスのリースを 受 けた DHCP サーバの IP アドレス DNS サーバの IP アドレス 複 数 の 場 合 は 先 頭 がプライマリ DNS サーバ 2 番 目 がセカンダリ DNS サーバを 意 味 する プライマリ WINS サーバの IP アドレス Secondary WINS Server セカンダリ WINS サーバの IP アドレス Lease Obtained DHCP サーバからの IP アドレスのリースが 開 始 された 時 間 10

11 Lease Expires DHCP サーバからの IP アドレスのリースが 終 了 する 時 間 NetBIOS over Tcpip NBT(NetBIOS over TCP/IP)が 有 効 か 否 かを 表 す 7) ハブ 最 も 一 般 的 なネットワーク 構 成 であるスター 型 ネットワークにおいて そのネットワークに 含 まれる 全 てのコンピュータ 類 を 接 続 する 為 の 装 置 です ネットワーク 上 で 流 れる 全 てのデータはこのハブを 経 由 し て 相 手 に 配 信 されます また このハブにはリピータハブとスイッチングハブの2 種 類 があります リピータハブ 10BASE 用 100BASE 用 及 びデュアル 用 があります 入 力 された 信 号 は 全 ての 接 続 機 器 に 送 られます ( 衝 突 は 発 生 します) カスケード 接 続 (HUB 同 士 の 接 続 )は 10BASE で4 台 まで 100BASE で2 台 までに 制 限 さ れます ( 末 端 から 末 端 までの 間 に 設 定 されるハブの 数 が 制 約 されます) スイッチングハブ 10BASE と100BASE が 共 存 しても 通 信 ができます MAC アドレスを 使 い 必 要 な 相 手 にのみデータを 配 信 します ( 効 率 的 な 通 信 が 行 われます) カスケード 接 続 には 制 限 はなりません 8) ルータ 異 なるネットワークアドレスを 持 つ LAN 同 士 を 接 続 する 装 置 で 異 なるネットワークアドレスを 持 つコ ンピュータに 対 するアクセスを 可 能 とする 装 置 です このルータには 自 分 の 属 するネットワークから 他 のネットワークにアクセスする 場 合 に その 対 象 となったネットワークを 特 定 し そのネットワークに 対 してのみデータを 送 信 するルーティング 機 能 を 提 供 します また 自 分 のネットワーク 上 に 接 続 されてい るコンピュータに 対 し 他 のネットワークからのアクセス 要 求 が 発 行 された 場 合 許 可 されていない 要 求 ( 予 めルータに 登 録 されているアドレス 以 外 )であればそれを 拒 否 するパケットフィルタリング 機 能 を 提 供 します 9) ゲートウェイ ゲートウェイとは LAN 内 部 から 外 部 の LAN(インターネットなど)に 接 続 する 場 合 の 出 入 り 口 となる 機 構 です このゲートウェイは 内 部 から 外 部 へのアクセスは 許 可 されますが 外 部 から 内 部 へのアクセス 11

12 を 完 全 に 禁 止 することができます また 外 部 から 受 信 するデータ 等 に 対 するウイルスチェック 等 も 可 能 とします ルーティング 機 能 を 備 えたゲートウェイは ルーティングゲートウェイとも 言 われます 12

13 10) PHP(HyperText Processor) Web サーバ 上 で 実 行 されるコンパイルを 必 要 としない 逐 次 構 文 解 析 実 行 型 のインタプリタ 言 語 で あり データベースのアクセスなどができます この PHP 言 語 は HTML 言 語 で 書 かれたプログラムに 挿 入 して 使 われたり 単 独 で 使 われる 形 式 があります また この PHP 言 語 は 処 理 結 果 としてブラ ウザが 表 示 できる HTML 構 文 を 作 り 出 します 11) いろいろなサーバ 本 編 が 対 象 とする Web サーバは HTTP プロトコルを 使 い ポート 番 号 に80 番 が 設 定 されたサーバです が これ 以 外 に Web 関 連 のサーバとして 以 下 があります Web サーバ :ブラウザソフトからの Web ページ 表 示 要 求 に 対 応 するサーバです メール 送 信 サーバ:SMTP プロトコルを 使 った メール 送 信 を 司 るサーバです メール 受 信 サーバ:POP3 プロトコルを 使 った メール 受 信 処 理 を 司 るサーバです DHCP サーバ :ネットワーク 接 続 時 に IP アドレスを 動 的 に 割 り 振 ってくれるサーバです DNS サーバ :URL で 与 えられるドメイン 名 を IP アドレスに 変 換 してくれるサーバです FTP サーバ :サーバ クライアント 間 でファイル 単 位 の 転 送 を 可 能 とするサーバです Telnet サーバ : 遠 隔 のコンピュータを 操 作 するリモートログインを 可 能 とするサーバです Samba サーバ :Linux と Windows 間 でファールやプリンタの 共 有 を 行 うサービスです 補 足 : サーバとは コンピュータの 種 類 ではなく その 機 能 を 持 ったソフトウェアシステムであり 1 台 のコ ンピュータに 一 緒 に 搭 載 することができます ( 別 プロセスとして 稼 動 します) また これらのサーバソフトは 全 てメーカから 提 供 されており サーバー 構 築 者 は このソフトをイン ストールして 各 種 の 設 定 を 行 うだけです 12) ポート 番 号 ネットワークシステム 上 で 使 用 されるポート 番 号 とは ネットワーク 上 のアプリケーション 間 で 通 信 を 行 う 時 に お 互 いを 認 識 する 為 に 使 用 される 番 号 です ネットワーク 上 でお 互 いのコンピュータを 識 別 す る 為 に IP アドレスが 使 用 されますが これと 同 様 に その IP アドレスを 持 つコンピュータ 上 で 動 作 して いる どのアプリケーションソフトと 交 信 を 行 うかを 示 しているのがポート 番 号 で ネットワーク 通 信 パ ケットには IP アドレスと 一 緒 に このポート 番 号 が 書 かれています このポート 番 号 は 1023 番 までは 固 定 的 に 確 保 されており 1024 以 上 の 番 号 は 要 求 に 対 する 応 答 用 ポート 番 号 などとして 使 用 されます 例 えば クライアント 側 のあるアプリケーションが Web サーバ と 交 信 をする 場 合 Web サーバ 側 のポート 番 号 は80 番 と 決 まっていますが クライアント 側 は 番 以 降 のポート 番 号 が 使 用 されます 以 下 が 確 定 されているポート 番 号 の 主 なものです HTTP :80/TCP Web サーバとブラウザ 間 通 信 用 FTP :20/TCP ネットワーク 上 でのファイルの 転 送 用 (TCP プロトコル 使 用 ) FTP :20/UDP ネットワーク 上 でのファイルの 転 送 用 (UDP プロトコル 使 用 ) TELNET :23/TCP ネットワーク 上 のコンピュータの 遠 隔 操 作 用 SMTP :25/TCP 電 子 メール 送 信 用 DNS :53/UDP コンピュータ 名 と IP アドレス 変 換 用 POP3 :110/TCP 電 子 メール 受 信 用 13

14 13) FTP(FileTransferProtocol) FTP とは File Transfer Protocol の 略 で コンピューター 間 でファイルの 転 送 を 行 うための 規 格 です FTP によるファイル 転 送 を 行 うためには FTP のアカウントとパスワードが 必 要 になりますが AnonymousFTP という 誰 でも 利 用 できる FTP もあります この anonymous とは 匿 名 の という 意 味 です Anonymous FTP とは 通 常 は 名 前 (アカウント)とパスワードが 必 要 である FTP 処 理 を 誰 でも 実 行 できるようにしたもののこ とです 14) TELNET SSH TELNET とは 同 じネットワーク 上 のコンピュータを 遠 隔 で 操 作 する 仕 組 みです SSH( Secure Shell)も この TELNET と 機 能 的 には 同 じですが コンピュータ 同 士 の 通 信 を 行 う 場 合 暗 号 化 を 行 ってくれますで パスワードなどの 情 報 漏 えいを 防 ぐことができます 15) Parl Ruby いずれも Web プログラミングで 使 用 される 言 語 です Perl(PracticalExtractionAndReportLanguage)とは CGI において 最 もよく 用 いられるプログラミング 言 語 で コンパイルなどを 必 要 としないスクリプト 言 語 です 特 に 文 字 列 の 処 理 に 優 れています Ruby とは オブジェクト 指 向 のスクリプト 言 語 で Perl と 同 様 文 字 列 処 理 能 力 に 優 れています 16) CGI(CommonGatewayInterface) CGI とは サーバとプログラムが 連 携 するための 規 格 です Web 上 の 大 多 数 の 掲 示 板 やアクセスカウンタなど は この CGI で 動 いています 一 般 的 には CGI は Perl というスクリプト 言 語 で 書 かれることが 多 いのですが 他 のプログラミング 言 語 で 書 くことも 出 来 ます Perl 以 外 でよく 使 われるのは C 言 語 や Ruby などです 17) SSI(Server Side Includes) SSI は HTML ファイル 中 にコマンドを 書 いておき HTML ファイルがリクエストされるたびに そのコマンド がサーバー 側 で 実 行 され その 結 果 が HTML ファイル 中 に 返 されるという 仕 組 みです SSI を 使 えば 文 字 カウンターの 設 置 やアクセスログの 取 得 また 複 数 ファイルに 同 じヘッダを 表 示 すること などが 簡 単 にできるようになります 18) SSL(Secure Socket Layer) SSL は データを 暗 号 化 して 通 信 する 仕 組 みを 指 します 14

15 個 人 情 報 やクレジットカードの 番 号 などを 送 信 するページが 存 在 する 場 合 には 一 般 的 に この SSL の 仕 組 みが 利 用 されます 19) DNS(Domain Name System) DNS は ドメイン 名 と P アドレスを 関 連 づけるシステムです 一 般 的 には DNS と 記 述 された 場 合 は DNS サーバーを 指 します DNS サーバーは DNS 情 報 (ドメイン 名 と IP アドレスの 対 応 情 報 )を 管 理 するサーバーで Web 上 (インターネット 上 )に 無 数 に 存 在 しています URL をブラウザに 入 力 して 目 的 のホームページを 見 ようとする 際 には プロバイダの DNS サーバーの 情 報 により 入 力 した URL のドメインが 対 応 している IP アドレスがわかり 目 的 のホームページが 存 在 する サーバーへ 接 続 されるの 仕 組 みになっています DNS サーバは 単 にネームサーバと 言 われることもあります 20) ドメイン 名 とサブドメイン 名 ドメイン 名 とは DNS 情 報 により IP アドレスと 対 応 させることによって インターネット 上 での 住 所 を 表 すものです XX.com や XX.or.jp などが ドメインです サブドメインとは あるドメイン 名 のすぐ 下 の 階 層 にくるドメインのことです XX.YY.co.jp を 例 にする と co は jp のサブドメイン YY は co.jp のサブドメイン XX は YY.co.jp のサブドメインということに なります 補 足 : ドメイン 名 は JPRS(JapanRegistryService)に 申 請 を 行 って 取 得 することができますが 一 般 的 には ISP が 代 行 して 行 ってくれます 21) バーチャルドメイン(virtual domain) 通 常 は 一 台 のサーバーに 対 して 1つのドメインが 割 り 当 てられますが 一 台 のサーバーに 複 数 のド メインを 割 り 当 てることもできます 一 台 のサーバーに 複 数 のドメインを 割 り 当 て まるで 複 数 のサーバーが 存 在 しているかのように 見 せてい る 状 態 のことをバーチャルドメインといいます バーチャルサーバー バーチャルホスティングと 呼 ばれ ることもあります 共 用 レンタルサーバーなどでは このバーチャルドメインの 技 術 で 一 台 のサーバー に 複 数 のドメインを 存 在 させています 22) セキュアサーバー(secure server) セキュアサーバーとは SSL が 使 用 されたサーバーのことを 指 します レンタルサーバー 業 者 のサイト で セキュアサーバーが 使 用 可 能 だと 書 いてあれば それは SSL が 使 用 可 能 だということを 意 味 します 15

16 23) ホスティング(hosting) ホスティングという 言 葉 は レンタルサーバーサービスとほぼ 同 義 に 使 用 されています 海 外 ではむし ろ レンタルサーバーという 言 葉 は 用 いず ホスティング(hosting)といいます 24) スクリプト(script) コンパイルなどの 機 械 語 への 変 換 作 業 を 省 略 して 簡 単 に 実 行 できるようにした 簡 易 プログラムのこと を 指 します 通 常 プログラムはプログラマの 書 いたソースコード(プログラム)をもとにコンピュータの 理 解 できる 機 械 語 (1か0の 数 字 の 組 み 合 わせです)に 変 換 して 実 行 されますが その 変 換 プロセスを 簡 略 化 して 実 行 できるようにしたものをスクリプトといいます 特 に Web ページでは HTML だけではでき ない 様 々な 機 能 を 利 用 するための 簡 易 的 なプログラムをスクリプトと 言 うことがあります スクリプトを 記 述 するための 言 語 (スクリプト 言 語 )には Perl や VBScript JavaScript などがあります 25) APOP(Authenticated Post Office Protocol) APOP とは メール 受 信 時 の 認 証 パスワードを 暗 号 化 して 送 信 する 通 信 方 法 です 通 常 の POP では パスワードを 暗 号 化 せずに 送 信 しているのですが APOP を 使 用 して 暗 号 化 することによ り パスワードが 漏 れる 危 険 性 が 減 ります なお APOP を 利 用 するためにはサーバーだけではなく クライアントのメールソフトも APOP に 対 応 して いなければなりません 26) POP アカウント POP アカウントとは POP サーバーに 接 続 するためのアカウントのことで POP アカウントの 数 だけ POP メールボックスが 存 在 することになります 27) バックボーン バックボーンとは 業 者 が 接 続 している 通 信 回 線 の 容 量 を 表 します 容 量 が 大 きければバックボーンが 太 い 尐 なければバックボーン 細 いという 言 い 方 をします もちろん バックボーンが 太 ければ 一 度 に 多 くのデータをやりとりできる( 高 速 になる)わけですので バックボーンは 太 ければ 太 いほど 良 いのですが バックボーンが 太 いからといって その 業 者 のサーバー が 必 ずしも 高 速 というわけではなく 実 際 には サーバーコンピュータの 性 能 や 他 の 様 々な 要 因 が 影 響 します 16

17 28) 自 動 応 答 メール 機 能 自 動 応 答 メール 機 能 とは 特 定 のメールアドレスにメールが 送 信 された 場 合 あらかじめ 作 成 しておい た 定 型 文 を 自 動 的 に 返 す 仕 組 みです オートレスポンダーと 呼 ばれることもあります 29) データベース データベースとは 情 報 の 整 理 と 利 用 を 目 的 としたソフトウェアです 情 報 を 登 録 管 理 し その 情 報 を 検 索 したり 検 索 した 情 報 から 統 計 データを 作 成 するなどの 目 的 に 使 用 されます このデータベースとしては PostgreSQL や MySQL Oracle などが 良 く 知 られいます PostgreSQL と MySQL は Free ソフトですので 無 料 で 配 布 されています 30) アクセスログ アクセスログとは Web サイトへのアクセスごとに 記 録 される アクセス 時 間 リクエストファイル アクセス 元 の IP アドレス リンク 元 の URL などの 情 報 のことです この 情 報 を 元 に どのような 時 間 帯 に アクセスが 集 中 するかなどを 分 析 します 補 足 : インターネット 上 で 使 えるネットワークサーバ(Web サーバ)を 構 築 する 方 法 としては グローバルな IP アドレスを 取 得 し 自 前 のサーバーマシーンを 用 意 して インターネット 上 に 接 続 する 方 法 と レンタ ル 業 者 の 提 供 するレンタルサーバーを 使 用 して 公 開 する 方 法 があります 前 者 は 外 部 からの 侵 入 等 に 対 するセキュリティー 対 策 は 全 て 自 分 で 行 う 必 要 がありますが 後 者 は レンタル 会 社 により 行 われてい ます 17

18 1.3 Web プログラム(HTML,JavaScript PHP)とはどんなものか 基 本 的 なインターネットモデルは 1 情 報 を 提 供 したい 提 供 者 が HTML 文 書 にて 作 成 されたファイを 特 定 のサーバコンピュータ(プロバイダや 個 人 が 設 置 ) 上 に 登 録 しておきます 2この 文 書 を 見 たい 利 用 者 は そのサーバ 上 のファイル 名 を URL 形 式 によりブラウザソフトを 介 してサーバに 要 求 します 3サー バは その 要 求 に 応 じて 対 応 するファイルと 関 連 する 画 像 等 をサーバコンピュータから 取 り 出 し クラ イアント 側 に 送 信 します 4クライアント 側 のブラウザソフトは この 情 報 を 元 にクライアント 側 の 画 面 上 にその 情 報 を 表 示 します この 方 式 では URL とサーバ 上 のファイルが1 対 1 の 関 係 となるために サーバ 上 に 登 録 されている 決 ま りきった 情 報 しか 表 示 できないことになります もし クライアント 側 の 要 求 により 表 示 された 画 面 を 使 って サーバ 側 のソフトウェア(Web サーバ)と 対 話 を 行 い 同 じ URL でありながら 様 々な 応 答 を 返 すことのできる 方 式 であれば その 柔 軟 性 と 利 用 性 が 格 段 に 向 上 することが 分 ります 例 えば Web サーバ 上 に 登 録 されているデータベースから 特 定 のデー タを 取 り 出 し 表 示 できる Web サーバがあれば 極 めて 有 効 な 検 索 ソフトがインターネット 上 で 実 現 でき ることになります PHP は この Web サーバ 上 で 動 作 するソフトウェアを 作 成 する 為 のスクリプト 言 語 で クライアント 側 に 表 示 される 対 話 画 面 を 介 して 利 用 者 との 擬 似 対 話 を 行 ったり その 利 用 者 の 要 求 に 応 じてデータベース サーバより 必 要 な 情 報 を 取 り 出 し それらの 情 報 を クライアント 側 のブラウザソフトが 解 釈 できる HTML 形 式 に 変 換 して 送 る 機 能 を 実 現 するものです なお この 機 能 を 実 現 する 方 法 として クライアントサイド スクリプトで 実 現 する 方 法 CGI (CommonGatewayInterface) 方 式 で 実 現 する 方 式 及 びサーバサイド スクリプトで 実 現 する 方 式 があり ます PHP は 最 後 のサーバサイド スクリプト 形 式 での 実 現 を 可 能 としています (CGI 形 式 でも 可 ) PHP を 介 した Web サーバの 概 念 図 は 以 下 の 通 りです 18

19 1.4 HTML,JavaScript, 及 び PHP を 理 解 する 上 での 予 備 知 識 Web サーバ 構 築 と 各 種 プログラミング 各 種 言 語 を 使 った 構 築 される サーバ 上 で 動 作 する 各 種 の Web サーバソフトを 理 解 する 上 で 必 要 となる キーワードは 以 下 の 通 りです 1) Web サーバソフト クライアント 側 からの 要 求 に 従 い 各 種 の 情 報 を 検 索 し その 情 報 をブラウザソフトが 認 識 できる HTML 形 式 に 変 換 し その 要 求 元 に 送 り 返 す 機 能 を 持 ったソフトウェアであり サーバコンピュータ 上 で 動 作 します 2) クライアント 側 組 み 込 み 型 スクリプト 方 式 クライアント 側 からの 要 求 に 応 じて Web サーバソフトから 送 信 されるスクリプトで クライアント 側 のコンピュータ 上 で 実 行 されます この 形 式 のソフトは Java スクリプト 言 語 や VB スクリプト 言 語 により 実 現 されるもので HTML テキストに 組 み 込 まれた 形 式 で 実 行 されます 但 し この 形 式 では アニメーション 表 示 などのような 動 的 な 動 作 や 利 用 者 との 対 話 処 理 はできま すが サーバ 側 にあるデータベースを 直 接 扱 う 事 はできない 欠 点 や クライアント 側 に 負 荷 をかける という 欠 点 があります 3) CGI 方 式 (CommonGatewayInterface 方 式 ) Web サーバ 側 のコンピュータ 上 で 実 行 される 方 式 で クライアント 側 からの 要 求 に 従 い Web サーバ が 対 応 するソフトウェアを Web サーバ 上 で 実 行 し その 結 果 をクライアント 側 に 送 り 返 します この 方 式 の 長 所 は その CGI ソフトがダウンした 場 合 でも Web サーバは 処 理 を 継 続 することができること です 短 所 としては クライアント 側 からの 要 求 毎 に 対 応 するプログラムを 起 動 しなければならない 為 に 応 答 速 度 やサーバ 側 のコンピュータに 対 する 負 荷 の 問 題 があります この 方 式 を 実 現 する 為 の 言 語 は 特 に 既 定 はありませんが 一 般 的 には Perl や C 言 語 などが 使 われてい ます 19

20 補 足 : CGI 形 式 で 実 行 されるか スクリプト 形 式 で 実 行 されるかは プログラムファイルに 設 定 される 拡 張 子 で 決 まります また CGI 形 式 はサーバ 側 で 独 立 プロセスとして 動 作 しますので そのプログラムに 対 し て 実 行 権 を 設 定 しなければなりません 4) Web サーバ 組 み 込 み 型 スクリプト 形 式 CGI 形 式 同 様 に Web サーバ 側 のコンピュータ 上 で 実 行 される 形 式 ですが CGI と 大 きく 異 なるのは 対 応 するプログラムが Web サーバに 組 み 込 まれて 実 行 される 形 式 であることです つまり クライアント 側 からの 要 求 に 従 い Web サーバがその 要 求 に 対 応 するプログラムを 同 じプ ロセスとして 呼 び 出 して 組 み 込 む 方 式 を 取 っています この 関 係 で 応 答 は 速 いのですが Web サー バそのものが 大 きくなる 問 題 や 対 応 するソフトウェアに 問 題 があった 場 合 Web サーバそのものに 影 響 を 与 えてしまう( 一 切 サービスができなくなるなど) 等 の 問 題 が 発 生 する 可 能 性 があります 補 足 : Web サーバはクライアント 側 からの 要 求 に 対 し 対 応 するページを 送 信 すると 処 理 を 終 了 しま す このページがクライアント 側 の 応 答 を 必 要 とするものである 場 合 は クライアントから 再 度 20

21 URL+ 応 答 メッセージの 形 式 で Web サーバに 送 信 され その URL に 対 応 する Web サーバ 上 のプログ ラムが 実 行 されます このようにして クライアントと Web サーバソフトは 対 話 を 行 います 21

22 1.5 各 種 のプログラミングを 行 う 為 の 予 備 知 識 PHP とは ブラウザソフトが 解 釈 できる HTML 形 式 のテキストファイルを 作 る 言 語 です また この PHP 言 語 は 手 続 き 型 プログラムの 作 成 及 びデータベースの 作 成 ができます 今 回 のコースで 考 察 するモデルは クライアント 側 からの 要 求 に 従 い Web サーバー 上 に 構 築 されたデー タベースをアクセスし クライアント 側 の 要 求 に 応 じた 処 理 を 行 うプログラムを Web サーバのスクリプト プログラムとして 実 現 します データ 及 び 処 理 の 流 れから 見 た 場 合 以 下 の 様 になります 1) HTML で 作 成 されたプログラムに データベースのアクセス 及 びクライアントからの 要 求 に 対 応 する 処 理 部 分 を 挿 入 したプログラムを 作 成 し Web サーバ 上 の 所 定 のフォルダに 格 納 します 2) Web サーバソフト( 本 コースではアパッチ Web サーバを 使 用 します)は クライアントからの 要 求 に 従 い PHP を 含 んだ HTML ファイルを 読 み 込 み PHP 部 分 をサーバ 上 で 実 行 し その 結 果 (HTML テキス ト)をクライアント 側 のブラウザソフトに 返 却 します 3) クライアント 側 のブラウザソフトは Web サーバソフトから 返 却 された HTML テキストを 解 釈 し 画 面 上 に 表 示 します テキストエディタを 使 ったプログラム 作 成 PHP 言 語 (HTML 言 語 含 む)を 使 ってプログラムを 作 成 する 場 合 テキストエディタと 言 われる 単 純 な 文 字 編 集 ツールを 使 う 必 要 があります PHP 言 語 を 解 釈 するブラウザソフトや Web サーバソフトは ワード などのような 特 殊 な 形 式 で 作 成 された( 段 落 設 定 や 画 像 などが 設 定 されている)ものは 理 解 することがで きません この 単 純 な 文 字 列 編 集 用 ツール(テキストエディタ)としては Windows に 標 準 に 装 備 されて いるメモ 帳 や Linux 上 に 装 備 されている vi ツールがあります 本 コードでは Windows 上 で 動 作 するフリーソフトである Terapad ツール(テラパッド)を 使 用 すること とします 22

23 補 足 1: PHP 言 語 や PostgreSql 言 語 などを 含 む 一 般 的 なプログラミングでは コメント 本 文 を 除 き 半 角 英 数 字 ( 或 いは 直 接 入 力 モード 使 用 )で 作 成 しなければなりません 全 角 やひらがな 文 字 を 使 っ た 場 合 構 文 が 解 釈 できず 構 文 不 正 と 判 断 されますので 注 意 してください 特 に 全 角 のブランク( 編 集 画 面 では 見 えません)が 入 った 場 合 も 正 しく 認 識 できませんのでご 注 意 ください 補 足 2: Terapad ツールにおいて ライン 番 号 を 表 示 したい 場 合 は 表 示 編 集 モード 操 作 で HTML の 項 目 を 選 択 します 補 足 3: Linux 上 で 動 作 するデータベースは 一 般 的 には EUC コードを 使 用 します この 関 係 で デー タベースのアクセスを 前 提 としている PHP プログラムを 登 録 する 場 合 は EUC コードを 使 用 しま す 補 足 4: サーバ 側 の php.ini ファイルで 宣 言 されているキャラクタコードも 以 下 と 設 定 されていること を 確 認 してください 補 足 5: default_charset= EUC-JP TeraPad ツールにおいて 文 字 コードの 違 いにより 字 化 けを 起 こした 場 合 は ファイル 漢 字 コード 指 定 再 読 込 で 表 示 されるメニューで 適 切 なコード( 例 えば EUC )を 選 択 してくだ さい 23

24 1.5.2 ffftp ツールによるプログラムの 登 録 PHP 言 語 や HTML 言 語 を 使 ってプログラミングを 行 い Web サーバ 上 の 所 定 の 場 所 にそのプログラムを 登 録 することにより 始 めてネットワーク(インターネットを 含 む) 上 でそのプログラムを 実 行 させ 結 果 を 表 示 することが 出 来 ます ftpツールには いろいろの 種 類 が 用 意 されていますが 本 コースでは ffftp ツールを 使 って Web サ ーバ 上 にプログラムを 登 録 することとします 注 意 : Web ソフト(PHP プログラムや HTML プログラムなど)をサーバ 側 に 登 録 する 場 合 登 録 するフォルダ が 規 定 されていますので サーバ 側 のインストール 時 に 定 義 されたフォルダを 確 認 ください 補 足 : サーバへの 接 続 に 関 する 設 定 は 接 続 プルダウンの 接 続 機 能 を 使 い 以 下 の 画 面 にて 行 います 補 足 : ホストの 設 定 画 面 にて PHP(HTML プログラム 及 び 画 像 含 む)プログラムを 登 録 する Web サー バのアドレスや 登 録 フォルダ 名 を 設 定 します 24

25 1.5.3 プログラム 作 成 から 実 行 まで Web サーバ 上 で 動 作 するプログラム 及 びクライアント 側 に 動 作 するプログラムなど Web 関 連 で 必 要 と なる 主 なプログラミング 言 語 には 以 下 があります 勿 論 これ 以 外 にも 様 々な 言 語 が 使 用 されていますが 以 下 の 言 語 だけでも Web 関 連 のソフトウェア 開 発 は 十 分 に 可 能 となります HTML JavaScript PHP PostgreSql :クライアント 側 で 実 行 されます : 主 にクライアント 側 で 実 行 されます :サーバ 側 で 実 行 されます :サーバ 側 で 実 行 されます 本 章 に 記 載 されている 個 々のサンプルプログラムを 実 行 し その 結 果 を 確 認 することにより 各 々のプロ グラムの 特 徴 を 理 解 します サンプルプログラムの 確 認 手 順 は 以 下 の 通 りです 1 Terapad を 起 動 します 2 例 として 記 載 されているステートメントを Terapad 画 面 上 に 作 成 し 定 義 された 名 前 で 登 録 します 3 FFFTP を 使 って Terapad で 作 成 されたプログラムをサーバの 所 定 のフォルダ(/var/www/html フ ォルダ)にコピーします 4 クライアント 側 (Windows 側 )のブラウザソフト(IE)を 起 動 し 以 下 の url を 指 定 します 登 録 を 行 ったプログラム 名 5 上 記 の 操 作 によりブラウザ(IE) 画 面 に 表 示 される 内 容 を 確 認 します サンプルプログラムと 画 面 に 表 示 された 内 容 が 理 解 できれば 次 のサンプルソフトに 確 認 に 進 みます 補 足 : は サーバの IP アドレスです 設 定 する 場 合 は 実 際 の IP アドレスを 設 定 してください 25

26 第 2 章 HTML プログラミング 2.1 HTML プログラミングの 基 本 HTML(HyperTextMarkupLanguage)は Web ページを 記 述 する 記 述 言 語 で クライアント 上 で 実 行 される 各 種 のブラウザソフト(インターネットイクすポローラやネットスケープナビゲータ 等 )により 解 釈 実 行 されます この HTML は 通 常 のプログラムとは 異 なり 動 的 な 動 作 ( 外 部 条 件 等 で 処 理 の 流 れを 制 御 する) は 行 えません つまり HTML で 書 かれたページの 情 報 は そのページを 表 示 した 時 に 全 て 画 面 上 に 表 示 さ れますので ユーザの 要 求 などに 応 じて 処 理 を 変 えることはできません このような 処 理 を 行 う 場 合 は 別 のページに 切 り 替 えたり 他 の 言 語 (JavaScript 言 語 や PHP 言 語 等 )と 組 み 合 わせて 行 う 事 になります 補 足 : Web サーバ 上 で 動 作 する 各 種 のプログラム(PHP で 作 成 されたプログラムや CGI プログラム)の 目 的 は HTML プログラムをダイナミックに 作 り 出 すことにより クライアント 側 画 面 に 任 意 の 内 容 を 表 示 すること です 上 記 理 由 から Web プログラムを 作 成 する 場 合 は HTML 構 文 を 知 っている 必 要 があります HTML の 基 本 構 文 に 関 しては 付 録 の HTML 基 本 構 文 を 参 照 ください 尚 それ 以 上 の 詳 細 に 関 しては 関 連 する 市 販 マニュアルかホームページの 関 連 するページを 参 照 してください HTML プログラムの 基 本 構 成 HTML 言 語 は < と > で 囲 まれて 表 示 されるタグにより その 内 容 が 識 別 されます また タグの 開 始 は <XXXX> (xxxx はタグ 名 )と 定 義 され タグの 終 了 は </xxxx> (xxxx は 開 始 タグで 設 定 さ れたタグ 名 )と 定 義 されます ( 終 了 タグが 必 要 のないものもあります) HTML 言 語 では このタグで 定 義 された 内 容 に 応 じた 内 容 を 記 述 することになります 尚 HTML 言 語 で 記 述 されたプログラムと ブラウザソフトで 表 示 された 画 面 の 関 係 は 以 下 のようになります html01.htm プログラム <HTML> <HEAD> <TITLE> ページのタイトルです </TITLE> <META name="author" content= 山 田 "> </HEAD> <BODY> </BODY> </HTML> ページに 表 示 する 実 体 を 記 述 します メタ 情 報 とは このプログラムに 対 する 追 加 情 報 ( 作 者 名 や 作 成 日 ページの 説 明 等 )の ことで 画 面 上 には 表 示 されません また 検 索 エンジンの 中 には このメタ 情 報 を 検 索 対 象 としているものもあります 26

27 補 足 : JavaScript プログラムや PHP プログラムは この HTML プログラムの<BODY>タグの 直 前 或 いは <BODY> タグと</BODY>タグの 間 に 挿 入 します (PHP 言 語 の 基 本 は この HTML プログラムをダイナミックで 作 り 出 すことを 目 的 とした 言 語 です 詳 細 は PHP 言 語 の 項 を 参 照 してください) ページの 実 体 情 報 を 定 義 する 基 本 構 成 <BODY>タグと</BODY>タグの 間 に 定 義 されるページの 実 体 情 報 には 以 下 のようなものがあります この 情 報 を 元 に ブラウザソフトは Web 画 面 を 構 築 し 表 示 します html02.htm プログラム <HTML> <BODY> <ADDRESS> YUI( <A href=mailto:yh5m-yi@asahi-net.or.jp>yh5m-yi@asahi-net.or.jp</a> </ADDRESS> <SCRIPT language= JavaScript > <!-- document.write("this part is coded by JavaScript"); //--> </SCRIPT> <P> 段 落 1の 表 記 です </P> <P> 段 落 2の 表 記 です </P> <CENTER> センタリングが 定 義 されています </CENTER> <BR> 最 初 に 改 行 をしています <BR> 最 初 と 最 後 に 改 行 をしています <BR> <IMG src= Test.jpg width=100 height=100 align= bottom > 画 像 を 表 示 するタブです </BODY> </HTML> 補 足 : ブラウザの 主 画 面 上 に 表 示 される 内 容 は 基 本 的 には <BODY>と</BODY>の 間 で 定 義 されること になります 例 題 では 主 なタグを 定 義 していますが 上 記 以 外 に 様 々なタグが 提 供 されていま す 27

28 2.1.3 HTML 構 文 におけるコメントの 挿 入 HTML プログラムの 中 に 注 釈 を 入 れる 場 合 は <-- 注 釈 --> 形 式 で 挿 入 します ブラウザソフト は この 注 釈 で 定 義 された 部 分 を 無 視 してページ 表 示 を 行 います html03.htm プログラム <HTML> <BODY> <!-- この 部 分 はコメントであり ページには 表 示 されません --> この 部 分 はコメントではありませんのでページに 表 示 されます </BODY> </HTML> HTML 構 文 を 使 ったユーザインターフェース HTML 構 文 を 使 ってユーザとの 対 話 処 理 を 行 う 画 面 を 定 義 することができます この 入 力 された 内 容 は JavaScript 言 語 で 作 成 されたプログラムか PHP 言 語 で 作 成 されたプログラムで 解 釈 し 処 理 することが できます html04.htm プログラム <HTML> <BODY> <FORM> テキスト 入 力 <BR> <INPUT NAME="TXT" TYPE="TEXT" SIZE=20> <BR><BR>パスワード 入 力 <BR> <INPUT NAME="PWD" TYPE="PASSWORD" SIZE=20> <BR> 隠 しデータ 送 信 <BR> <INPUT NAME="HID" TYPE="HIDDEN" SIZE=20 VALUE=" 隠 し 情 報 "> <BR> 複 数 行 テキスト 入 力 <BR> <TEXTAREA NAME="TXTA" ROWS=5 COLS=50 WRAP=OFF> </TEXTAREA> <BR> <INPUT type="submit" value=" 実 行 " width="10"> </FORM> </BODY> </HTML> 補 足 : この 構 文 は JavaScript や PHP との 連 携 として 意 味 を 持 ちますので 後 述 します 28

29 2.2 基 本 的 なタグの 構 文 BODY 要 素 タグ 内 で 定 義 されるタグには ブロック 要 素 タグとインタイン 要 素 タグがあります ブロック 要 素 タグの 中 で 定 義 されたインラインタグは 有 効 となりますが インラインタグの 中 で 定 義 されたブロッ クタグにはインライン 要 素 タグの 内 容 は 適 用 されません 例 えば <STRONG><TABLE><TD>xxxxx</TD></TABLE></STRONG>と 定 義 されたインラインタグである 強 調 文 字 指 定 (<STRONG>)は xxxxx には 適 用 されません また タグは 以 下 のように 設 定 します < 要 素 タグ 属 性 = 属 性 値 > 注 意 : タグには ブラウザソフトの 違 いによって 使 用 できるものと 使 用 できないものがあります 本 書 の 例 題 で 使 用 しているタグは 基 本 的 には 全 てのブラウザの 共 通 に 使 われるものですが 以 下 の 表 に 記 載 さ れているタグが 全 てのブラウザに 対 して 適 用 できる 訳 ではあります (どのタグがどのブラウザに 有 効 かに 関 しては HTML に 関 する 参 考 文 献 を 入 手 して 確 認 ください) タグ 種 :B ブロックタグ タグ 種 開 始 タグ 終 了 タグ 意 味 と 主 な 設 定 パラメータ - <HTML> </HTML> HTML プログラムの 先 頭 と 最 後 に 指 定 します - <HEAD> </HEAD> ヘッダ 情 報 を 定 義 します - <BODY > </BODY> ページ 内 に 表 示 する 内 容 を 定 義 します 補 足 :bgcolor,text,link,alink,vlink, background,bgproperties,leftmargin, topmargin - <TITLE> </TITLE> このページのタイトルを 定 義 します HEAD~/HEAD の 間 に 設 定 します - <META > このページに 対 する 付 加 情 報 を 定 義 します <HEAD>~</HEA>D の 間 に 設 定 します 補 足 :name,content,lang,http-equiv - <LINK > ドキュメント 間 の 関 係 を 定 義 します 補 足 :rel,href - <!-- 任 意 のコメントを 定 義 します B <ADDRESS> </ADDRESS> ページに 対 する 問 い 合 わせ 先 の 定 義 <BASEFONT > 基 本 フォントを 定 義 します 補 足 :size,color,face <BASE > 本 ページの 基 本 URL を 定 義 します 補 足 :href - <SCRIPT.> </SCRIPT> 挿 入 するスクリプト 言 語 を 定 義 します 補 足 :language,type,src B <P > </P> 段 落 を 定 義 します 補 足 :align B <DIV.> </DIV> ブロック 単 位 でのまとまりの 定 義 します 補 足 :align <SPAN> </SPAN> 行 単 位 でのまとまりの 定 義 します B <CENTER> </CENTER> 画 像 や 文 字 の 中 央 揃 えを 定 義 します <BR> 強 制 改 行 を 行 います <NOBR> </NOBR> 強 制 改 行 を 禁 止 します <WBR> 強 制 改 行 の 解 除 <MULCOL > </MULTICOL> 段 組 表 示 を 定 義 します 補 足 :cols,qutter,width 29

30 注 意 :このタグはネットスケーブでのみ 有 効 です B <HR > 水 平 線 描 画 を 定 義 します 補 足 :size,width,align,noshade,color <FONT > </FONT> フォントのサイズを 定 義 します 補 足 :size,color,face, <BIG> </BIG> 標 準 より 大 きなフォントを 定 義 します <SMALL> </SMALL> 標 準 より 小 さなフォントを 定 義 します <B> </B> ボールド 文 字 を 定 義 します <I> </I> 斜 体 文 字 を 定 義 します <EM> </EM> 強 調 文 字 ( 斜 線 )を 定 義 します <STRONG> </STRONG> より 強 調 文 字 ( 太 字 )を 定 義 します <TT> </TT> テキストの 当 幅 表 示 を 定 義 します <SUP> </SUP> 上 付 け 文 字 を 定 義 します <SUB> </SUB> 下 付 け 文 字 を 定 義 します <S> </S> 取 り 消 しライン 表 示 を 定 義 します <STRIKE> </STRIKE> 取 り 消 しライン 表 示 を 定 義 します <U> </U> 下 線 表 示 を 定 義 します <DEL> </DEL> 取 り 消 しされたことを 定 義 します <INS> </INS> 挿 入 されたことを 定 義 します <CITE> </CITE> 引 用 参 照 元 であるkとを 定 義 します <CODE> </CODE> プログラムコードであることを 定 義 します <KBD> </KBD> ユーザ 入 力 用 テキストであることを 定 義 します <VAR> </VAR> プログラムの 変 数 引 数 であることを 定 義 します <SAMP> </SAMP> プログラムやスクリプトの 出 力 結 果 であることを 定 義 します <ABBR > </ABBR> 省 略 文 字 であることを 定 義 します 補 足 :title <ACRONYM > </ACRONYM> 頭 文 字 であることを 定 義 します 補 足 :title B <H9> </H9> 見 出 しと 文 字 の 大 きさ(9の 部 分 で 指 定 します 数 が 大 きいほうが 大 きくなります)を 定 義 します 補 足 :1~6,align B <BLOCKQUOTE > </BLOCKQUOTE > 引 用 文 であることを 定 義 します 補 足 :cite <Q > </Q> 引 用 文 であることを 定 義 します 補 足 :cite B <PRE> </PRE> ブラウザによる 非 編 集 表 示 を 定 義 します B <XMP> </XMP> ブラウザによる 非 編 集 表 示 を 定 義 します <PLAINTEXT> ブラウザによる 非 編 集 表 示 を 定 義 します <RUBY> <RP> </RP> <R </RUBY> ルビ( 読 み 仮 名 )を 定 義 します T> </RT> <BLINK> </BLINK> ブリンク 表 示 を 定 義 します <MARQUEE > </MARQUEE> 文 字 のスクロール 表 示 を 定 義 します 補 足 :direction,behavior,loop, scrollamount,scrolldelay,bgcolor, height,width,hspace,vspace B <UL > </UL> マーク 付 きリスト 表 示 を 定 義 します 30

31 B B B B <LI > <OL > <LI > <MENU> <LI > <DIR> <LI > <DL > <DT> <DD> <IMG > </OL> </MENU> </DIR> 補 足 :type Web サーバ 構 築 と 各 種 プログラミング 番 号 付 きリスト 表 示 を 定 義 します 補 足 :type,start,value マーク 付 きリスト 表 示 を 定 義 します マーク 付 きリスト 表 示 を 定 義 します </DL> 定 義 型 リスト 表 示 を 定 義 します 補 足 :compact ページ 上 に 画 像 描 画 することを 定 義 します 補 足 :src,lowsrc,alt,width,height, border,align,vspace,hspace,dynsrc,start,loop,usemap <BR > 改 行 を 定 義 します 補 足 :clear <SPACER > 縦 横 スペース 表 示 を 定 義 します 補 足 :size,type,width,height,align <EMBED > 音 声 や 動 画 データの 表 示 を 定 義 します 補 足 :src,width,height,align,autostart, loop,hidden <NOEMBED> </NOEMBED> 動 画 非 対 応 (EMBED) 時 の 表 示 内 容 を 定 義 します <OBJECT > </OBJECT> オブジェクト 表 示 を 定 義 します 補 足 :data,type,align,width,height, border,hspace,vspace,classid,codetype, codebase,archive,standby,usemap,name, declare <BGSOUND > バッググランド 音 楽 を 定 義 します 補 足 :src,balance,volume,loop <A > </A> リンク 先 を 定 義 します 補 足 :href,target,name,accesskey,title <BASE > リンク 先 を 定 義 します 補 足 :target <MAP ><AREA > </MAP> イメージマップを 定 義 します( 複 数 リンク) 補 足 : MAP:name, AREA:shape,cords,href,alt B <TABLE > </TABLE> 表 の 描 画 を 定 義 します 補 足 :border,align,vspace,hspace, width,height,frame,rules,bordercolor, bordercolorlight,bordercolordark, background,bgcolor,cellspacing, cellpadding,summary <TR> <TD> </TD> </TR> 表 の 行 と 列 を 定 義 します 表 描 画 タグ(<TABLE>と</TABLE>など) 内 に 定 義 し ます 補 足 :background,bgcolor,rowspan, 31

32 width,height,colspan,align,valign, nowrap,headers,scope,abbr,axis,id <TH> </TH> 表 の 見 出 しを 定 義 します 表 描 画 タグ(<TABLE>と</TABLE>など) 内 に 定 義 し ます 補 足 :background,bgcolor,rowspan, width,height,colspan,align,valign, nowrap,headers,scope,abbr,axis,id <CAPTION > </CAPTION> 表 ( 行 )に 表 示 されるタイトルを 定 義 します 補 足 :align,valign <THEAD > </THEAD> 表 ( 行 )のヘッダを 定 義 します 補 足 :bgcolor <TBODY > </TBODY> 表 ( 行 )のボディー 部 分 を 定 義 します 補 足 :bgcolor <TFOOT > </TFOOT> 表 のフッター 部 分 を 定 義 します 補 足 :bgcolor <COLGROUP > </COLGROUP> 表 ( 列 )のグループ 化 を 定 義 します 補 足 :span <COL > 表 ( 列 )の 個 別 の 定 義 を 行 います <COLGROUP>と</COLGROUP> 間 に 定 義 します 補 足 :span <FRAMESET ><FRAME > </FRAMESET> フレームの 基 本 的 が 定 義 を 行 います 補 足 : <FRAMESET cols,rows,frameborder, border,framespacing,bordercolor, > <FRAME src,name,frameborder, bordercolor,scrolling,noresize, marginwidth,marginheiht, > B <NOFRAMES> </NOFRAMES> フレーム 未 対 応 ブラウザに 対 する 代 替 表 示 内 容 を 定 義 します <IFRAME > </IFRAME> インラインフレームのオプションを 定 義 します 補 足 :src,name,width,height,frameborder, bordercolor,scrolling,align,marginwidth,marg inheight B <FORM > </FORM> フォームオブジェクトを 定 義 します このフォームオブジェクトは ブラウザからWe bサーバ(apache 等 を 経 由 し PHP にデータを 渡 す)にデータを 送 るための 手 段 を 提 供 することや メールサーバを 起 動 する 手 段 を 提 供 するもので す 補 足 :action,method,enctype <INPUT > 入 力 を 定 義 します 補 足 :type,name,value,size,maxlength, checked,width,height <TEXTAREA > </TEXTAREA> 複 数 行 入 力 を 定 義 します 補 足 :rows,cols,name,wrap <SELECT ><OPTION > </SELECT> プルダウンメニューを 定 義 します 補 足 : <SELECT name,size,,,> 32

33 <OPTION value,selecte,,,> <BUTTON > </BUTTON> 送 信 ボタンなどを 定 義 します 補 足 :type,name,value <STYLE > </STYLE> ページ 全 体 に 対 するスタイルを 定 義 します ヘッダー<HEAD> 内 に 定 義 します 補 足 :type 補 足 : <META>の 設 定 例 <HEAD> <title>uitec の META 設 定 </title> <META name="author" content="uitec"> <META name="build" content=" "> <META name="expires" content=" "> <META name="copyright" content="none"> <META name="robots" content="all"> <META name="reply-to" content="yh5m-yi@asahi-net.or.jp"> <META name="description" content=" PIC を 使 った 電 子 工 作 教 室 パソコン 教 室 Web を 含 む 各 種 プログラミング 教 室 UITEC のホームページです"> <META name="keywords" content=" 電 子 工 作,パソコン 教 室, 各 種 プログラミング(アセン ブラ HTML,JavaScript,PHP,Postgresql),サーバ 構 築, 大 田 原, 栃 木, 大 田 原,"> <META http-equiv="refresh" content="10;url= <META http-equiv="content-type" content="text/html; charset=euc-jp"> </HEAD> <META>タグは Web ページに 対 する 追 加 情 報 を 設 定 するもので name 属 性 と content 属 性,http-equiv 属 性 から 構 成 されます name 属 性 では 任 意 の 属 性 値 を 設 定 し content 属 性 で name 属 性 値 に 対 する 詳 細 内 容 を 設 定 します また http-equiv 属 性 では Web ページのリ フレッシュ 処 理 や Web ページを 作 成 した 文 字 コードの 設 定 などをせっていします また name 属 性 値 の 例 としては 以 下 のようなものがあります author : 作 成 者 build : 作 成 日 expires : 失 効 日 ( 有 効 期 間 ) reply-to : 連 絡 先 copyright :コピーライト robots : 検 索 エンジンに 対 する 設 定 decription : 検 索 エンジン 登 録 詳 細 keywords : 検 索 エンジン 登 録 キーワード 補 足 : 33

34 最 近 の 検 索 エンジンは この META 情 報 を 使 うことはないと 思 われます 補 足 :その 他 の META 情 報 <META http-equiv="refresh" 構 文 :Web ページ 起 動 10 秒 後 に 指 定 された Web ページに 切 り 替 わります <META http-equiv="content-type" 構 文 :ブラウザのエンコードが charset で 設 定 された 内 容 に 切 り 替 わります 34

35 2.3 基 本 的 なタグパラメータの 設 定 HTML 構 文 に 対 して 設 定 される 主 なパラメータの 設 定 値 ( 主 な 項 目 の 概 要 のみ)は 以 下 のとおりです 属 性 主 な 設 定 値 意 味 alink #ffffff, red, yellow, リックテキストをクリックしてい るときのカラーの 値 又 はカラー 名 の 設 定 align left, center, right 並 びの 設 定 top, middle, center, bottom, texttop, absmiddle, baseline, absbottom autostart true, false 自 動 再 生 可 否 の 設 定 alt xxxxxxx 画 像 が 見 つからない 場 合 に 画 像 の 代 わりに 表 示 する 文 字 列 の 設 定 表 示 された 画 像 を 上 にカーソルを 置 いた 場 合 も 表 示 されます accesskey x ハイパーリンク 操 作 での Alt+x で 起 動 するコードの 設 定 abbr xxx テーブル 表 示 における ヘッダ 情 報 の 簡 略 コードの 設 定 action xxx フォームデータ 送 信 先 の 設 定 background xxxxx.gif,"xxxxx.jpg", 背 景 に 表 示 する 画 像 の 設 定 behavior scroll, slide, alternate MARQUEE コマンドに 対 するパター ンの 設 定 border 99 境 界 線 の 太 さの 設 定 bordercolorlight #ffffff, カラー 名 外 枠 の 明 るい 線 に 対 する 設 定 bordercolordark #ffffff, カラー 名 外 枠 の 暗 い 線 に 対 する 設 定 bgcolor #ffffff, カラー 名 背 景 色 の 設 定 balance ~ 音 声 左 右 バランスの 設 定 bordercolor #ffffff, カラー 名 フレームボーダの 色 の 設 定 content text/html;charset=shift_jis, text/html;charset=euc-jp, text/html;charset=unicode, 9;url= http-equiv= content-type と 対 として 使 用 され 当 該 ページが 使 用 する 漢 字 コードを 定 義 します http-equiv= refresh と 対 とし て 使 用 され 指 定 時 間 (9 秒 ) 後 に 指 定 された URL に 自 動 的 に 切 り 替 える 構 文 です cols 99 段 数 の 設 定 画 面 を 横 分 割 するサイ ズの 設 定 入 力 欄 の 横 幅 の 設 定 color #ffffff, red, yellow, black, カラーの 値 又 はカラー 名 の 設 定 blue, brown, gray, pink, cite xxxxx 引 用 元 を 示 す URL の 設 定 clear all, left, right テキスト 回 り 込 み 解 除 の 設 定 35

36 coods xx,xx,xx,xx,xx,xx,,,,,, リンクボタンの 範 囲 の 設 定 cellspacing 99 セル 同 士 の 感 覚 の 設 定 cellpadding 99 セル 内 余 白 サイズの 設 定 colspan 99 セルの 横 方 向 連 結 の 設 定 class xxxx クラス 名 の 設 定 direction left, right スクロール 方 向 の 設 定 dynsrc xxxxx enctype multipart/form-data, application/x-www-form-urlencoded, text/plain フォームデータ 送 信 形 式 の 設 定 face xxx,xxx,xxx フォント( 書 体 名 )の 設 定 frame box, border, void, hsides, テーブルボーダーの 個 別 設 定 vsides, above, below, lhs, rhs frameborder 0, 1, yes, no 境 界 線 の 表 示 有 無 の 設 定 framespacing 99 フレーム 間 の 間 隔 の 設 定 href url リンク 先 の URL の 設 定 tel:xxxx, mailto:xxxx height 99 高 さの 設 定 hspace 99 左 右 の 余 白 数 の 設 定 hidden true, false フラグインディケータ 表 示 / 非 表 示 の 設 定 headers xxxxx 対 応 するセルに 対 するヘッダ 情 報 を 持 つ 別 セルの ID の 設 定 lang ja, en, fr, de, zh link #ffffff, red, yellow, リンクが 設 定 された 文 字 列 のカラ ーの 値 又 はカラー 名 の 設 定 leftmargin 99 language Javascript loop 99, inifinite true, false 繰 り 返 し 回 数 の 設 定 繰 り 返 し 再 生 可 否 の 設 定 lowsrc xxxx.gif,,,, 表 示 する 仮 画 像 の 設 定 marginwidth 99 左 右 マージンの 設 定 marginheight 99 上 下 マージンの 設 定 method post, get フォームデータの 送 信 形 式 の 設 定 maxlength 999 最 大 入 力 文 字 数 の 設 定 name nowrap noresize セル 内 改 行 の 禁 止 の 設 定 フレームリサイズ 禁 止 の 設 定 qutter 99 段 と 段 の 間 のスペースの 設 定 36

37 rel next, prev, index rules all, none, groups, rows, テーブルの 内 罫 線 表 示 の 設 定 cols rawspan 99 セルの 縦 方 向 連 結 の 設 定 rows 99 画 面 を 横 分 割 するサイズの 設 定 入 力 欄 の 縦 幅 の 設 定 size 1 ~ 7-6 ~ +6, 文 字 のサイズ 又 は 線 の 太 さの 設 定 入 力 欄 のサイズ src url スクリプトファイルの 定 義 表 示 する 画 像 の 定 義 サウンドファイルの 定 義 scrollamount 99 移 動 距 離 間 隔 の 設 定 scrolldelay 99 テキスト 移 動 遅 延 時 間 の 設 定 start 99 fileopen, mouseover リスト 表 示 の 最 初 の 数 値 の 設 定 再 生 開 始 方 法 の 定 義 shape rect, circle, poly リンクボタンの 形 状 の 設 定 span 99 表 のグループ 化 の 設 定 summary xxxxxx 表 内 容 表 記 scope row, col, rowgroup, ヘッダ 情 報 影 響 範 囲 の 設 定 colgroup scrolling yes, no, auto スクロール 有 無 の 設 定 style font:xxxx, propertu:xxx,,,, スタイル 属 性 の 設 定 text #ffffff, red, yellow, カラーの 値 又 はカラー 名 の 設 定 topmargin 99 type text/javascript, text/css disk, circle, square A, a, I, i, 1 holizontal, vertical checkbox, radio, text, file, hidden, submit, reset, buttom password 言 語 の 設 定 リストに 表 示 するマーカの 設 定 リストに 表 示 するコードの 設 定 縦 横 スペースの 設 定 フォームオブジェクトの 設 定 入 力 に 対 するパスワードの 設 定 title xxxxx タイトルの 設 定 target xxx, _self, _blank, _top, _parent リンク 先 ターゲットの 設 定 xxx はウインド 名 usemap #xxxxx イメージマップの 設 定 vlink #ffffff, red, yellow, リンク 先 がアクセス 済 みの 文 字 列 のカラーの 値 又 はカラー 名 の 設 定 vspace 99 上 下 の 余 白 の 設 定 volume ~ 0 音 量 の 設 定 valign top, middle, bottom, 上 下 位 置 の 設 定 baseline value xxxxx 入 力 欄 に 表 示 する 規 定 値 の 設 定 37

38 選 択 識 別 子 ( 選 択 内 容 )の 設 定 width 99 線 の 長 さの 設 定 width 99 幅 の 設 定 wrap hard, soft, off 改 行 を 設 定 します 38

39 2.4 スタイルシートの 活 用 (CSS:CascadingStyleSheet) スタイルシートとは Web ページの 見 栄 え を 定 義 するもので HTML 構 文 上 で 使 用 されるタグ 毎 に 一 括 して 同 じ 要 素 ( 色 やサイズなど)を 定 義 することができます このスタイルシートを 使 用 すれば ブラウザの 文 字 サイズの 変 更 ( 表 示 文 字 のサイズ )などの 影 響 を 受 けない 表 示 ができます このスタイルシートの 定 義 方 法 には 外 部 ファイルを 埋 め 込 む 方 法 HTML タグ 埋 め 込 む 方 法 及 び HTML ファイルの 中 で 定 義 する 方 法 の3 種 がある 補 足 : ブラウザの 種 類 やバージョンによっては 異 なる 動 作 をしたり 正 常 に 動 作 しないものもある 設 定 する 要 素 は : で 要 素 のないよう 定 義 ; で 要 素 の 定 義 の 終 了 を 表 す 例 >color:red;fonto-size:16pt 外 部 ファイルとして 定 義 する 方 法 sample.css H1{color:red;background-color:blue;font-size:20pt; H2{color:white;background-color:black;font-size:32pt; HTML <HEAD> <link rel="stylesheet" href="sample.css" type="text/css"> </HEAD> 別 ファイルにスタイルを 定 義 したファイルを 作 成 しておき HTML 本 文 で そのスタイル を 参 照 します HTML タグ 埋 め 込 む 方 法 HTML <H1 style="font-size:20pt"> 20pt の 文 字 列 表 示 </H1> <SPAN style="font-size:20pt;color:blue">フォントサイズ20で 青 色 文 字 </SPAN> タグ 構 文 の 中 で style 構 文 を 使 ったスタイル 定 義 を 行 います 39

40 2.4.3 HTML ファイルの 中 で 定 義 する 方 法 HTML <HEAD> <style type="text/css"> <!-- H1 {font-size:20pt;color:white; H2 { font-size:16pt;color:black; --> </style> </HEAD> <BODY> <H1>20pt 白 文 字 </H1> <H2>16pt 黒 文 字 </H2> <BODY> H1,H1 などのようなタグ 名 に 対 して そのスタイルを 定 義 します スタイルとして 定 義 できる 主 な 内 容 対 象 スタイル 定 義 例 主 な 設 定 内 容 意 味 フォント color:red font-size:14pt font-variant:normal font-family:serif font-weight:bold font-style:normal text-decoration:none text-transform:none blue,red,,, 14pt,large,small,,, normal,small-caps,,, MS 明 朝,MS P ゴシック,,,,, bold,normal,,,, normal,italic,,,, none,underline,,, none,capitalize,,,, 色 指 定 サイズ スタイル フォント 名 太 さ スタイル 装 飾 表 示 方 法 等 テキスト text-align:center line-height:18pt letter-spacing:normal vertical-align:base-align text-indent:1em margin:1px center,right,left,,, 18pt,normal,150%,,, normal,1em,1px,,, baseline,middle,top,,, 1em,1in,10%,,,, 1px,,,,, 段 落 の 左 右 揃 え 行 間 の 幅 文 字 間 隔 上 限 間 隔 インデント 位 置 上 下 左 右 の 幅 40

41 背 景 の 設 定 background-color:red black,rgb(99,99,99),,, 背 景 色 background-image:url image1.jpg,,,,, 背 景 画 像 background-repeat: repeat-x,no-repeat,,,, 並 び 順 background-attachment: fixed,scroll,,,,, 表 示 方 法 background-position: left,right,center,,,,,, 左 右 位 置 表 示 領 域 width:50px auto,1px,,,, 横 幅 height:50px auto,1px,,,, 縦 幅 overflow:scroll none,,,, 表 示 方 法 float:none left,right,none,,,,, 回 り 込 み 指 定 clear:both left,right,both,none,,,, 解 除 方 法 border:thin dotted red midium solid black,,,,, 太 さ 線 種 線 色 margine:1px 1px 2px 3px 4px,,,,, 上 / 右 / 下 / 左 マージ padding:1px 1px 2px 3px 4px,,,,, ン position:relative absolute,fixed,,, 上 / 右 / 下 / 左 の 余 白 top:1px 1px,1pt,,,,,, 配 置 方 法 bottom:1px 1px,1pt,,,,,, 領 域 の 位 置 right:1px 1px,1pt,,,,,, 領 域 の 位 置 left:1px 1px,1pt,,,,,, 領 域 の 位 置 clip:auto rect(1px,4px,,1px,4px),,,, 領 域 の 位 置 display:none block,inline,list-item,,, 範 囲 指 定 cursor:default auto,pointer,text,,,, 表 示 設 定 ポインター 形 状 リスト list-style-type:disc circle,square,decimal,,, マーカータイプ list-style-image:url sampleimg.jpg,,,,,, 画 像 マーカー 指 定 list-style-position:outside inside,outside,,,,, マーカ 表 示 位 置 テーブル width:1px 1px,1pt,1em,,,, 横 幅 border:thin dotted red midium solid black,,,,, 線 色 と 太 さ table-layout:auto fixed,auto,,,,, 表 示 形 式 vertical-align:baseline sub,super,text-top,,,,, 上 下 位 置 text-indent:1em ipx,1pt,,,,, インデント 位 置 補 足 : HTML が 扱 える 長 さの 単 位 in インチ(1in=2.54cm) cm センチメートル mm ミリメートル pt ポイント(1pt=1/72in) pc パイカ(1pc=12pt) 41

42 em 現 在 使 用 中 のフォントサイズを1とした 相 対 値 px ピクセル % パーセント クラスの 定 義 と ID の 定 義 スタイルの 中 でクラスや ID を 定 義 することにより スタイルを HTML プログラムに 中 でダイナミックに 切 り 替 えることができます 以 下 にその 例 を 示 します class-id.htm <HTML> <head> <style type="text/css"> <!--.color1{color:red;.color2{color:green;.color3{color:blue; h1.color4{color:orange;background-color:yellow; h2.color4{color:white;background-color:black; h3.color4{color:pink;background-color:orange; #color6{color:blue p#color5{color:red h1#color5{color:orange;background-color:yellow; --> </style> </head> <body> <h1 class="color1">color1</h1> <h2 class="color2">color2</h1> <h3 class="color3">color3</h1> <h1 class="color4">h1.color</h1> <h2 class="color4">h2.color</h1> <h3 class="color4">h3.color</h1> <p id="color5">p#color</p> <h1 id="color5">h1#color</h1> <h1 id="color6">h1</h1> </body> </HTML> クラスは 以 下 のように 定 義 します クラス 名 { 属 性 : 値 ; 又 は 要 素 名 クラス 名 { 属 性 : 値 ; ID は 以 下 のように 定 義 します #ID 名 { 属 性 : 値 ; 要 素 名 #ID 名 { 属 性 : 値 ; スタイルシートで 定 義 されたクラスを 使 って 文 字 を 描 画 します スタイルシートで 定 義 された ID 名 を 使 って 文 字 を 描 画 します 42

43 2.5 主 な HTML プログラミング 事 例 HTML プログラムでは 前 述 した 各 種 のタグを 使 って 様 々な Web ページを 作 ることができます 以 下 に 基 本 的 なプログラム 事 例 を 紹 介 します 背 景 色 とリンクを 設 定 した 基 本 構 文 です ページの 背 景 色 (bgcolor) 通 常 の 文 字 (text) リンク 先 を 示 す 文 字 (link) リンク 操 作 時 の 文 字 の 色 (alink), 及 びアクセス 済 のリンク 色 (vlink)などを 使 った Web ページの 例 です shtml01.htm プログラム <HTML> <HEAD> <TITLE> 基 本 プログラム </TITLE> </HEAD> <BODY bgcolor="#0000ff" text="#ff0000" link="#00ff00" alink="#ffff00" vlink="00ffff"> 通 常 の 文 字 表 記 です <A href="html01.htm">リンク 先 が 指 定 された 文 字 です </A><BR> </BODY> </HTML> < 練 習 課 題 > 以 下 の 定 義 が 行 われたページを 作 成 してください 背 景 色 表 示 文 字 リンク 文 字 : 黒 : 白 : 白 系 統 フォントサイズの 設 定 及 び 表 示 位 置 などに 関 する 基 本 構 文 です フォントに 関 する 設 定 (<FONT>) 段 落 の 設 定 (<P>) 及 び 区 切 り 線 の 描 画 (<HR>に 関 する 設 定 を 行 った Web ページの 例 です shtml02.htm プログラム <HTML> <HEAD> <TITLE> 基 本 プログラム </TITLE> </HEAD> 43

44 <BODY bgcolor="#000000" text="#ffffff"> <FONT size="1" color="#ff0000" > フォントサイズは1です <BR></FONT> <FONT size="3" color="#00ff00"> フォントサイズは 3 です <BR></FONT> <CENTER> <FONT size="5" color="$0000ff"> フォントサイズは 5 です <BR></FONT> <FONT size="7"> フォントサイズは 7 です <BR></FONT> </CENTER> <FONT size="-1"> <P align="right">フォントサイズは-1です </P></FONT> <FONT size="-2"> <P align="center">フォントサイズは-2 です </P></FONT> <FONT size="+1"> <P align="left">フォントサイズは+1 です </P></FONT> <FONT size="+2"> <HR align="center" color="#ff0000" size="10" width="1000"> フォントサイズは+2 です <BR></FONT> </BODY> </HTML> < 練 習 課 題 > Web サーバ 構 築 と 各 種 プログラミング フォントサイズを, 相 対 指 定 により 7から1まで 段 階 的 に 小 さく 表 示 するプログラムを 作 成 し てください (カラーも 段 階 別 に 任 意 の 色 で 切 り 替 えてください) 文 字 列 のスクロール 描 画 とリスト 表 示 に 関 する 基 本 構 文 です リスト 表 示 及 びテロップ 表 示 などを 行 う Web ページの 例 です shtml03.html プログラム <HTML> <HEAD> <TITLE> 基 本 プログラム </TITLE> </HEAD> <BODY bgcolor="#000000" text="#ffffff"> 右 方 向 スクロール 形 式 による 文 字 描 画 のサンプルプログラムです <BR> <MARQUEE direction="right" behavior="scroll" bgcolor="#ff0000" width="800" > <OL start="1"> <LI>この 文 字 は 番 号 順 のリスト 指 定 がしてあります <LI>この 文 字 は 番 号 順 のリスト 指 定 がしてあります <LI>この 文 字 は 番 号 順 のリスト 指 定 がしてあります </OL> 44

45 </MARQUEE> <BR> ワイパー 形 式 による 文 字 描 画 のサンプルプログラムです <BR> <MARQUEE direction="left" behavior="alternate" bgcolor="#ff0000" width="800" > <MENUE> <LI>この 文 字 はメニューリスト 指 定 がしてあります <LI>この 文 字 はメニューリスト 指 定 がしてあります <LI>この 文 字 はメニューリスト 指 定 がしてあります </MENUE> </MARQUEE> </BODY> </HTML> 補 足 : MARQUEE とは 劇 場 のひさし 等 の 意 味 があります < 練 習 課 題 > <MARQUEE> タグには 文 字 列 の 動 きを 制 御 するパラメータとして スクロールの 速 さを 指 定 する( 小 さければ 早 い)scrolldelay= 9999 と スクロールする 時 の 一 回 の 移 動 距 離 をピクセ ル 数 で 指 定 する scrollamount= 9999 の 構 文 があります 現 在 設 定 されている 動 きよりも 早 い 動 きをするように 設 定 してください 画 像 描 画 に 関 する 基 本 構 文 です 画 像 及 び 動 画 を 扱 う Web ページの 例 です 実 行 前 に sample01.jpg 画 像 と moveimage.swf 動 画 ファ イルを 本 プログラムと 同 じフォルダに 登 録 します shtml04.html プログラム <HTML> <HEAD> <TITLE> 基 本 プログラム </TITLE> </HEAD> <BODY bgcolor="#000000" text="#ffffff"> 画 像 描 画 と 文 字 列 表 示 に 関 するサンプルプログラムです <BR><BR> <IMG src="sample01.jpg" width="200" height="200" alt=" 画 像 無 " align="top"> この 文 字 列 は 画 像 の 右 上 に 表 示 されるように 設 定 してあります <BR><BR> <IMG src="sample01.jpg" width="200" height="200" alt=" 画 像 無 " align="middle"> この 文 字 列 は 画 像 の 右 側 中 央 に 表 示 されるように 設 定 してあります <CENTER> <BR><BR> 音 声 動 画 を 描 画 するプログラムです 45

46 <BR> <EMBED src="moveimage.swf"> </EMBED> <NOEMBED> 音 声 動 画 がサポートされていません </NOEMBED> </CENTER> </BODY> </HTML> 補 足 : 音 声 動 画 画 像 が 描 画 できるかどうかはブラウザの 機 能 に 依 存 します < 練 習 課 題 > 全 ての 画 像 が 横 方 向 の 中 央 に 表 示 され 文 字 列 は 各 画 像 の 下 に 表 示 されるように 改 良 してくだ さい (ヒントとしては 文 字 列 を 下 側 に 表 示 する 為 には 文 字 列 を 段 落 と 定 義 します) リンク 処 理 に 関 する 基 本 構 文 です Web ページを 切 り 替 えたり 同 じページ 内 で 表 示 を 切 り 替 える Web ページ 例 です shtml05.html プログラム <HTML> <HEAD> <TITLE> 基 本 プログラム </TITLE> </HEAD> <BODY bgcolor="#000000" text="#ffffff"> <A href="html01.htm" target="_blank"> 新 しいウインドを 開 いてリンク 先 のページを 表 示 します </A> <BR> <A href="#link1">リンク1</a> <BR> <A href="#link2">リンク 2</A> <BR> <BR> リンク 指 定 の 無 い 文 字 列 です <BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR> <BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR> <A name="link1">リンク 先 1</A> <BR> リンク1から 分 岐 される 文 字 列 です <BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR> <BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR> 46

47 <BR> <BR> <A name="link2">リンク 先 2</A> <BR> リンク2から 分 岐 される 文 字 列 です <BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR> <BR> <A 開 きます</A><BR> </BODY> </HTML> 補 足 : 別 のページの 任 意 の 文 字 列 に 分 岐 させたい 場 合 は URL を 併 用 して 設 定 します ( 例 :<A href="xxxx.html#link1">リンク1</a>)また 同 じページに 上 書 き 表 示 する 場 合 は Target パ ラメータを 省 略 するか _self に 切 り 替 えます < 練 習 課 題 > 上 記 プログラムを 編 集 して 画 像 を 持 つプログラムを2つ 作 成 し 一 方 の 画 像 をクリックした 場 合 に 別 のページに 切 り 替 わり 切 り 替 わった 画 像 をクリックすると 元 のページに 戻 るプログラ ムを 作 成 してください テーブル 描 画 に 関 する 基 本 構 文 です 表 を 描 画 する Web ページの 例 です リレーショナルデータベースの 基 本 は 表 ですので その 内 容 を 表 示 する 場 合 は この 表 作 成 構 文 が 非 常 に 重 要 になります shtml06-1.html プログラム <HTML> <HEAD> <TITLE> 基 本 プログラム </TITLE> </HEAD> <BODY bgcolor="#505050" text="#ffffff"> <TABLE border="3" align="center" width="500" height="300"> <CAPTION align="top"> テーブル 描 画 のサンプルプログラムです </CAPTION> <TR bgcolor="#0000ff"> <TH>アイテム1</TH><TH>アイテム2</TH><TH>アイテム3</TH><TH>アイテム4</TH> </TR> <TR bgcolor="#000000" align="center"> <TD>1000</TD><TD>500</TD><TD>800</TD><TD>2000</TD> </TR> <TR bgcolor="#000000" align="center"> <TD>800</TD><TD>600</TD><TD>1000</TD><TD>600</TD> 47

48 </TR> <TR bgcolor="#000000" align="center"> <TD>1000</TD><TD>500</TD><TD>800</TD><TD>2000</TD> </TR> <TR bgcolor="#000000" align="center"> <TD>800</TD><TD>600</TD><TD>1000</TD><TD>600</TD> </TR> </TABLE> </BODY> </HTML> Web サーバ 構 築 と 各 種 プログラミング 補 足 : テーブルのセルの 大 きさは 表 示 しようとする 文 字 の 長 さに 応 じて 変 わります < 練 習 課 題 > 表 に 表 示 される 各 項 目 の 内 容 を 右 詰 め 表 示 としてください 背 景 と 文 字 の 色 を 任 意 の 色 に 変 更 してください shtml06-2.html プログラム <HTML> <HEAD> <style type="text/css"> <!-- TH { font: 16pt/24px "MS Pゴシック" TD { font: 18pt/24px "MS Pゴシック" --> </style> </HEAD> <BODY> <TABLE width="800" border="1" height="200"> <THEAD bgcolor="blue"> <TR> <TH align="center">head1</thd> <TH align="center">head2</th> <TH align="center">head3</th> </TR> </THEAD> <TBODY bgcolor="yellow"> <TR align="center"> <TD>body11</TD> <TD>body12</TD> <TD>body13</TD> </TR> <TR align="center"> <TD>body21</TD> <TD>body22</TD> <TD>body23</TD> 48

49 </TR> <TR align="center"> <TD>body31</TD> <TD>body32</TD> <TD>body33</TD> </TR> </TBODY> <TFOOT bgcolor="green" align="center"> <TR> <TD>foot1</TD> <TD>foot2</TD> <TD>foot3</TD> </TR> </TFOOT> </TABLE> </BODY> </HTML> < 練 習 課 題 > 横 方 向 のセル 数 が5ヶの 表 を 作 成 してください セルの 結 合 を 行 う 構 文 です EXCEL やワードの 表 描 画 で 使 用 されるセルの 結 合 と 同 等 の 処 理 が 実 現 できます shtml07.html プログラム <HTML> <HEAD> <style type="text/css"> <!-- TH { font: 16pt/24px "MS Pゴシック";text-align:center; TD { font: 18pt/24px "MS Pゴシック";text-align:center; --> </style> </HEAD> <BODY> <TABLE border="1" width=500> <TR> <TH>title-1<TH colspan="2">title-2 <TR> <TD rowspan="2">item-1 <TD>1<TD>2 <TR> 49

50 </BODY> </HTML> <TD>10<TD>20 </TABLE> 補 足 : colspan 及 び rowspan パラメータを 使 った 上 記 セル 結 合 結 果 は 以 下 のようになります < 練 習 課 題 > 以 下 のテーブルを 作 成 してください ヘッド 部 分 の 背 景 色 は 黒 フォントは 白 で 表 示 し てください title-1 title-2 title item フレーム 分 割 に 関 する 基 本 構 文 です フレーム 分 割 を 行 った Web ページの 例 です プログラム 実 行 前 に frame1.htm frame2.htm frame3.htm frame4.htm プログラムを 作 成 し 同 じディレクトリに 登 録 してください なお これらのプログラムは フレームnです (nは 1,2,3,4 のいぜれか)と 表 示 します このようなフレーム 分 割 を 行 った 場 合 各 フレームに 別 々のページを 描 画 することが 可 能 となります shtml08.html プログラム <HTML> <HEAD> <TITLE> 基 本 プログラム </TITLE> </HEAD> <FRAMESET rows="120,*"> <FRAME src="frame1.htm" frameborder="1"> <FRAMESET cols="130,*"> <FRAME src="frame2.htm" frameborder="1"> <FRAME src="frame3.htm" frameborder="1"> </FRAMESET> </FRAMESET> 50

51 <BODY bgcolor="#000000" </BODY> </HTML> text="#ffffff"> 補 足 : 実 行 前 に frame1.htm,frame2.htm,frame3.htm プログラム( 文 字 表 示 のみ)を 作 成 して 登 録 してください フレーム 分 割 を 行 うタグは <BODY>タグの 前 に 定 義 します < 練 習 課 題 > 3 番 目 のフレームを 横 に2 分 割 し 合 計 4 分 割 のフレームを 作 成 してください 分 割 する 方 向 と 大 きさは 任 意 とします 内 部 フレームを 使 った 基 本 構 文 です HTML ではフレームに 中 にフレームを 宣 言 (IFRAME)して その 中 で 独 立 した Web ページを 表 示 させるこ とが 出 来 ます shtml09.html プログラム <HTML> <BODY bgcolor=silver> <IFRAME src="frame1.htm" marginheight="0" margnwidth="0" width=500 height=300 scrolling="yes" align=right frameborder="no" bordercolor="black" align=center style="position: absolute;left:200px;top:100px;"> </IFRAME> </BODY> </HTML> < 練 習 課 題 > 内 部 フレームを 横 に2つ 並 べて 表 示 するプログラムを 作 成 してください 大 きさは 任 意 と します フォームを 使 ったユーザインターフェースに 関 する 基 本 構 文 です 操 作 者 との 対 話 を 行 う Web ページの 例 です shtml10.html プログラム <HTML> <HEAD> 51

52 <TITLE> 基 本 プログラム </TITLE> </HEAD> <SCRIPT language="javascript"> <!-- function input_java(){ document.write("javascript プログラムが 実 行 されました "); //--> </SCRIPT> <BODY bgcolor="#000000" text="#ffffff"> JavaScript で 作 成 されたプログラム 又 は PHP で 作 成 されたプログラムを 実 行 するサンプル プログラムです <BR> <FORM name="myform" method="get" action="sample1.php"> <INPUT type="button" value="javascript 実 行 " onclick="input_java()"> JavaScript で 作 成 されたプログラムが 実 行 されます <BR><BR> <INPUT type="text" name="item1" size=6 align="right"> <INPUT type="submit" value="php 実 行 " width="10"> PHP で 作 成 されたプログラムが 実 行 されます </FORM> </BODY> </HTML> 補 足 : PHP プログラムが 実 行 される 場 合 item1 という 識 別 子 で ユーザが 入 力 したデータが URL の 一 部 として PHP プログラムに 渡 されます (URL の 後 ろに 追 加 される? 以 降 が 渡 される データです) < 練 習 課 題 > input2_java 関 数 と クリック 時 にその 関 数 を 呼 び 出 す <INPUT> 構 文 を 適 切 な 位 置 に 追 加 してください input2_java 関 数 が 実 行 された 時 には インプット2が 実 行 され ました と 表 示 してください プラグインデータの 埋 め 込 みに 関 する 基 本 構 文 です プラグイン 処 理 を 扱 う Web プログラムの 例 です shtml11.html プログラム <html> <body> <CENTER> <EMBED src="asunaro.wma" autostart="true" hidden="true" loop="true" ></EMBED> 52

53 <object classid="clsid:d27cdb6e-ae6d-11cf-96b " codebase=" on=4,0,0,0" width=300 height=300> <param name=movie value="slide.swf"> <param name=quality value=high> <embed src="slide.swf" quality=high width=300 height=300 type="application/x-shockwave-flash" pluginspage=" =ShockwaveFlash"> </embed> </object> <BR> <EMBED src="sample01.wmv" autostart="true" hidden="false" loop="true" width="300" height="300" ></EMBED> </CENTER> </body> </html> 補 足 : <OBJECT> タグは 画 像 他 の 文 書 アプレットなどの オブジェクト を 文 書 内 に 埋 め 込 むためのタグで <IMG> <IFRAM>E <EMBED>などの 代 わりに 使 用 できる 汎 用 タグです <EMBED>とは はめ 込 むという 意 味 を 持 つタグです 本 例 で 使 用 されている<OBJECT>タグの 中 に<EMBED>を 含 めているのは ブラウザによっては <OBJECT>タグが 解 釈 できない 場 合 がある 理 由 からです (この 場 合 は <EMDED>タグにより 表 示 されます) < 練 習 課 題 > 動 画 を 自 分 で 作 成 して 画 面 の 中 央 に 描 画 してください JavaScript や PHP と 連 携 をとるための FORM 文 に 関 する 構 文 様 々なユーザインターフェースを 扱 う Web ページの 例 です shtml12.html プログラム <HTML> <BODY> <H1>** FORM 構 文 を 使 ったユーザインターフェース ** <BR></H1> <FORM MOTHOD="GET" ACTION="sample.php"> テキスト 入 力 <BR> <INPUT NAME="TXT" TYPE="TEXT" SIZE=40> <BR><BR>パスワード 入 力 <BR> <INPUT NAME="PWD" TYPE="PASSWORD" SIZE=40> <BR><BR> 隠 しデータ 送 信 <BR> <INPUT NAME="HID" TYPE="HIDDEN" SIZE=40 VALUE=" 隠 し 情 報 "> <BR> 複 数 行 テキスト 入 力 <BR> <TEXTAREA NAME="TXTA" ROWS=5 COLS=80 WRAP=OFF> 53

54 </TEXTAREA> <BR><BR>ラジオボタン 入 力 <BR> <INPUT NAME="RED" TYPE="RADIO" VALUE="RED1" CHECKED>ラジオ1 <INPUT NAME="RED" TYPE="RADIO" VALUE="RED2">ラジオ2 <INPUT NAME="RED" TYPE="RADIO" VALUE="RED3">ラジオ3 <BR><BR>チェックボタン 入 力 <BR> <INPUT NAME="CHK1" TYPE="CHECKBOX" VALUE="CHK1">チェックボタン1 <INPUT NAME="CHK2" TYPE="CHECKBOX" VALUE="CHK2" CHECKED>チェックボタン2 <INPUT NAME="CHK3" TYPE="CHECKBOX" VALUE="CHK3">チェックボタン3 <BR><BR>プルダウンメニュー 入 力 <BR> <SELECT NAME="PUL"> <OPTION VALUE="PUL1">プルダウンメニュー1 <OPTION VALUE="PUL2">プルダウンメニュー2 <OPTION VALUE="PUL3" SELECTED>プルダウンメニュー3 </SELECT> <BR><BR>リストボックス 入 力 <BR> <SELECT NAME="LST" SIZE=5> <OPTION VALUE="LST1">オプションリスト1 <OPTION VALUE="LST2">オプションリスト2 <OPTION VALUE="LST3" SELECTED>オプションリスト3 </SELECT> <BR><BR> ファイル 選 択 処 理 <BR> 画 像 選 択 :<INPUT size=80 type="file" name="uploadfile"> <BR><BR>リセットボタン 処 理 <BR> <INPUT NAME="RST" TYPE="RESET" VALUE="リセット"> <BR><BR> 送 信 ボタン 処 理 <BR> <INPUT NAME="SUB" TYPE="SUBMIT" VALUE=" 送 信 "> </FORM> </BODY> </HTML> JavaScript 及 び PHP プログラムの 処 理 の 部 分 は 後 述 します なお 送 信 ボタンが 押 された 場 合 に 実 行 される sample.php は 存 在 しませんので NotFound のエラーとなります 54

55 2.6 HTML による Web ページ 作 成 の 応 用 Web ページの 基 本 パターンとして 以 下 のようなトップページと ページ 切 り 替 えプログラムを 作 成 し ます 画 像 は 任 意 のものを 用 意 してください トップページの 例 です index.html <HTML> <HEAD> <TITLE> 初 めての Web プログラミング </TITLE> <style type="text/css"> <!-- TD{ font:20pt/24px H1{ font:24pt/30px;color:red;font-wight:bold; --> </style> <meta http-equiv="content-type" content="text/html"; charset="shift_jis"> </HEAD> <BODY background="back.jpg" alink="white" vlink="white" link="white" text="black"> <CENTER> <BR> <H1>HTML を 使 ったトップページのサンプルです </H1> <BR> 55

56 <TABLE> <TR> <TD> <DIV align="center"> <A href="page1.htm"> <IMG src="page1.jpg" width="150" height="100" > </A> </DIV> </TD> <TD> <H2><FONT color="black">ページ1に 切 り 替 えます </H2> </TD> </TR> <TR> <TD> </TD> <TD> </TD> </TR> <TR> <TD> </TD> <TD> </TD> </TR> <TR> <TD> </TD> <TD> Web サーバ 構 築 と 各 種 プログラミング <DIV align="center"> <A href="page2.htm"> <IMG src="page2.jpg" width="150" height="100" > </A> </DIV> <H2><FONT color="black">ページ2に 切 り 替 えます </H2> <DIV align="center"> <A href="page3.htm"> <IMG src="page3.jpg" width="150" height="100" > </A> </DIV> <H2><FONT color="black">ページ3に 切 り 替 えます </H2> <DIV align="center"> <A href="page4.htm"> <IMG src="page4.jpg" width="150" height="100" > </A> </DIV> <H2><FONT color="black">ページ4に 切 り 替 えます </H2> 56

57 </TD> </TR> <TR> <TD> </TD> <TD> </TD> </TR> </CENTER> </BODY> </HTML> <DIV align="center"> <A href="page5.htm"> <IMG src="page5.jpg" width="150" height="100" > </A> </DIV> <H2><FONT color="black">ページ5に 切 り 替 えます</H2> 補 足 : 画 像 (300x200)を5 枚 page1.jpg~page5.jpg の 名 前 で 登 録 します サブページの 例 です page1.htm <HTML> <HEAD> <TITLE>サブページです </TITLE> <style type="text/css"> <!-- TD{ font:20pt/24px H1{ font:24pt/30px;color:red;font-wight:bold; --> </style> <meta http-equiv="content-type" content="text/html"; charset="shift_jis"> </HEAD> <BODY background="back.jpg" alink="white" vlink="white" link="white" text="black"> <CENTER> <BR> <H1>サブページ1です</H1> <BR><BR> 57

58 <TABLE> <TR> <TD> </TD> </TR> </CENTER> </BODY> </HTML> <DIV align="center"> <A href="index.html"> <IMG src="page1.jpg" width="300" height="200" > </A> </DIV> 補 足 : page2.htm~page5.htm は 上 記 を 参 考 に 作 成 してください Web サーバ 構 築 と 各 種 プログラミング 課 題 1: トップページに<MARQUEE>タグを 使 用 して" 始 めてのトップページ 描 画 です と 表 示 してください ( 描 画 方 法 は 任 意 とします 課 題 2: Gif アニメーション 画 像 を 作 成 し トップページの 任 意 の 場 所 に 描 画 してください 課 題 3: スタイルシートを 変 更 することにより <H1>タグで 表 示 されている 文 字 列 の 背 景 を 黒 フォントを 白 の 太 字 で 表 示 してください 58

59 第 3 章 JavaScript プログラミング 3.1 JavaScript プログラミングの 特 徴 Web 環 境 における JavaScript 言 語 は HTML プログラムの 中 に 挿 入 されるスクリプト 言 語 であり 一 般 的 にはクライアント 側 のブラウザソフトにより クライアント 側 で 解 釈 実 行 されるスクリプトです 但 し ASP(ActiveServerPages)や IIS(InternetInformationServer) 等 のようなサーバ ソフトは この JavaScript プログラムをサーバ 側 で 解 釈 し 実 行 することができます また 最 近 では Web 以 外 でも 一 般 的 なプログラム 同 様 に JavaScript を 解 釈 実 行 できるものも 登 場 しています 本 編 では クライアント 側 のブラウザソフトにより 解 釈 実 行 されるスクリプト 言 語 に 限 定 して 解 説 す るものとします このブラウザソフトにより 解 釈 実 行 される JavaScript プログラムの 主 な 特 徴 は 以 下 の 通 りです JavaScript は HTML の 中 で 定 義 されます JavaScript プログラムは HTML プログラムの 中 に 以 下 のような<SCRIPT>タグを 使 って 挿 入 します ま た 挿 入 する 場 所 は HTML の<BODY>タグの 前 でも <BODY>タグと</BODY>タグの 間 でも 構 いません また ブラウザソフトは JavaScript プログラムを 検 出 すると その 部 分 を 順 次 実 行 しますので ページを 表 示 する 前 処 理 を JavaScript プログラムで 定 義 したい 場 合 は <BODY>タグの 前 に 挿 入 します なお JavaScript は HTML と 異 なり 大 文 字 / 小 文 字 を 識 別 しますので 大 文 字 / 小 文 字 に 注 意 して 記 述 しなければいけません Java01.html プログラム <HTML> <BODY> <SCRIPT language="javascript"> <!-- document.write("this part is coded by JavaScript"); alert("javascript Confirm"); //--> </SCRIPT> <BR> This Part is coded by HTML </BODY> </HTML> 補 足 1: JavaScript はバージョンにより 提 供 される 機 能 が 異 なります JavaScript のバージョンを 規 定 する 場 合 は JavaScript 部 分 を 以 下 のように 変 更 します JavaScript1.3 Jscript 等 補 足 2: JavaScript プログラムに 中 で 宣 言 される <!-- //--> の 部 分 は JavaScript プログラム を 解 釈 できないブラウザの 場 合 は この 部 分 をコメントアウトすることを 意 味 します また "//"の 部 分 は ネットスケープナビゲータ 用 の 設 定 ( 約 束 事 )です 59

60 補 足 3: JavaScript プログラムを 実 行 する 場 合 は エラーを 検 出 した 時 に 逐 次 その 内 容 を 表 示 するモード に 設 定 してデバッグした 方 が 効 率 的 です 設 定 方 法 は インターネットエクスプローラ 画 面 を 表 示 し ツール インターネットオプション [ 詳 細 設 定 ]タブ スクリプトごとに 通 知 を 表 示 する をチェックします また 上 記 を 設 定 しない 場 合 は ブラウザのステータスバーに 左 端 に 表 示 されるア イコンをクリックすることによりエラー 内 容 を 見 ることができます JavaScript プログラムのソースの 隠 蔽 JavaScript で 作 成 されたプログラムは ブラウザの 表 示 メニュー(ソース)を 使 って 見 ることができま すが 見 せたくない 場 合 の 手 段 として 外 部 プログラム 形 式 で 作 成 し HTML プログラムから 呼 び 出 すこと ができます この 場 合 は ブラウザの 表 示 機 能 を 使 ってもプログラムは 見 ることが 出 来 なくなります Java02.html プログラム <HTML> <BODY> <SCRIPT language="javascript" src= extscript.js > </SCRIPT> <BR> This Part is coded by HTML </BODY> </HTML> extscript.js プログラム document.write("this part is coded by JavaScript"); alert("javascript Confirm"); 補 足 : 外 部 ファイルを 使 えるようにする 為 には Web サーバの 設 定 が 必 要 です 但 し Web サーバによ ってはこの 機 能 を 実 現 することができないものもあります 60

61 3.1.5 JavaScript は 全 てのブラウザが 表 示 できる 訳 ではない JavaScript プログラムは クライアント 側 で 動 作 するブラウザの 種 類 やバージョンにより 解 釈 実 行 できない 場 合 があります この 対 応 として JavaScript プログラム 部 分 を 無 視 させる 設 定 があります JavaScript プログラムを 解 釈 できないブラウザソフトに 対 し スクリプト 部 分 を 無 視 させるか 別 のメッ セージを 表 示 させる 仕 組 みがあります Java03.html プログラム <HTML> <BODY> <SCRIPT language="javascript"> <!-- document.write("this part is coded by JavaScript"); alert("javascript Confirm"); //--> </SCRIPT> <NOSCRIPT> JavaScript is not supported! </NOSCRIPT> <BR> This Part is coded by HTML </BODY> </HTML> 補 足 : <! と // の 間 に JavaScript プログラムを 挿 入 することにより JavaScript がサポー トされていないブラウザソフトでは <SCRIPT>から</SCRIPT>までの 部 分 が 無 視 します その 代 わ りとして <NOSCRIPT>から</NOSCRIPT> 部 分 のみが 実 行 します JavaScript をサポートしている ブラウザソフトは <NOSCRIPT>から</NOSCRIPT> 部 分 を 無 視 します JavaScript プログラムのコメント 表 記 は C 言 語 や Java と 同 じ JavaScript には 他 の 言 語 同 様 に プログラムの 中 にコメントを 挿 入 することができます このコメン ト 行 はブラウザソフトにより 実 際 の 実 行 時 に 無 視 されます Java04.html プログラム <HTML> <BODY> <SCRIPT <!-- language="javascript"> // このラインはコメントです /* この 部 分 以 降 はコメントです document.write("this part is coded by JavaScript"); alert("javascript Confirm"); 61

62 この 部 分 までがコメントです */ //--> </SCRIPT> <BR> This Part is coded by HTML </BODY> </HTML> 補 足 : Java プログラムと 同 じ 構 文 で // 以 降 に 書 かれた 部 分 はブラウザソフトにより 無 視 されま す また C 言 語 と 同 じ 構 文 である /* から */ で 囲 まれた 部 分 は 全 てブラウザソフトにより 無 視 されます JavaScript プログラムは 変 数 定 義 もできる JavScript 言 語 において 変 数 を 定 義 する 場 合 は Var xxx; 形 式 で 表 現 し 型 宣 言 は 行 いません JavaScript では 変 数 に 値 が 設 定 された 場 合 に その 内 容 に 応 じて 整 数 型 か 文 字 列 型 か 浮 動 小 数 点 型 か 論 理 型 等 を 自 動 的 に 決 定 します 尚 JavaScript が 使 用 している 予 約 語 (if,case continue 等 ) は 使 用 できません ( 予 約 語 に 関 しては 専 門 の 参 考 書 を 参 照 ください) 以 下 に 変 数 定 義 の 例 ( 初 期 値 設 定 付 き)を 紹 介 します Java05.html プログラム <HTML> <BODY> <SCRIPT language="javascript"> var aaaa= abcd ; var bbbb=1234; var cccc=123.4; document.write( aaaa=,aaaa, <BR> ); document.write( bbbb=,bbbb, <BR> ); document.write( cccc=,cccc, <BR> ); </SCRIPT> </BODY> </HTML> 補 足 : aaaa には 文 字 列 型 で 登 録 され bbbb には 整 数 型 cccc には 浮 動 小 数 点 型 で 登 録 されます 尚 システムの 予 約 語 と 一 致 しない 工 夫 として アンダースコアと 併 用 ( 例 えば a_case)すること を 推 奨 します JavaScript プログラムを 作 成 する 上 での 注 意 62

63 1) JavaScript 言 語 では 他 の 一 般 的 な 言 語 (VB,C,Perl 等 ) 同 様 に 演 算 処 理 構 文 や 制 御 構 文 が 提 供 されており それらを 使 うことにより 条 件 により 異 なった 動 作 をする 動 的 な Web ページを 作 成 することもできます 2) クライアント 側 で 入 力 された 情 報 などを クッキー 情 報 としてクライアント 側 のハードディスク に 登 録 しておくことができます この 情 報 は クライアント 側 から 要 求 されるページ 表 示 要 求 に 対 し 異 なる 動 きをさせる 目 的 等 に 使 われます 補 足 : JavaScript 言 語 には 上 記 以 外 に 様 々な 構 文 が 提 供 されています JavaScript プログラミングを 効 果 的 に 活 用 するためには 詳 細 な 説 明 書 が 必 要 です その 場 合 は 専 用 の 参 考 書 を 入 手 されることをお 勧 めしま す 63

64 3.2 JavaScipt プログラミングの 基 本 JavaScript プログラムは HTML とは 異 なり 動 きのある 処 理 を 行 うことができます 例 えば 現 在 の 時 間 により 処 理 内 容 を 変 えたり 画 像 の 連 続 表 示 などを 行 うことができます 以 下 に JavaScript 言 語 を 使 った 基 本 的 なプログラム 事 例 を 紹 介 します 補 足 : 算 術 演 算 子 代 入 演 算 子 論 理 演 算 子 比 較 演 算 子 条 件 演 算 子 及 び 文 字 列 演 算 子 などに 関 する 構 文 は 全 て PHP 言 語 と 同 じですので 詳 細 は PHP 言 語 の 項 を 参 照 ください JavaScript の 基 本 仕 様 1) JavaScript で 処 理 できるイベント HTML でブラウザ 画 面 上 に 描 画 されたものに 対 して マウス 等 で 何 らかの 操 作 を 行 った 場 合 その 操 作 に 応 じたイベントが 発 生 します JavaScript プログラムは そのイベントの 中 の 以 下 に 示 すイベントに 対 し て 任 意 の 処 理 を 行 うことができます JavaScript プログラムのどの 部 分 を 実 行 するかは HTML タグの 中 で 定 義 されます イベント 処 理 名 意 味 有 効 なタイプ onabort イメージロードの 中 断 onblur フォーカスを 失 ったとき select,text,textarea onclick クリック 操 作 時 button,checkbox,radio,link, reset,submit onchange 値 が 変 化 した 時 select,text,textarea onerror エラー 発 生 時 onfocus フォーカス 時 onload ページロード 時 onmouseout マウスがオブジェクトから 出 た 時 link onmouseover マウスがオブジェクトに 入 った 時 link onselect テキストが 選 択 された 時 onreset フォームがリセットされた 時 form onsubmit 送 信 ボタンクリック 時 form onunload ページがアンロードされた 時 補 足 : HTML において どのイベントが 発 生 したときに JavaScript プログラムのどの 部 分 を 実 行 するかは 以 下 のような 方 法 で 定 義 します 64

65 <INPUT TYPE="button" onclick="jsfunc1()"> 上 記 で 定 義 されたボタンがクリックされた 場 合 は JSfunc1という 名 前 で 定 義 された 関 数 が 実 行 されます <IMG src=image.jpg onmouseover="jsfunc2()"> 上 記 の IMG タグで 表 示 された 画 像 上 にカーソルが 置 かれた 場 合 JSfunc2という 名 前 で 定 義 された 関 数 が 実 行 されます JavaScript の 基 本 的 な 仕 様 変 数 関 数 などの 名 前 は 英 字 かアンダーバーで 始 まる 英 数 字 で 定 義 します 大 文 字 小 文 字 は 区 別 されます で 始 まる 文 字 列 は 特 殊 な 意 味 を 持 ちます \b バックスペース \f フォームフィード \n 復 帰 / 改 行 \r 改 行 \t タブ \\ 文 字 \' 文 字 \" 文 字 変 数 定 義 変 数 は 宣 言 してもしなくとも 構 いません また 宣 言 する 場 合 は 型 の 宣 言 を 行 う 必 要 はありません 型 は その 変 数 に 値 が 格 納 される 時 に 自 動 的 に 決 まります ( 変 数 は var xxxx;と 定 義 します) Function 構 文 の 中 で 定 義 される 変 数 はローカル 変 数 として Function 構 文 の 外 で 定 義 される 変 数 はグロ ーバル 変 数 (どの 関 数 でも 参 照 できる)として 定 義 されます javahensu.htm <HTML> <script language="javascript"> <!-- aaaa=100; function test1(){ bbbb=200; document.write(aaaa,"<br>"); document.write(bbbb,"<br>"); 65

66 function test2(){ document.write(aaaa,"<br>"); document.write(bbbb,"<br>"); //--> </script> <BODY> <CENTER> <IMG src=image1.jpg onclick=test1();> <BR> <IMG src=image1.jpg onclick=test2();> </CENTER> </BODY> </HTML> 補 足 : 上 記 例 文 は ブラウザのバージョンにより "test2" 関 数 がエラーとなる 場 合 と 正 常 に 動 作 する 場 合 があります 配 列 定 義 JavaScript で 配 列 を 使 う 場 合 は 以 下 のような 定 義 をします var xxx=new Array(5); 変 数 xxxが5つの 配 列 形 式 で 定 義 されます この 配 列 の 参 照 は xxx[0]~xxx[4]で 行 います 以 下 は 配 列 に 色 識 別 子 を 登 録 しておき ボタン 操 作 で 新 しいウインドを 開 き そのウインド 上 で 背 景 色 を 切 り 替 えるプログラムの 例 です javahairetsu.htm <HTML> <SCRIPT LANGUAGE="JavaScript"> dt=new Array(); dt[0]="red"; dt[1]="green"; dt[2]="blue"; dt[3]="yellow"; dt[4]="pink"; dt[5]="black"; dt[6]="white"; dt[7]="#102030"; dt[8]="#504030"; dt[9]="#a0b0c0"; index=0; 66

67 function wnview(){ this.document.bgcolor=dt[index]; this.document.frame1.indata.value=dt[index]; index++; if (index>9){ index=0; settimeout("wnview();",2000); function wnclose(){ this.window.close(); </SCRIPT> <BODY> <IMG src=test.jpg onclick=wnview();> <IMG src=test.jpg onclick=wnclose();> <FORM name="frame1"> <INPUT type="text" size="10" name="indata" value="red"> </FORM> </BODY> </HTML> 補 足 1: 背 景 色 の 切 り 替 え 用 画 像 (start.jpg)と 処 理 の 終 了 用 画 像 (end.jpg)を 100x100 の 大 き さで 作 成 し 登 録 後 に 実 行 してください 最 初 の 画 像 をクリックすると 背 景 色 が 切 り 替 わり 2 番 目 の 画 像 をクリックするとウインドが 閉 じられます 補 足 2: 別 ウインドで 背 景 色 の 切 り 替 えを 行 う 場 合 は 以 下 の 構 文 を 使 用 します wnd=window.open(); /*ウインドを 表 示 します */ wnd.document.bgcolor=dt[index]; /*ウインドの 背 景 色 を 切 り 替 えます*/ wnd.window.close(); /* 上 記 ウインドを 閉 じます */ 関 数 定 義 HTML プログラムに JavaScript で 関 数 を 定 義 する 場 合 は <head>と</head>の 間 に 定 義 します JavaScript プログラムの 関 数 は 引 数 の 受 け 渡 しや 値 の 返 却 が 出 来 ます 67

68 javakansu.htm <HTML> <HEAD> <script language="javascript"> function goukei(a,b){ s=a+b; return s; </script> </HEAD> <BODY> <script language="javascript"> document.write(" 合 計 =",goukei(1,2)); </script> </BODY> </HTML> 補 足 : 結 果 として 合 計 =3 が 表 示 されます 演 算 子 は C 言 語 や PHP 言 語 と 基 本 的 に 同 じです 演 算 子 種 類 注 意 点 インクリメント/ディ クリメント 演 算 ++ ーー 変 数 の 前 に 宣 言 した 場 合 は 演 算 前 にインク リメント/ディクリメントが 行 われ 後 ろに 定 義 された 場 合 は 後 で 行 われます 算 術 演 算 +,-,*,/,% %は 余 りが 結 果 となります 文 字 連 結 + "Java"+"Script" "JavaScript" と な り ま す 比 較 演 算 ( 関 係 演 算 ) < <= == >!= >= 等 号 を = とした 場 合 は 意 味 が 違 ってきま す また!= は 等 しくない 場 合 を 意 味 します ビット 演 算 << >> >>> & ^ ~ <<は 左 算 術 シフト >>は 右 算 術 シフト >>>は 右 論 理 シフト &は AND は OR ^は 排 他 的 OR はビット OR ~は 否 定 論 理 演 算! &&!は 否 定 &&は AND は OR 68

69 条 件 演 算?: xxx=(a>b)?a:b; xxx に a と b の 大 きい 方 の 値 が 入 ります 代 入 演 算 = += *= "a+=1"は "a=a+1"と 同 じです 補 足 1: ++やーー 演 算 子 を 使 用 した 場 合 その 演 算 子 の 指 定 場 所 により 結 果 は 異 なります javaincrement.htm <HTML> <HEAD> <script language="javascript"> counter=0; in1=counter++; in2=counter; document.write("counter++の 検 証 ","<BR>"); document.write(in1,"<br>"); document.write(in2,"<br>","<hr>"); counter=0; in1=++counter; in2=counter; document.write("++counter の 検 証 ","<BR>"); document.write(in1,"<br>"); document.write(in2,"<br>"); </script> </HEAD> <BODY> </BODY> </HTML> 補 足 2: 等 しいか 否 かをチェックする 演 算 子 を 誤 ると 予 想 外 の 結 果 となります ( 等 しいか 否 かをチェックする 演 算 子 は "=="です) javaequal.htm <HTML> <HEAD> 69

70 <script language="javascript"> a=10; document.write("<br> 変 数 a の 値 は ",a); if (a = 100){ document.write("<br> 変 数 a の 値 は ",a," 結 果 は True でした ",a); else{ document.write("<br> 変 数 a の 値 は ",a," 結 果 は False でした ",a); a=10; document.write("<br><br> 変 数 a の 値 は ",a); if (a == 100){ document.write("<br> 変 数 a の 値 は ",a," 結 果 は True でした ",a); else{ document.write("<br> 変 数 a の 値 は ",a," 結 果 は False でした ",a); </script> </HEAD> <BODY> </BODY> </HTML> 基 本 構 文 は C 言 語 や PHP 言 語 を 同 じですが CASE 構 文 などはありません 構 文 基 本 構 文 使 用 例 if 構 文 if ( 条 件 式 ){ 本 文 ; else if ( 条 件 式 ) 本 文 ; else 本 文 ; if (a==1){ b="a"; else if (a==2) b="b"; else b="c" a が1から"A" a が2なら"B" それ 以 外 であれば"C"がbに 入 ります for 構 文 for ( 式 1; 式 2; 式 3){ b=0; 70

71 本 文 ; while 構 文 while( 式 ){ 本 文 ; switch 構 文 switch( 変 数 ){ case x: 本 文 1; break; case x: 本 文 2; break; default: 本 文 x; break; break 構 文 for 構 文 或 いは while 構 文 の 中 で 使 用 されるもので for ループ 或 いは while ループから 抜 け 出 します continue 構 文 for 構 文 或 いは while 構 文 の 中 で 使 用 されるもので continue 文 以 下 の 処 理 をスキップして 次 のループ 処 理 に 入 ります with 構 文 with (オブジェクト){ 本 文 ; function 構 文 function 関 数 名 ( 引 数 ){ return 式 ; for (a=1;a<11;a++){ b+=a; bには55が 入 ります a=1; while(a=1){ b+=1; 永 久 ループします a=1; switch(a){ case 1: alert("1が 選 択 されました"); break; case 2: alert("2 が 選 択 されました"); break; while(a=1){ break; 何 もしないで 抜 けます b=0; for (a=1;a<11;a++){ continue; b+=a; b は 更 新 されません with (document){ write("aaa"); document.write("aaa");と 等 価 です function func1(arg0,arg1){ return arg0+arg1; 71

72 コメント 構 文 //コメント /* コメント */ func1 の 返 却 値 として 2つの 引 く 数 の 合 計 が 返 ります PHP 構 文 に 同 じです 補 足 : "switch" 構 文 において 個 々の"case" 構 文 に 中 に"break" 構 文 を 省 略 した 場 合 に "case" 構 文 終 了 時 に 次 の"case" 構 文 のプログラムが 実 行 されてしまいます "break"が 必 要 か 否 かは プログラム 言 語 により 異 なりますので 周 囲 が 必 要 です case.htm <HTML> <script language="javascript"> <!-- index=1; switch(index){ case 1: document.write("1 "); /*break;*/ case 2: document.write("2 "); /*break;*/ default: document.write("else "); /*break;*/ document.write(" 終 了 "); //--> </script> <BODY> </BODY> </HTML> < 練 習 課 題 > "case" 構 文 が 終 了 した 時 点 で "switch" 構 文 が 終 了 するように 修 正 してください 72

73 3.3 JavaScript プログラミング 例 オブジェクトの 活 用 JavaScript は ブラウザの 持 つ 部 品 であるナビゲータオブジェクトと JavaScript が 独 自 に 組 み 込 んだ ビルドインオブジェクトがあります また 前 者 ( 例 えば Document オブジェクト)は New コマンド(オ ブジェクト 生 成 )を 使 用 しないでも 使 えますが 後 者 ( 例 えば Date オブジェクト)は 基 本 的 には New コマンドによりオブジェクトを 生 成 して 使 用 します javascript01-1.htm プログラム <HTML> <BODY> *** オブジェクトには ナビゲータオブジェクト(ブラウザ 部 品 )とビルドトインオブジェクト (JavaScript 組 み 込 みオブジェクト)があります *** <BR> ナビゲータオブジェクト document window math など ビルトインオブジェクト (New コマンドが 必 要 ) date array string など <HR> <FORM method="post" name="test"> <INPUT type="text" size=20 name="in1" value="1000" onclick="history.back();"> <INPUT type="text" size=20 name="in2" value="2000" onclick="history.forward();"> <INPUT type="submit" value="send"> </FORM> <SCRIPT LANGUAGE="JavaScript"> alert(" 数 学 関 数 のサンプルプログラムを 実 行 します"); document.write(" 数 学 関 数 のサンプルプログラム<BR>"); document.write(math.abs(-1000),"<br>"); document.write(math.acos(45* /180),"<br>"); document.write(math.random(),"<br>"); document.write(math.asin(45* /180),"<br>"); document.write(math.atan(45* /180),"<br>"); document.write(math.atan2(100,10),"<hr>"); alert(" 環 境 情 報 取 得 のサンプルプログラムを 実 行 します"); document.write(" 環 境 情 報 取 得 のサンプルプログラム<BR>"); document.write(navigator.appcodename,"<br>"); document.write(navigator.appname,"<br>"); document.write(navigator.appversion,"<hr>"); 73

74 alert(" 文 字 背 景 などの 装 飾 に 関 するサンプルプログラムを 実 行 します(No1)"); document.write(" 文 字 背 景 などの 装 飾 に 関 するサンプルプログラム(No1)<BR>"); document.bgcolor="#00ff00"; document.fgcolor="#0000ff"; a="aaaa"; document.write(a.italics(),"<br>"); a="aaaa"; document.write(a.fontcolor("#ff0000"),"<br>"); a="aaaa"; document.write(a.fontsize(7),"<hr>"); alert(" 文 字 背 景 などの 装 飾 に 関 するサンプルプログラムを 実 行 します(No2)"); document.write(" 文 字 背 景 などの 装 飾 に 関 するサンプルプログラム(No2)<BR>"); document.bgcolor="#0000ff"; document.fgcolor="#ff0000"; a="aaaa"; document.write(a.italics(),"<br>"); a="aaaa"; document.write(a.fontcolor("#00ff00"),"<br>"); a="aaaa"; document.write(a.fontsize(5),"<hr>"); </SCRIPT> </BODY> </HTML> javascript01-2.htm プログラム <HTML> <BODY> *** オブジェクトには ナビゲータオブジェクト(ブラウザ 部 品 )とビルドトインオブジェクト (JavaScript 組 み 込 みオブジェクト)があります *** <BR> ナビゲータオブジェクト document window math など ビルトインオブジェクト (New コマンドが 必 要 ) date array string など <HR> <FORM method="post" name="test"> <INPUT type="text" size=20 name="in1" value="1000" onclick="history.back();"> 74

75 <INPUT type="text" size=20 name="in2" value="2000" onclick="history.forward();"> <INPUT type="submit" value="send"> </FORM> <SCRIPT LANGUAGE="JavaScript"> alert(" 日 時 関 連 情 報 を 取 得 するサンプルプログラムを 実 行 します"); document.write(" 日 時 関 連 情 報 を 取 得 するサンプルプログラム<BR>"); obj=new Date(); document.write(obj.getdate(),"<br>"); document.write(obj.gethours(),"<hr>"); alert(" 結 合 処 理 を 行 うサンプルプログラムを 実 行 します"); document.write(" 結 合 処 理 を 行 うサンプルプログラム<BR>"); a=document.test.in1.value+document.test.in2.value; document.write(a,"<br>"); a=eval(document.test.in1.value)+eval(document.test.in2.value); document.write(a,"<hr>"); alert("インタラクティブ 処 理 に 関 するサンプルプログラムを 実 行 します"); document.write("インタラクティブ 処 理 に 関 するサンプルプログラム<BR>"); a=window.prompt("prompt のテストです ","test"); document.write(a,"<hr>"); alert("アクション 操 作 に 関 するサンプルプログラムを 実 行 します"); document.write("アクション 操 作 に 関 するサンプルプログラム<BR>"); document.test.action="javascript01-1.htm"; document.write("<hr>"); alert("メールを 組 み 込 むサンプルプログラムを 実 行 します"); document.write("メールを 組 み 込 むサンプルプログラム<BR>"); document.write("<hr>"); alert("web ページを 切 り 替 えるサンプルプログラムを 実 行 します"); document.write("web ページを 切 り 替 えるサンプルプログラム<BR>"); window.location.href=" document.write("<hr>"); </SCRIPT> 75

76 </BODY> </HTML> JavaScript による 対 話 処 理 JavaScript を 使 って 対 話 を 行 う 任 意 のプログラムを 実 行 する 例 です javascript02.htm プログラム <HTML> <HEAD> <TITLE> 任 意 のプログラムを 実 行 する JavaScript プログラムです </TITLE> </HEAD> <SCRIPT language="javascript"> <!-- function exc_program(){ window.location.href=myform.name.value; //--> </SCRIPT> <BODY bgcolor="blue"> <CENTER> <FORM name="myform"> <B> 実 行 したいプログラム 名 : <INPUT type="text" name="name" size=80 align="right" value=""> <INPUT type="button" value="プログラム 実 行 " onclick="exc_program()"> </FORM> </CENTER> </BODY> </HTML> JavaScript の 実 行 タイミング HTML プログラムと Javascript プログラム 部 分 の 実 行 順 番 を 確 認 する 為 のプログラムです Javascript03.htm プログラム <HTML> <HEAD> <TITLE> JavaScript プログラムを 挿 入 した HTML のサンプルプログラムです </TITLE> </HEAD> 76

77 <SCRIPT language="javascript"> <!-- alert("javascript プログラム1が 実 行 されました "); //--> </SCRIPT> <BODY> <BR> HTML プログラム 部 分 1が 実 行 されました <BR> <SCRIPT language="javascript"> <!-- alert("javascript プログラム2が 実 行 されました "); //--> </SCRIPT> <BR> HTML プログラム 部 分 2が 実 行 されました <BR> </BODY> </HTML> Web サーバ 構 築 と 各 種 プログラミング 補 足 : JavaScript 構 文 は HTML プログラムの 中 に 何 回 登 場 しても 正 しく 処 理 されます また Javascript 構 文 に 遭 遇 すると その 部 分 を 実 行 し その 後 で 続 きの 処 理 を 行 います JavaScript で HTML タグを 実 行 させたり 任 意 のメッセージを 出 力 する 場 合 は 以 下 のよう な 構 文 を 使 用 します document.write("document.write で 表 示 しました<BR>"); document.write("<font size='7'> 最 初 の Javascript です</FONT>"); < 練 習 課 題 > JavaScript プログラムの 中 で document.write を 使 って 何 らかのメッセージを 表 示 するように 改 良 してください JavaScript による 関 数 定 義 と HTML 連 携 Javascript04.htm プログラム <HTML> <HEAD> <TITLE> JavaScript プログラムを 挿 入 した HTML のサンプルプログラムです </TITLE> </HEAD> <SCRIPT language="javascript"> <!-- function input_java(){ res=document.myform.kosu.value*document.myform.tanka.value; document.myform.total.value=res; 77

78 //--> </SCRIPT> <BODY bgcolor="blue"> <FORM name="myform"> 個 数 : <INPUT type="text" name="kosu" size=10 align="right" value="0"> 単 価 : <INPUT type="text" name="tanka" size=10 align="right" value="0"> <INPUT type="button" value=" 合 計 金 額 " onclick="input_java()"> 合 計 : <INPUT type="text" name="total" size=10 align="right"> </FORM> </BODY> </HTML> Web サーバ 構 築 と 各 種 プログラミング 補 足 : HTML の<INPUT>タグにより 入 力 されたデータは <FORM> 構 文 と<INPUT> 構 文 の 中 で 設 定 された 名 前 で 修 飾 することにより JavaScript プログラムの 中 で 参 照 することができます < 練 習 課 題 > 例 題 で 計 算 された 合 計 金 額 に 消 費 税 5%を 上 乗 せした 額 を 合 計 金 額 として 出 力 してください JavaScript プログラミングにおける 制 御 構 文 JavaScript は 他 の 一 般 言 語 同 様 に 処 理 の 流 れを 制 御 する 制 御 構 文 が 提 供 されています 以 下 にこの 制 御 構 文 を 使 った 事 例 を 紹 介 します Javascript05.htm プログラム <HTML> <HEAD> <TITLE> JavaScript プログラムを 挿 入 した HTML のサンプルプログラムです </TITLE> </HEAD> <SCRIPT language="javascript"> <!-- function input_java(){ var indata; indata=document.myform.in1.value; document.myform.in1.value=""; if(indata=="aaa") alert("if 構 文 で aaa を 検 出 しました"); else if(indata=="bbb"){ alert("if 構 文 で bbb を 検 出 しました"); 78

79 else document.write("if 構 文 では 一 致 しませんでした<BR>"); for(i=1; i<=5; i++){ document.write(i+" 回 目 の FOR です<BR>"); i=1; while(i<=10){ document.write(i+" 回 目 の WHILE です<BR>"); i++; if (i==3){ break; //--> </SCRIPT> <BODY bgcolor="blue"> <FORM name="myform"> 入 力 : <INPUT type="text" name="in1" size=10 align="right" value=""> <INPUT type="button" value=" 実 行 " onclick="input_java()"> </FORM> </BODY> </HTML> 補 足 : 制 御 構 文 は 基 本 的 には C 言 語 の 構 文 に 同 じです < 練 習 課 題 > 1) FOR 構 文 及 び While 構 文 において 入 力 した 文 字 をそれぞれ10 回 ずつ 表 示 するプロ グラムを 作 成 してください 2) if 構 文 の 部 分 を switch 構 文 に 置 き 換 えて 同 じ 動 作 をするように 変 更 してください JavaScript プログラミングにおける 画 像 表 示 切 替 Javascript06.htm プログラム <HTML> <HEAD> <TITLE> JavaScript プログラムを 挿 入 した HTML のサンプルプログラムです </TITLE> </HEAD> <SCRIPT language="javascript"> <!-- imgnum=1; stopflg=0; 79

80 function img_sview(viewimg){ document.myimg.src=viewimg; function img_cview(){ document.myimg.src="sample" + imgnum + ".jpg"; imgnum=imgnum+1; if (imgnum==6){ imgnum=1; if(stopflg==0){ settimeout("img_cview()",500); else stopflg=0; function img_stop(){ stopflg=1; //--> </script> Web サーバ 構 築 と 各 種 プログラミング <BODY bgcolor="blue"> <H3> 画 像 切 り 替 えに 関 するサンプルプログラムです </H3> <INPUT type="button" value=" 単 発 表 示 " onclick="img_sview('sample3.jpg')"> <INPUT type="button" value=" 連 続 表 示 " onclick="img_cview()"> <INPUT type="button" value=" 表 示 中 断 " onclick="img_stop()"> <HR> <img src="sample.jpg" name="myimg"> </BODY></HTML> < 練 習 課 題 > 単 発 表 示 及 び 連 続 表 示 処 理 において 画 像 が 切 り 替 わるごとに 画 面 全 体 の 背 景 色 が 切 り 替 わるプログラムに 変 更 してください 背 景 色 の 切 り 替 えは 以 下 の 構 文 で 行 います ( 切 り 替 える 色 は 任 意 とします) document.bgcolor= 色 の 指 定 JavaScript プログラミングにおける 日 付 け 関 数 操 作 Javascript07.htm プログラム <HTML> <HEAD> <TITLE> JavaScript プログラムの 中 で 日 付 け 関 数 を 使 ったプログラムです </TITLE> </HEAD> <SCRIPT language="javascript"> <!-- function start(){ 80

81 indate=new Date(); yy=indate.getyear(); mm=indate.getmonth(); mm++; dd=indate.getdate(); hh=indate.gethours(); mn=indate.getminutes(); document.write(" 今 は ",yy," 年 ",mm," 月 ",dd," 日 です "); document.write("<br>"); if(hh<12) document.write("おはようございます"); else if(hh<18) document.write("こんにちは"); else document.write("こんばんは"); //--> </script> <BODY onload="start();"> </BODY></HTML> < 練 習 課 題 > 年 月 日 表 示 の 次 の 行 に 以 下 のメッセージを 追 加 してください 現 在 の 時 刻 は XX 時 xx 分 yy 秒 です Web サーバ 構 築 と 各 種 プログラミング 81

82 3.4 JavaScript プログラムの 応 用 Web ページに 効 果 が 発 揮 できるプログラム 例 Javascript11.htm プログラム <html> <head> <title> 各 種 組 み 合 わせ JavaScript プログラム</title> <meta http-equiv="content-type" content="text/html; charset=shift_jis"> <meta name="author" content="uitec"> </head> <SCRIPT language="javascript"> <!-- leftpos=1; toppos=200; speed=3; inc=speed; updown=50; size=100; incsize=10; dir=1; function start(){ image.style.left=leftpos + "px"; image.style.top=toppos + "px"; image.width=size; image.height=size; leftpos=leftpos+inc; settimeout("start()",10); if (leftpos>900) inc=-1*speed; if (leftpos<=0) inc=speed; function UPproc(){ toppos=toppos-updown; function DOWNproc(){ toppos=toppos+updown; function UPSproc(){ size=size+incsize; function DOWNSproc(){ size=size-incsize; function OVERproc(){ dir=inc; inc=0; 82

83 function OUTproc(){ inc=dir; //--> </script> <body bgcolor="oldlace" onload="start()"> <CENTER> <FORM> <INPUT type="button" value=" 上 方 向 移 動 " onclick="upproc();"> <INPUT type="button" value=" 下 方 向 移 動 " onclick="downproc();"> <INPUT type="button" value=" 画 像 拡 大 " onclick="upsproc();"> <INPUT type="button" value=" 画 像 縮 小 " onclick="downsproc();"> </FORM> <DIV > <IMG src="javaimage.jpg" name="image" width=100 onmouseover="overproc();" onmouseout="outproc();" style="position: absolute;left:0px;top:250px;" alt=" 移 動 物 体 "> </DIV> </CENTER> </body> </html> Web サーバ 構 築 と 各 種 プログラミング 補 足 : 100x100 の 画 像 を javaimage.jpg という 名 前 で 登 録 してから 実 行 してください < 練 習 課 題 > 移 動 スピード 及 び 拡 大 / 縮 小 スピードを 現 状 の2 倍 にしてください JavaScript によるルーレットゲームソフト Javascript12.htm プログラム <HTML> <HEAD> <TITLE> ユーアイテクノケアのサンプルソフトです </TITLE> <META name="author" content=" 油 井 正 明 "> </HEAD> <BODY bgcolor="black" topmargin="100"> <SCRIPT language="javascript"> <!-- imgnum=1; RepeatFlag=0; function ImgChange(){ InData1=Math.round(9*Math.random()); InData2=Math.round(9*Math.random()); InData3=Math.round(9*Math.random()); 83

84 document.myimg1.src="wbimage" + InData1 + ".jpg"; document.myimg2.src="wbimage" + InData2 + ".jpg"; document.myimg3.src="wbimage" + InData3 + ".jpg"; if (RepeatFlag==0){ settimeout("imgchange()",10); else { RepeatFlag=0; if (InData1==InData2 && InData2==InData3){ alert("おめでとうございます 次 も 頑 張 ってください! ^o^ ^o^ "); else{ if (InData1==InData2 InData2==InData3 InData1==InData3){ alert(" 惜 しかったですね 頑 張 ってください ^o^; "); function ImgEnd(){ RepeatFlag=1; //--> </SCRIPT> <CENTER> <A onmouseover="imgchange()" onmouseout="imgend()" > <IMG src="wbimage10.jpg" width="50" border="0" name="myimg"> </A> <IMG src="wbimage1.jpg" width="100" border="0" name="myimg1"> <IMG src="wbimage1.jpg" width="100" border="0" name="myimg2"> <IMG src="wbimage1.jpg" width="100" border="0" name="myimg3"> </CENTER> </BODY> </HTML> 補 足 : 100x100 の 別 々の 画 像 を WBimage1.jpg~WBimage10.jpg の 名 前 で 登 録 を 行 った 後 で 実 行 してくだ さい < 練 習 課 題 > 1) 開 始 画 像 にカーソルが 重 なった 時 にルーレットを 開 始 し 開 始 画 像 をクリックした 時 にルー レットが 停 止 するように 変 更 してください 2) 4コマのルーレットゲームを 完 成 させてください 3) 開 始 画 像 をクリックした 時 にルーレットを 開 始 し 再 度 クリックした 時 に 停 止 するように 変 更 してください ( 繰 り 返 しが 出 来 るようにします) 84

85 3.4.3 JavaScript による 衝 突 ゲームソフト Javascript13.htm プログラム <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <! このホームページは Web プログラムの 理 解 の 為 に 作 られたものです > <HTML> <HEAD> <TITLE> サンプルプログラムです </TITLE> </HEAD> <style type="text/css"> <!-- FONT { font: 10pt/16px "MS Pゴシック", "Osaka" --> </style> <SCRIPT language="javascript"> <!-- leftx=10; topx=45; x=10; y=10; leftx2=30; topx2=125; x2=20; y2=20; signx=1; signy=1; leftlimit=0; toplimit=0; timedata=0; timeflag=0; function init1(){ start(); function init2(){ start2(); timeflag=1; function start(){ x=math.round(9*math.random())+5; y=math.round(9*math.random())+5; x=x*signx; y=y*signy; myimg.style.position="absolute"; myimg.style.left=leftx+"px"; 85

86 myimg.style.top=topx+"px"; leftx=leftx+y; topx=topx+x; if (topx>450){ signx=-1; else if (leftx>800){ signy=-1; if (topx<2){ signx=1; else if (leftx<100){ signy=1; settimeout("start()",10); function start2(){ myimg2.style.position="absolute"; myimg2.style.left=leftx2+"px"; myimg2.style.top=topx2+"px"; leftx2=leftx2+y2; topx2=topx2+x2; if (topx2>500){ x2=-10; else if (leftx2>950){ y2=-10; if (topx2<2){ x2=10; else if (leftx2<50){ y2=12; settimeout("start2()",1); leftlimit1=leftx+20; toplimit1=topx+20; leftlimit2=leftx+60; toplimit2=topx+40; if (leftx2>leftlimit1 && leftx2<leftlimit2){ if (topx2>toplimit1 && topx2<toplimit2){ alert(" 合 体 成 功 おめでとうございます"); leftx2=1; topx2=1; window.location.href="game1.html"; 86

87 function gamestop(){ alert(" 画 面 を 元 に 戻 します"); /* window.location.href="index.html"; */ window.close(); function timeproc(){ if (timeflag==1){ timedata=timedata+1; else { timedata=0; document.form1.timeout.value=timedata; settimeout("timeproc()",1000); //--> </script> <BODY bgcolor="black" onload="timeproc()"> <DIV > <IMG src="rimage.jpg" width="100" height="100" border="0" name="myimg" style="position: absolute;left:10px;top:45px;" onclick="init1();" > <IMG src="rimage.jpg" width="100" height="100" border="0" name="myimgs" style="position: absolute;left:10px;top:45px;" onclick="init1();"> </DIV> <DIV > <IMG src="rimage.jpg" width="50" height="50" border="0" name="myimg2" style="position: absolute;left:30px;top:200px;" onclick="init2();"> <IMG src="rimage.jpg" width="50" height="50" border="0" name="myimg2s" style="position: absolute;left:30px;top:200px;" onclick="init2();"> </DIV> <DIV > <IMG src="owari.jpg" border="0" name="myimg3" style="position: absolute;left:1px;top:270px;" onclick="gamestop();"> </DIV> <FORM method="post" name="form1"> <FONT color="white" size="2"> 時 間 : </FONT> <INPUT type="text" name="timeout" value="0" size="3"> </FORM> 87

88 <DIV style="position: absolute;left:5px;top:550px;"> <FONT color="white" size="1"> 親 玉 アイコンで 親 玉 が 小 玉 アイコンで 小 玉 が 飛 び 出 します 小 玉 が 親 玉 に 早 くぶつかるよ うに 操 作 します <BR> 親 玉 アイコンを 連 続 的 にクリックすると 親 玉 の 速 度 が 速 くなります 小 玉 も 同 じです ぶつ かるまでの 時 間 が 表 示 されます </FONT> </DIV> </BODY> </HTML> 補 足 : 100x100 の 画 像 を rimage.jpg の 名 前 で また 50x20 程 度 の 適 当 な 画 像 を owari.jpg の 名 前 で 登 録 を 行 った 後 で 実 行 してください 88

89 3.4.4 JavaScript が 提 供 する 主 なオブジェクト( 参 考 ) JavaScript では 以 下 の 示 すような プログラミングを 容 易 にするための 各 種 のオブジェクト( 関 数 ) が 提 供 されています 各 々の 詳 細 に 関 しては 専 門 書 を 参 照 ください オブジェクト 名 メソッド 名 プロパティー 名 または 意 味 Date getdate() getday() gethours() getminutes() getmonth() getseconds() gettime() gettimezoneoffset() getfullyear() getyear() parse( 日 付 け) setdate( 設 定 日 付 け) sethours( 設 定 時 刻 ) 以 下 略 日 付 けを 求 める 曜 日 を 求 める 時 を 求 める 分 を 求 める 月 を 求 める 秒 を 求 める 時 間 を 求 める 時 差 を 求 める 年 を 求 める 年 を 求 める 1970 年 1 月 1 日 午 前 0 時 からの 秒 を 求 める 日 付 けを 設 定 する 時 を 設 定 する などなど Document close() open(mime タイプ) write( 文 字 列 数 式 ) writeln( 文 字 列 数 式 ) 以 下 略 使 用 例 : obj=new date; dd=obj.getdate(); ドキュメントを 閉 じる ドキュメントを 開 く 文 字 列 数 式 を 表 示 する 文 字 列 数 式 を 改 行 付 きで 表 示 する プロパティーには 以 下 のようなものがある alinkcolor,anchors,bgcolor,cookie, fgcolor,forms,location,title,その 他 以 下 略 Math abs( 数 式 ) acos( 数 式 ) asin( 数 式 ) atan( 数 式 ) atan2(x,y) ceil( 数 式 ) cos( 数 式 ) その 他 (sin,cos,tan,sqrt,,,) window alert(); confirm(); 使 用 例 : Document.close(); 絶 対 値 を 求 める アークコサインを 求 める アークサインを 求 める アークタンジェントを 求 める 2つの 座 標 から 角 度 を 求 める 切 り 上 げて 整 数 にする コサインを 求 める 使 用 例 : aaa=math.sin(45*3.14/180); 警 告 ダイアログ 表 示 確 認 ダイアログ 表 示 89

90 navigator Aarray 共 通 で 使 えるオブジ ェクト( 関 数 ) Button Checkbox FileUpload Form Frame Function Hiden History Image Link prompt(); open(); close(); focus(); blur(); settimeout(); cleartimeout(); 以 下 略 appname appversion appcodename useragent platform eval( 式 ) isnan() parsefloat() parseint() tostring() 以 下 略 文 字 列 入 力 ダイアログ 表 示 新 ウインド 表 示 ウインドのクローズ ウインドのフォーカス 設 定 ウインドからのフォーカス 解 除 タイムアウトの 設 定 タイムアウト 値 のクリア プロパティーには 以 下 のようなものがある status,name,opener,length,closed, defaultstatus 使 用 例 : window.alert("javascript 実 行 中 です"); ブラウザ 名 ブラウザのバージョン ブラウザのコード 名 ブラウザ 名 とバージョン ブラウザのプラットフォーム 使 用 例 : xxx=navigator.appname; 配 列 の 宣 言 使 用 例 : obj1=new Aarray(5); 配 列 のみ 定 義 obj2=new Aarray(1,2,3,4,5); 初 期 値 付 き 配 列 を 定 義 aaa=obj2[0]; 配 列 からのデータの 取 り 出 し 文 字 列 を 数 式 として 評 価 して 値 を 返 す 数 値 化 どうかを 判 別 して 返 却 する 尐 数 を 含 む 文 字 列 を 数 値 化 する 文 字 列 を 整 数 値 にする n 進 数 値 に 変 換 する 使 用 例 : data=eval(document.form.in.value)+100; 90

91 Location MimeType Number Password Plugin Radio Reset Select String Submit Text Textarea 詳 細 省 略 ( 参 考 文 献 を 参 照 ください) 91

92 第 4 章 PHP プログラミング 4.1 PHP プログラミングの 特 徴 PHP 言 語 は Web サーバ 上 で 実 行 されるコンパイルを 必 要 としない 逐 次 構 文 解 析 実 行 型 のインタプリタ 言 語 であり PHP 言 語 を 解 釈 できる Web サーバ 環 境 (Apache サーバソフト 及 び PHP 解 釈 ソフトなど)と HTML を 解 釈 できるブラウザソフト(インターネットエクスプローラなど)があれば クライアント&サー バモデルのネットワーク(インターネット 含 む) 上 での 情 報 検 索 表 示 が 用 意 に 実 現 できます この PHP 言 語 の 目 的 は クライアント 側 の 要 求 に 従 って Web サーバ 側 で データベースのアクセスや 処 理 の 制 御 を 行 い その 結 果 を HTML 構 文 に 変 換 し クライアント 側 に 返 却 することです 主 な 特 長 として 以 下 があります 以 下 の 各 々を Web サーバに 登 録 し 実 際 に 実 行 を 行 って 確 認 してくだ さい ひとくちメモ: PHP の 構 文 は C 言 語 に 非 常 ににており 同 じルールの 上 で 使 用 されるものもあります その 一 つが データを 出 力 する 場 合 の printf 構 文 であり 以 下 のように 使 用 します Printf( 変 数 AAAA は %d 変 数 BBBB は %c です,AAAA,BBBB); 上 記 例 の%d は 出 力 する 時 の 方 法 ( 型 )を 定 義 します この 指 定 には 順 番 があり 最 初 の%d に 対 しては 変 数 AAAA が 2 番 目 の%d に 対 しては 変 数 BBBB が 対 応 します 上 記 例 では 変 数 AAAA の 内 容 を 整 数 で 出 力 し 変 数 BBBB の 内 容 を 文 字 列 で 出 力 します 変 数 AAAA の 内 容 が1 00で 変 数 BBBB の 内 容 が ABCD ならば 結 果 は 以 下 のようになります 変 数 AAAA は 100 変 数 BBBB は ABCD です 上 記 で% 修 飾 により 宣 言 できるコードは 以 下 の 通 りです %d 整 数 で 表 現 します %s 文 字 列 で 表 現 します %f 大 きな 数 字 を 表 現 します ( 浮 動 小 数 点 ) %u アンサイン( 負 を 表 現 しない) 形 式 で 表 現 します %x 16 進 表 記 で 表 現 します %c 文 字 で 表 現 します PHP は HTML 組 み 込 み 型 言 語 PHP ( 正 式 名 称 は "PHP: Hypertext Preprocessor") は サーバ 上 で 動 作 する HTML 埋 め 込 み 型 のスク リプト 言 語 ですので HTML で 作 成 されたプログラムの 中 に 簡 単 に 挿 入 することが 出 来 ます また PHP プ ログラム 上 のエラーは HTML 文 書 として 返 却 されますので デバッグも 非 常 に 容 易 です php01.php <html><head><title>example</title></head> <body> <?php echo "Hi, I'm a PHP script!";?> 92

93 </body></html> 補 足 1: PHP 言 語 は <?php 構 文 と?> 構 文 に 囲 まれた 一 連 のプログラムを 解 釈 実 行 し 結 果 を 出 力 します また この 構 文 に 含 まれない 部 分 は 加 工 されずにそのまま 出 力 されます HTML 言 語 も PHP 言 語 同 様 に タグに 囲 まれていない 部 分 は 無 条 件 に 出 力 します PHP は 作 成 容 易 なスクリプト 言 語 Perl や C 言 語 と 比 較 した 場 合 プログラムによる HTML 構 文 の 生 成 が 非 常 に 容 易 に 可 能 となります Perl や C 言 語 では HTML 構 文 を 作 り 出 す 為 にかなり 面 倒 なプログラムを 作 成 する 必 要 がありますが PHP 言 語 を 使 えば 極 めて 簡 単 に HTML 構 文 を 作 成 することができる 各 種 の 命 令 が 用 意 されています php02.php プログラム <HTML><BODY> <?php echo "This is a PHP script!";?> <?php printf ( This is a PHP script );?> </BODY></HTML> 補 足 1: HTML に PHP 構 文 を 挿 入 する 方 法 として 以 下 もありますが システム 設 定 によっては 正 しく 認 識 でき ない 場 合 がありますので 上 記 の 方 式 を 推 奨 します 1. <? echo ("this is the simplest, an SGML processing instruction\n");?> 2. <script language="php"> echo ("テストです"); </script> 3.<% echo ("テストです"); %> この 構 文 は PHP4 では 使 用 できません 補 足 2: print 構 文 に 引 数 を 渡 す 場 合 は 括 弧 でくくる 必 要 はありませんが(ダブルコーテーションだけで も 構 いません) 但 し printf 構 文 の 場 合 は 括 弧 を 付 けて 指 定 する 必 要 があります PHP は 高 級 言 語 と 同 じ 感 覚 で 作 成 できる PHP プログラムには C 言 語 や Perl などと 言 った 高 級 言 語 で 提 供 されている 各 種 の 制 御 構 文 (if for case など)が 提 供 されています ( 文 法 的 に 全 く 同 じではありませんが 極 めて 似 ています) 補 足 :HTML 言 語 にはこのような 構 文 はありません php03.php プログラム <HTML><BODY> <?php if (10==10.00) { echo "10=10.00 です<br>"; else{ echo "10 は ではありません<br>"; 93

94 ?> </BODY></HTML> php04.php プログラム <HTML><BODY> <?php if (10==10.00) { echo elseif (10==10){ echo else{ echo?> </BODY></HTML> "10=10.00 です<br>"; "10=10 です<br>"; "10=10.00 ではありません<br>"; PHP は 変 数 を 定 義 しないで 使 用 することができる 変 数 は 先 頭 に$を 付 けて 宣 言 します 型 の 定 義 等 をしなくとも 適 用 されるデータに 応 じて 型 定 義 は 自 動 的 に 行 われます 但 し キャスト 機 能 を 使 うことにより 意 図 的 な 型 設 定 を 行 うこともできます PHP が 扱 うデータの 型 は 以 下 の 通 りですが この 型 に 対 する 定 義 は 言 語 の 種 類 やシステムの 環 境 (CPU の 種 類 など)などにより 異 なります 型 表 記 キャスト 表 記 方 法 備 考 整 数 型 int (int)aaaa 10,20,100,200,,, 浮 動 小 数 点 型 float (float)aaaa 10.0,20.1, ,,, 文 字 列 型 string (string)aaaa 123, abcd,,, 論 理 値 型 bool True,False 配 列 (array)aaaa オブジェクト (object)aaaa 補 足 :aaaa は 型 変 換 対 象 の 変 数 ( 又 は 直 接 値 )です 補 足 :キャストとは 強 制 的 に 型 変 換 を 行 う 方 法 です 補 足 :データの 型 に 応 じた 実 際 の 格 納 方 法 及 び 型 の 必 要 性 に 関 しては ちょっと 一 休 み のコ ーナーを 参 照 ください 例 : 以 下 において $a は 整 数 型 $b は 文 字 列 型 で 使 用 されます php05.php プログラム <HTML><BODY> <?php for ($a=1; $a<11; $a++){ $b="テストです"; printf("%d 回 目 の%s<br>",$a,$b); 94

95 ?> </BODY></HTML> 補 足 : php 言 語 では 他 の C 言 語 のような 一 般 的 な 言 語 同 様 に データが 記 憶 される 時 の 型 を 強 制 的 に 変 換 することもできます ( 型 に 関 しては ちょっと 一 休 みのコーナーを 参 照 ください) 例 : $Intval=(int)$data 上 記 は $data に 格 納 されているデータを 強 制 的 に 整 数 型 に 変 換 し $Intval 変 数 に 返 却 します PHP はデータベースとの 連 携 が 容 易 PostgreSQL,MySQL 等 のオープンソースの 各 種 データベース 及 び Orcle,Synbase,Informix などのよう な 商 用 データベースをアクセスすることができます 以 下 は PostgreSql データベースを 使 用 した 場 合 の アクセス 例 です php06.php プログラム <HTML><BODY> $sql="select * from testtbl order by $str=pg_fetch_result($result,1,1); echo $str; pg_free_result($result); pg_close($con);?> </BODY></HTML> 1,1 は Row,Col を 指 定 します PHP のコメント 表 記 は C 言 語 や Java と 同 じ コメントの 表 現 は C のような /* */ Java のような // の 形 式 が 許 されます php07.php プログラム <HTML><BODY> <?php print "テストです<br>"; /* コメントです */ print "テストです<br>"; // コメントです?> </BODY></HTML> PHP は 曖 昧 な 命 令 も 理 解 する 95

96 ステートメントとは 処 理 の 単 位 を 表 すもので 一 つ 以 上 の 式 から 構 成 されます このステートメントは 大 文 字 小 文 字 を 同 じとして 扱 います 例 : 以 下 は 全 て 同 じ 結 果 となります php08.php プログラム <HTML><BODY> <?php Print テストです<br> ; PRINT テストです<br> ; PrInT テストです<br> ;?> </BODY></HTML> PHP はいろいろな 手 順 で HTML 文 を 作 り 出 せる PHP プログラムで HTML プログラムを 出 力 する 方 法 として 逐 次 print 文 で 出 力 する 方 法 や 一 連 の HTML プログラムを 一 回 の print 文 でまとめて 出 力 する 方 法 などがあります 例 1: 個 別 に print 文 を 使 う 方 法 php09.php プログラム <?php print print print?> "<HTML><BODY>"; "テスト1です<br>"; "</BODY></HTML>"; 例 2: 一 括 して 出 力 する 方 法 (1) php10.php プログラム <?php print "<HTML><BODY>". "テスト2です<br>". "</BODY></HTML>";?> 例 3: 一 括 して 出 力 する 方 法 (2) php11.php プログラム <?php print <<<OUTHTML 96

97 <HTML> <BODY> テスト3です<br> </BODY> </HTML> OUTHTML;?> 補 足 : 個 人 的 には HTML 構 文 を 誤 記 する 弊 害 を 避 ける 理 由 から 例 題 3をお 勧 めします 但 し この 構 文 を 使 用 する 場 合 は 終 了 を 示 す 文 字 列 ( OUTHTML; )は 1カラムから 設 定 し なければエラーとなります また セミコロン(;)の 後 ろに 文 字 を 挿 入 した 場 合 でも 正 し き 認 識 されません PHP は 関 数 を 作 ることができる PHP は 共 通 となる 処 理 を 独 自 の 関 数 として 作 成 し 他 の PHP プログラムから 簡 単 に 利 用 することができ ます 例 :PHP による 関 数 の 定 義 方 法 と 利 用 方 法 php12.php プログラム <HTML><BODY> <?php function funca() { print これは 関 数 です<br> ; return TRUE; print 関 数 を 実 行 します <br> ; funca(); /* これで funca が 実 行 されます */?> </BODY></HTML> PHP は 配 列 を 扱 うことができる PHP は 配 列 でデータを 定 義 し プログラムの 中 でインデックス 修 飾 を 使 って 簡 単 に 参 照 することができ ます 例 : 配 列 定 義 と 参 照 方 法 に 関 する 例 です php13.php プログラム <HTML><BODY> <?php $table=array( "さんま"=>array( 97

98 " 色 "=>" 青 ", " 値 段 "=>" 安 "), "まぐろ"=>array( " 色 "=>" 赤 ", " 値 段 "=>" 高 ") ); print "<br>"; print "['さんま'][' 値 段 '] 修 飾 の 結 果 :"; print $table['さんま'][' 値 段 ']; /* " 安 "が 出 力 されます */ print "<br>"; print "['まぐろ'][' 色 '] 修 飾 の 結 果 :"; print $table['まぐろ'][' 色 ']; /* " 赤 "が 出 力 されます */ print "<br>";?> </BODY></HTML> Web サーバ 構 築 と 各 種 プログラミング PHP は 文 字 列 のチェックが 容 易 にできる PHP では 規 則 性 のある 文 字 列 を 簡 単 に 表 現 できるような 仕 組 みがあります この 表 現 を 規 則 表 現 と 言 われ 文 字 列 や 年 月 日 などのチェック 用 に 使 用 されます 例 : 最 初 が1か2で 0から9までの 数 値 が3 桁 続 く 表 記 法 は 以 下 の 通 りです php14.php プログラム <HTML><BODY> <?php print "<br>"; $a="1369"; $b="312345"; if (ereg("^[12][0-9]{3$",$a)) print "'$a'は 正 しい 文 字 列 と 認 識 されました <br>"; else print "'$a'は 誤 った 文 字 列 と 認 識 されました <br>"; if (ereg("^[12][0-9]{3$",$b)){ print "'$b'は 正 しい 文 字 列 と 認 識 されました <br>"; else print "'$b'は 誤 った 文 字 列 と 認 識 されました <br>";?> </BODY></HTML> 正 規 表 現 形 式 正 規 表 現 形 式 の 意 味 使 用 例 使 用 例 の 意 味 ^ 文 字 列 の 先 頭 ^[A-Z] 最 初 の 文 字 が 大 文 字 の 英 字 $ 文 字 列 の 終 わり [a-z]{3$ 小 文 字 の 英 字 が3 桁? 直 前 の 文 字 の0 個 ~1 個 の 繰 り 返 し [a-z]? 小 文 字 の 英 字 が1 桁 以 内 * 直 前 の 文 字 の0 個 以 上 の 繰 り 返 し [a-z]* 小 文 字 の 英 字 が 複 数 個 + 直 前 の 文 字 の1 回 以 上 の 繰 り 返 し [a-z]+ 小 文 字 の 英 字 が1 個 以 上 98

99 {n 直 前 の 文 字 の n 回 の 繰 り 返 し [a-z]{2 小 文 字 の 英 字 が2 文 字 {m,n 直 前 の 文 字 のm~n 回 の 繰 り 返 し [a-z]{2,5 小 文 字 の 英 字 が2~5 個 [abc] a,b,c のいずれかの1 文 字 [xyz] x y 又 はz [a-z] 小 文 字 1 文 字 [a-d] 1 個 の 小 文 字 の 英 字 [0-9A-Za-z] 英 数 字 [0-9A-Za-z] 大 文 字 小 文 字 の 英 数 字 [^0-9] 数 字 以 外 [^a-z] 小 文 字 の 英 字 以 外 OR 指 定 [a-c] [x-z] a~c, 又 は x~z PHP プログラムに 対 し 外 部 からデータを 与 えることができる PHP プログラムに 対 する 引 数 を 与 えることにより そのプログラムの 動 作 を 変 えたい 場 合 は URL にそ の 引 数 を 設 定 することにより 可 能 となります 例 :URL で 渡 されるパラメータを 受 け 取 る 構 文 は 以 下 の 通 りです php15.php プログラム <HTML><BODY> <?php printf("<br>%s を url のパラメータとして 受 け 取 りました <br>",$_get['in']);?> </BODY></HTML> 尚 パラメータを 渡 す URL の 形 式 は 以 下 の 通 りです 上 記 のような URL が 指 定 された 場 合 PHP プログラムでは $_GET 関 数 を 使 うことにより 与 えられた 引 数 を 参 照 することができます $_GET(aaa)とプログラミングすることにより aaa=1 で 定 義 された 内 容 が PHP プログラムに 渡 されま す この aaa は PHP プログラムの 中 で$aaa 変 数 を 使 う 頃 により 簡 単 に 参 照 ができます Bbb 及 び ccc も 同 じ 方 法 で 参 照 できます 補 足 : 引 数 を 環 境 変 数 として 渡 す 方 法 もありますが 本 マニュアルでは 割 愛 します PHP プログラムは 完 全 に 隠 蔽 される HTML や Java スクリプトで 作 成 されたプログラムそのもの(ソース)はインターネットエクスプローラ を 使 って 見 ることができますが PHP で 作 成 されたプログラムそのものをユーザは 見 ることはできません ( 見 ることができるのは HTML 構 文 に 変 換 された 処 理 結 果 だけです) 例 : <?PHP print テストです ;?> 上 記 のようにプログラミングされている 場 合 ブラウザには 上 記 の 実 行 結 果 である 以 下 の 文 字 列 のみ が 渡 されます (ソースとして 参 照 できます) テストです PHP の 変 数 内 容 出 力 には 注 意 が 必 要 99

100 PHP で 文 字 列 を 出 力 する 時 (Print 文 など)に その 文 字 列 に 対 する 定 義 の 方 法 により 処 理 結 果 がことな ります 例 :$aaa の 変 数 に 私 という 文 字 列 を 挿 入 し 以 下 の print 文 を 実 行 します php16.php プログラム <HTML><BODY> <?php print "<br>"; $aaa=" 私 "; Print '$aaa は 変 数 です<br>'; /* $aaa は 変 数 ですと 出 力 されます */ Print "'$aaa'は 変 数 です<br>"; /* 私 は 変 数 ですと 出 力 されます */ printf("%s は 変 数 です<br>",$aaa); /* 私 は 変 数 ですと 出 力 されます */?> </BODY></HTML> PHP は HTML の 対 話 画 面 で 設 定 された 内 容 を 認 識 できる HTML 言 語 の<FORM>タグを 使 うことにより ブラウザ 上 で 動 作 する HTML プログラムと Web サーバ 上 で 動 作 する PHP プログラム 間 でデータ(ユーザが 入 力 した 情 報 など)の 交 信 を 行 うことができます 例 :FORM を 使 って Web サーバ 上 の PHP プログラムを 実 行 データを 渡 す 例 です php17.php プログラム <HTML> <BODY> <?php echo <<<endphp <FORM METHOD=GET ACTION="{$_SERVER['PHP_SELF']"> endphp;?> 入 力 <INPUT TYPE=text NAME=aaaa> <INPUT TYPE=submit VALUE=" 送 信 "> </FORM> <?php if (!empty($_get['aaaa'])) printf (" 入 力 データは %s です ",$_GET['aaaa']);?> </BODY> </HTML> 上 記 のプログラムを 実 行 すると クライアント 側 の 画 面 上 にテキストタイプの 入 力 フィールドと 送 信 というボタンが 表 示 されます この 入 力 フィールドに 任 意 の 文 字 列 を 入 力 し 送 信 ボタン をクリックすると 同 じプログラムが 再 起 動 され その 入 力 内 容 が 渡 されます (ACTION による 任 意 のプログラム 名 を 指 定 することもできます) 100

101 Web サーバ 上 のプログラムは この 入 力 文 字 列 を $_GET[ aaaa ] 関 数 を 使 って 読 み 込 み 入 力 され た 文 字 列 を 処 理 します また METHOD=POST と 指 定 された 場 合 は $_GET[ aaaa ] 関 数 を 使 って 設 定 された 文 字 列 を 読 み 込 みます (<FORM> 文 では METHOD=POST を 使 われることをお 勧 めします) PHP は 書 式 付 出 力 ができる 他 のプログラム 言 語 (C 言 語 や VB など) 同 様 に 書 式 付 出 力 ができます 例 :$nenrei,$tanjobi の 変 数 にそれぞれ 年 齢 (99)と 誕 生 年 (9999)を 入 力 し 以 下 の 実 行 すると 私 は 99 才 で 9999 年 の 生 まれです と 出 力 されます php18.php プログラム <HTML><BODY> <?php $nenrei=50; $tanjyobi= 1972/11/10 ; printf( 私 は%d 才 で %s の 生 まれです,$nenrei,$tanjyobi);?> </BODY></HTML> 補 足 : %d や%s のフォーマット 文 字 は 半 角 小 文 字 で 指 定 しなければなりません PHP で 扱 う 文 字 には 注 意 すべきものがある PHP 構 文 では $などのような 特 定 の 文 字 を 特 殊 に 扱 います($は 変 数 として)ので その 文 字 を 不 用 意 に 使 用 すると 意 図 しない 結 果 となります この 弊 害 を 避 けるために その 特 殊 文 字 の 直 前 に マークを 付 け その 特 殊 文 字 を 特 殊 文 字 として 扱 わないようにする 方 法 (イスケープシーケンス)があります ま た このイスケープ 文 字 ( )との 組 み 合 わせと 特 別 な 意 味 を 持 たせる 記 述 もあります 主 なイスケープシーケンスは 以 下 のとおりです \n : 改 行 を 意 味 します \r : 復 行 (キャリッジリターン) \t : 水 平 タブレーション \\ :バックスラッシュ \$ :$ 記 号 \ :ダブルコーテーションマーク 例 :イスケースシーケンスの 使 用 例 です php19.php プログラム <HTML><BODY> <?php 101

102 $a="12345"; echo "<br> 特 殊 文 字 の 検 証 です <br>"; echo "$a<br>"; echo "\$a<br>"; echo "\$123<br>"; echo "\"<br>";?> </BODY></HTML> 102

103 4.2 サーバ 側 及 びクライアント 側 で 動 作 するスクリプトプログラムの 検 証 クライアント 側 で 実 行 されるプログラムは Web サーバにおいて 全 く 加 工 されずにクライアント 側 に 送 信 される 事 を 体 験 します また 本 コースで 扱 うサーバ 側 スクリプト 言 語 で Web ページを 作 成 した 場 合 Web サーバ 上 に 登 録 された PHP を 含 むプログラムは HTML 部 分 は 加 工 されず PHP 部 分 は PHP プログラム の 処 理 結 果 (HTML テキストに 変 換 される)と 入 れ 替 えられた 状 態 でクライアント 側 に 送 付 されることを 確 認 します また クライアント 側 スクリプト 言 語 で 作 成 された(Java スクリプトなどで)プログラムも Web サーバ 側 に 一 切 加 工 されずにクライアント 側 に 返 却 されることを 確 認 します HTML のみで 作 成 されたプログラムの 検 証 HTML で 作 成 されたプログラムがクライアント 側 から 要 求 された 場 合 Web サーバ 上 に 予 め 登 録 され ている HTML ソースファイルがそのままクライアント 側 に 返 却 され ブラウザソフト 上 で 展 開 されま す ブラウザソフト 上 でソースプログラムを 参 照 した 場 合 その 内 容 が Web サーバ 上 に 登 録 されて いる 内 容 と 同 じであることを 検 証 します jscript01.php プログラム <HTML> <head> </head> <BODY> A=1+2 </BODY> </HTML> < 演 習 課 題 > 1+2 の 部 分 を 1+3 として 実 行 してみてください phpプログラムと 宣 言 しても HTMLプログラムの 中 では 演 算 処 理 は 行 われないのが 分 かります HTML+Java スクリプトで 作 成 されたプログラムの 検 証 HTML に Java スクリプト 文 が 挿 入 されたプログラムがクライアント 側 から 要 求 された 場 合 Web サ ーバ 上 に 予 め 登 録 されているプログラムがそのままクライアント 側 に 返 却 され ブラウザソフト 上 で 展 開 実 行 されます ブラウザソフト 上 でソースプログラムを 参 照 した 場 合 その 内 容 が Web サー バ 上 に 登 録 されている 内 容 と 同 じであることを 検 証 します また Java スクリプトで 作 成 されたプ ログラムが 正 しく 実 行 される 事 を 確 認 します jscript02.php プログラム <HTML> <head> </head> <BODY> <SCRIPT language="javascript"> A=1+2; 103

104 document.write(" 演 算 結 果 ="); document.write(a); </Script> </BODY> </HTML> 補 足 : 必 要 な 時 のみ( 例 えばクリック 時 )JavaScript 部 分 を 実 行 したい 場 合 は Function 構 文 を 使 用 します < 演 習 課 題 > A=1+2 部 分 を A=2+3 として 実 行 してください JavaScript は 演 算 処 理 を 行 える 事 が 分 かります HTML+PHP で 作 成 されたプログラムの 検 証 HTML に PHP スクリプト 文 が 挿 入 されたプログラムがクライアント 側 から 要 求 された 場 合 HTML で 作 成 された 部 分 はそのままで かつ PHP で 作 成 された 分 は その 実 行 結 果 が HTML 構 文 として 変 換 さ れた 状 態 でクライアント 側 に 返 却 され ブラウザソフト 上 で 展 開 されます ブラウザソフト 上 でソー スプログラムを 参 照 した 場 合 その 内 容 が 上 記 (PHP プログラムの 実 行 結 果 となる)となっている ことを 確 認 します また 本 プログラムをクライアント 側 で 実 行 した 場 合 PHP 言 語 で 作 成 された 部 分 は 全 て 無 視 され ることを 確 認 します jscript3.php プログラム <HTML> <head> </head> <BODY> <U> 演 算 結 果 = <?php echo 1+2;?> </U> </BODY> </HTML> 補 足 : 上 記 例 を 実 行 した 場 合 <?PHP echo 1+2;?> 部 分 は Web サーバ 上 で 実 行 され 3 に 入 れ 替 わっていることを 確 認 します < 演 習 課 題 > 1+2 の 部 分 を に 変 更 して 実 行 してください 演 算 処 理 はサーバー 側 で 行 われ 結 果 だけがクライアント 側 に 返 却 されることが 分 かります 104

105 4.3 基 本 的 な HTML Java スクリプト PHP 組 み 合 わせプログラム HTML 言 語 を 使 って 表 を 作 成 するサンプルプログラムです PHP を 使 ってデータベースの 内 容 を 参 照 し その 結 果 をテーブルで 表 現 する 場 合 は 以 下 のような HTML を 作 り 出 すプログラムを 作 成 すること になります (HTML,JavaScript, 及 び PHP の 個 々のプログラムの 違 いを 理 解 しやすくする 為 に 単 価 や 表 件 数 等 を 全 て 固 定 とし プログラム 自 身 をシンプルにしています ) プログラム 本 文 sample1.htm プログラム <HTML> <HEAD> <TITLE> HTML のサンプルプログラムです </TITLE> </META name= Expires content= > <meta http-equiv="content-type" content="charset=euc-jp"> プログラムはは EUC コー ドで 保 存 します </HEAD> <SCRIPT language="javascript"> <!-- function input_java(){ calc1=eval(document.myform.count1.value); calc2=eval(document.myform.count2.value); res=(calc1*100)+(calc2*180); /* こ の よ うに プロ calc1=eval(document.myform.count1.value+"*"+"100"); calc2=eval(document.myform.count2.value+"*"+"180"); グ ラ ム する こと res=eval(calc1+"+"+calc2); もできます */ document.myform.total1.value=res; //--> 上 記 が Java スクリプト 部 分 で 入 力 された 値 から 合 計 を 算 出 して 表 示 </SCRIPT> します なお <! から // までは Java スクリプトをサポー トしないブラウザはコメントとして 扱 います <BODY bgcolor="blue"> <H2 align="center"> HTML+JavaScript+PHP のサンプルプログラムです</H2><BR><BR><BR> <TABLE border= 1 bgcolor= #F0F000 width="500" height="10" align="center"> <CAPTION align="top"> <FORM name="myform" method="get" action="sample1.php"> PHP プログラムとの 連 携 定 義 部 分 で Submit( 注 文 します)がクリッ クされた 場 合 に Sample1.php の 実 行 を 要 求 します 105

106 <H3> サンプル 表 です</H3> <TR align="center" bgcolor="#f00000"> <TH> 品 名 </TH><TH> 生 産 地 </TH><TH> 在 庫 数 量 </TH><TH> 単 価 </TH><TH align="center" bgcolor="white"> 注 文 数 量 </TH> </TR> <TR align="center"> <TD>りんご</TD><TD> 青 森 </TD><TD align="right">1000</td><td align="right">100</td> <TD><INPUT type="text" name="count1" size=10 align="right" value="0"></td> </TR> <TR align="center"> <TD>みかん</TD><TD> 静 岡 </TD><TD align="right">1200</td><td align="right">180</td> <TD><INPUT type="text" name="count2" size=10 align="right" value="0"></td> </TR> </TABLE> <CENTER> <INPUT type="button" value=" 合 計 計 算 " onclick="input_java()"> <INPUT type="text" name="total1" size=10 align="right"> <INPUT type="submit" value=" 注 文 します" width="10"> </CENTER> </FORM> </BODY> </HTML> 合 計 ボタン がクリックされた 場 合 は Input_java 関 数 が 注 文 します がクリックされた 場 合 は Sample1.php プログラムが 実 行 要 求 されます サーバで 実 行 される PHP サブルーチン sample1.php プログラム <HTML> <BODY bgcolor="blue"> <?php $shohizei=0.05; $gokei=$_get['total1']; $gokei=$gokei+$gokei*$shohizei; print " 消 費 税 込 みで {$gokei 円 の 注 文 を 受 けました ありがとうございました";?> </BODY> </HTML> 補 足 : 106

107 Sample1.php プログラムは 本 文 の 指 定 (Action= sample1.php )に 従 い 注 文 します の ボタンがクリックされた 時 に クライアント 側 からの URL によって 起 動 されます また このとき にクライアント 側 からのデータは URL の 一 部 として 送 られます 107

108 4.4 PHP 言 語 の 構 文 とプログラム 例 Terapad ツールを 使 い 以 下 に 示 すサンプルプログラムを 作 成 し ffftp ツールを 使 って Web サーバ 上 に 登 録 します プログラムの 登 録 が 完 了 したら クライアント 側 のブラウザソフト(インターネットエクス プローラ)を 使 って 動 作 の 確 認 と ソースプログラムの 確 認 をします ( 確 認 は URL で PHP プログラムを 指 定 することにより 行 います) 演 算 子 は JavaScript 言 語 や C 言 語 と 基 本 的 に 同 じ 演 算 子 種 類 注 意 点 インクリメント/ディ クリメント 演 算 ++ ーー 変 数 の 前 に 宣 言 した 場 合 は 演 算 前 にインク リメント/ディクリメントが 行 われ 後 ろに 定 義 された 場 合 は 後 で 行 われます 算 術 演 算 +,-,*,/,% %は 余 りが 結 果 となります 文 字 連 結 "PHP" "program" "PHPprogram"となりま す 比 較 演 算 ( 関 係 演 算 ) < <= == >!= >= 等 号 を = とした 場 合 は 意 味 が 違 ってきま す また!= は 等 しくない 場 合 を 意 味 します ビット 演 算 << >> >>> & ^ ~ <<は 左 算 術 シフト >>は 右 算 術 シフト >>>は 右 論 理 シフト &は AND は OR ^は 排 他 的 OR はビット OR ~は 否 定 論 理 演 算! &&!は 否 定 &&は AND は OR 条 件 演 算?: xxx=(a>b)?a:b; xxx に a と b の 大 きい 方 の 値 が 入 ります 代 入 演 算 = += *= "a+=1"は "a=a+1"と 同 じです 基 本 構 文 は C 言 語 や JavaScript 言 語 を 同 じ 構 文 基 本 構 文 使 用 例 if 構 文 if ( 条 件 式 ){ 本 文 ; else if ( 条 件 式 ) 本 文 ; else 本 文 ; if (a==1){ b="a"; else if (a=2) b="b"; else b="c" 108

109 for 構 文 for ( 式 1; 式 2; 式 3){ 本 文 ; while 構 文 while( 式 ){ 本 文 ; foreach 構 文 foreach( 配 列 変 数 as 変 数 ){ 本 文 ; a が1から"A" a が2なら"B" それ 以 外 であれば"C"がbに 入 ります b=0; for (a=1;a<11;a++){ b+=a; bには55が 入 ります a=1; while(a=1){ b+=1; 永 久 ループします $A=array("a","b","c"); foreach($a as $cont){ echo $cont; echo "<BR>"; Switch CASE 構 Switch( 変 数 ){ 文 CASE " 比 較 値 1": 本 文 1; break; CASE " 比 較 値 2": 本 文 2; break; default: 本 文 X; break; ; break 構 文 for 構 文 或 いは while 構 文 の 中 で 使 用 されるもので for ループ 或 いは while ループから 抜 け 出 します continue 構 文 for 構 文 或 いは while 構 文 の 中 で 使 配 列 変 数 A に 登 録 されている 全 ての 内 容 が 出 力 されます 変 数 の 内 容 に 応 じて 実 行 される 本 文 が 変 わります 例 えば 左 記 例 では 変 数 に 比 較 値 1 と 設 定 されている 場 合 は 本 文 1が 実 行 されます また CASE 文 で 定 義 されている 内 容 が 設 定 さ れた 場 合 は 本 文 X が 実 行 されます while(a=1){ break; 何 もしないで 抜 けます b=0; 109

110 用 されるもので continue 文 以 下 の 処 理 をスキップして 次 のループ 処 理 に 入 ります function 構 文 function 関 数 名 ( 引 数 ){ return 式 ; printf 構 文 PHP プログラムから HTML 構 文 を 出 力 するコマンドです Printf( 変 数 AAAA は %d 変 数 BBBB は %c です,AAAA,BBBB); 上 記 で% 修 飾 により 宣 言 できるコー ドは 以 下 の 通 りです %d : 整 数 で 表 現 します %s : 文 字 列 で 表 現 します %f : 大 きな 数 字 を 表 現 します ( 浮 動 小 数 点 ) %u :アンサイン( 負 を 表 現 しな い) 形 式 で 表 現 します %x :16 進 表 記 で 表 現 します %c : 文 字 で 表 現 します echo 構 文 PHP プログラムから HTML 構 文 を 出 力 print 構 文 するコマンドです for (a=1;a<11;a++){ continue; b+=a; b は 更 新 されません function func1(arg0,arg1){ return arg0+arg1; func1 の 返 却 値 として 2つの 引 く 数 の 合 計 が 返 ります 左 記 例 の%d は 出 力 する 時 の 方 法 ( 型 )を 定 義 します この 指 定 には 順 番 があり 最 初 の%d に 対 しては 変 数 AAAA が 2 番 目 の%d に 対 しては 変 数 BBBB が 対 応 します 上 記 例 では 変 数 AAAA の 内 容 を 整 数 で 出 力 し 変 数 BBBB の 内 容 を 文 字 列 で 出 力 します 変 数 AAAA の 内 容 が100で 変 数 BBBB の 内 容 が ABCD ならば 結 果 は 以 下 のよ うになります 変 数 AAAA は 100 変 数 BBBB は ABCD です PHP プログラムの 中 で 左 記 を 宣 言 する と 指 定 された 文 字 列 が 出 力 されます Echo " 文 字 列 "; print " 文 字 列 "; <<< 構 文 Print 文 や Echo 文 と 一 緒 に 使 う 構 文 で Print 文 や Echo 文 を 省 略 したプ ログラムが 作 成 できます print <<<END 本 文 1; 左 記 例 では 本 文 1や 本 文 2が PHP の 出 力 データとして 出 力 されます 左 記 の 本 文 の 各 々に print を 付 けた 場 合 と 同 じ 動 作 をします なお <<<の 終 わりを 示 す 識 別 子 は 第 1カラムから 宣 言 しなければなりませ 110

111 END; 本 文 2; ん コメント 構 文 //コメント /* コメント */ JavaScript 構 文 に 同 じです 111

112 4.5 PHP プログラムの 構 文 実 証 基 本 動 作 確 認 の 為 のプログラミング php1.php プログラム <html> <body> <?php print Print 文 で 出 力 しました<br> ; echo Echo 文 で 出 力 しました<br> ; printf( printf 文 で 出 力 しました<br> ); $a=100; printf("%d を10 進 数 で 出 力 します <br>",$a); printf("%c を 文 字 列 で 出 力 します <br>",$a); printf("%x を16 進 数 で 出 力 します <br>",$a); printf("%s をストリング 形 式 で 出 力 します <br>",$a); printf("%f をフローティング 形 式 で 出 力 します <br>",$a);?> </body> </html> 結 果 : インタネットエクスプローラ 画 面 上 に 以 下 の 文 字 が 表 示 されます Print 文 で 出 力 しました Echo 文 で 出 力 しました Print 文 で 出 力 しました これ 以 降 は %で 指 定 した 形 式 で 表 示 されます 補 足 1: printf 文 は 書 式 付 構 文 であり %を 使 って 出 力 する 内 容 を 定 義 することができます 補 足 2: %cで 表 示 した 場 合 は 内 部 データ(バイナリー)が ASCII コード 変 換 された 結 果 として 表 示 されることに 注 意 してください < 練 習 課 題 > $a=100 構 文 を $a=200 構 文 に 入 れ 替 えて 実 行 し 結 果 を 検 証 してください また $a= と 設 定 した 場 合 の 表 示 結 果 も 検 証 してください 変 数 活 用 による 基 本 演 算 プログラミング php2.php プログラム 112

113 <html> <body> <?php $a=100; $b=50; $x=$a+$b; print 変 数 を 使 って 演 算 を 行 い print 文 で 出 力 しました<br>\n ; print =.$x. <br> ;?> </body> </html> 結 果 : インタネットエクスプローラ 画 面 上 に 以 下 の 文 字 が 表 示 されます < 練 習 課 題 > 変 数 を 使 って 演 算 を 行 い print 文 で 出 力 しました = =150 の 部 分 の 出 力 を printf 構 文 を 使 って 出 力 してください ヒント: $xxxx 変 数 の 内 容 を10 進 数 で $yyy の 内 容 をストリング 形 式 で 表 示 する 構 文 は 以 下 の 通 りです printf( %d%s,$xxx,$yyy); PHP プログラムによる HTML 文 書 の 作 成 プログラミング php3.php プログラム <?php print <<<end <HTML> <BODY> <U>PHP で 作 成 された HTML プログラムです </BODY> </HTML> end;?> 結 果 : インターネットエクスプローラ 画 面 上 に 以 下 の 文 字 が 表 示 されます PHP で 作 成 された HTML プログラムです また インターネットエクスプローラ 画 面 からソースを 参 照 した 場 合 PHP プログラムで 定 義 された<HTML>から</HTML>までのプログラムが 表 示 されます 113

114 < 練 習 課 題 > 全 ての HTML 文 をそれぞれ 個 別 の print 文 で 出 力 してください 算 術 演 算 子 を 使 ったプログラミング enzan.php プログラム <HTML> <HEAD> <meta http-equiv="content-type" content="text/html; charset=euc-jp"> </HEAD> <BODY> <?php echo <<<php1 <FORM MOTHOD="GET" ACTION="{$_SERVER['PHP_SELF']"> php1;?> 変 数 $a の 値 : <INPUT NAME="a" TYPE="TEXT" SIZE=5> 変 数 $b の 値 : <INPUT NAME="b" TYPE="TEXT" SIZE=5> <INPUT NAME="SUB" TYPE="SUBMIT" VALUE=" 送 信 "> </FORM> <?php if (!empty($_get['a']) &&!empty($_get['b'])) { $A=$_GET['a']; $B=$_GET['b']; $C=$A; printf("\$a=%s,\$b=%s として 演 算 を 行 います<BR>",$A,$B); printf("***********************************<br><br>"); printf("\$a+\$b=%d となります<BR><BR>",$A+$B); printf("\$a-\$b=%d となります<BR><BR>",$A-$B); printf("\$a*\$b=%d となります<BR><BR>",$A*$B); printf("\$a/\$b=%d となります<BR><BR>",$A/$B); print("\$a%\$b="); printf("%d となります<BR><BR>",$A%$B); printf("\$a=%d ++\$A=%d \$A=%d となります<BR><BR>",$A,++$A,$A); $A=$C; printf("\$a=%d \$A++=%d \$A=%d となります<BR><BR>",$A,$A++,$A); $A=$C; printf("\$a=%d --\$A=%d \$A=%d となります<BR><BR>",$A,--$A,$A); $A=$C; printf("\$a=%d \$A--=%d \$A=%d となります<BR><BR>",$A,$A--,$A); 114

115 ?> </BODY> </HTML> 結 果 : URL で 渡 された 値 に 従 い 各 々の 演 算 が 行 われ その 結 果 が 表 示 されます < 練 習 課 題 > url のパラメータに a=100 b=50 を 設 定 して 実 行 し 実 行 結 果 が 正 しいことを 確 認 してくださ い ビット 演 算 子 を 使 ったプログラミング bitenzan.php プログラム <HTML> <HEAD> <meta http-equiv="content-type" content="text/html; charset=euc-jp"> </HEAD> <BODY> <?php echo <<<php1 <FORM MOTHOD="GET" ACTION="{$_SERVER['PHP_SELF']"> php1;?> 変 数 $a の 値 : <INPUT NAME="a" TYPE="TEXT" SIZE=5> 変 数 $b の 値 : <INPUT NAME="b" TYPE="TEXT" SIZE=5> <INPUT NAME="SUB" TYPE="SUBMIT" VALUE=" 送 信 "> </FORM> <?php if (!empty($_get['a']) &&!empty($_get['b'])) { $A=$_GET['a']; $B=$_GET['b']; $A=(integer)$A; $B=(integer)$B; $C=$A; printf("\$a=0x%x,\$b=0x%x として 演 算 を 行 います<BR>",$A,$B); printf("***********************************<br><br>"); printf(" 論 理 積 <BR>\$A&\$B=0x%x となります<BR><BR>",$A&$B); printf(" 論 理 和 <BR>\$A \$B=0x%x となります<BR><BR>",$A $B); printf(" 排 他 的 論 理 和 <BR>\$A^\$B=0x%x となります<BR><BR>",$A^$B); printf(" 否 定 <BR>~\$A=0x%x となります<BR><BR>",~$A); printf("\b で 指 定 されたビット 分 左 シフト<BR>\$A<<\$B=0x%x となります<BR><BR>",$A<<$B); $A=$C; 115

116 printf("\b で 指 定 されたビット 分 右 シフト<BR>\$A>>\$B=0x%x となります<BR><BR>",$A>>$B);?> </BODY> </HTML> 結 果 : コメントで 表 示 された 演 算 が 正 しく 行 われます < 練 習 課 題 > URLで a=50,b=3 設 定 した 場 合 どのような 結 果 になるかを 想 定 してください また 実 際 に 実 行 して その 結 果 を 検 証 してください 補 足 : 変 数 に 入 っている 内 容 を 別 の 型 で 変 換 したい( 型 キャスト) 場 合 は 型 変 換 構 文 を 使 います 整 数 への 変 換 (int) $AAAA 又 は (integer)$aaaa 倍 精 度 実 数 への 変 換 (real)$aaaa 又 は (double)$aaaa 又 は (float)$aaaa 文 字 列 への 変 換 (string)$aaaa 配 列 への 変 換 (array)$aaaa オブジェクトへの 変 換 (object)$aaaa 文 字 列 代 入 演 算 子 を 使 ったプログラミング dainyuenzan.php プログラム <HTML> <HEAD> <meta http-equiv="content-type" content="text/html; charset=euc-jp"> </HEAD> <BODY> <?php echo <<<php1 <FORM MOTHOD="GET" ACTION="{$_SERVER['PHP_SELF']"> php1;?> 変 数 $a の 値 : <INPUT NAME="a" TYPE="TEXT" SIZE=5> 変 数 $b の 値 : <INPUT NAME="b" TYPE="TEXT" SIZE=5> <INPUT NAME="SUB" TYPE="SUBMIT" VALUE=" 送 信 "> </FORM> <?php if (!empty($_get['a']) &&!empty($_get['b'])) { 116

117 PRINT ' 文 字 列 代 入 演 算 に 関 するサンプルプログラムです <br>'; PRINT '***********************************************<br>'; $A=$_GET['a']; $B=$_GET['b']; $C=$A; Web サーバ 構 築 と 各 種 プログラミング printf("<br> 文 字 列 演 算 <BR>\$A.\$B=%s となります<BR><BR>",$A.$B); $A=$B; printf("<br> 単 純 代 入 <BR>\$A=\$B \$A=%s \$B=%s となります<BR><BR>",$A,$B); $A=$C; $A+=$B; printf("<br> 加 算 代 入 <BR>\$A+=\$B \$A=%s \$B=%s となります<BR><BR>",$A,$B); $A=$C; $A-=$B; printf("<br> 減 算 代 入 <BR>\$A-=\$B \$A=%s \$B=%s となります<BR><BR>",$A,$B); $A=$C; $A*=$B; printf("<br> 乗 算 代 入 <BR>\$A*=\$B \$A=%s \$B=%s となります<BR><BR>",$A,$B); $A=$C; $A/=$B; printf("<br> 除 算 代 入 <BR>\$A/=\$B \$A=%s \$B=%s となります<BR><BR>",$A,$B); $A=$C; $A%=$B; print("<br> 剰 余 代 入 <BR>\$A%=\$B "); printf("\$a=%s \$B=%s となります<BR><BR>",$A,$B); $A=$C; $A&=$B; printf("<br>and 代 入 <BR>\$A&=\$B \$A=%s \$B=%s となります<BR><BR>",$A,$B); $A=$C; $A =$B; printf("<br>or 代 入 <BR>\$A =\$B \$A=%s \$B=%s となります<BR><BR>",$A,$B); $A=$C; $A.=$B; printf("<br> 連 結 代 入 <BR>\$A.=\$B \$A=%s \$B=%s となります<BR><BR>",$A,$B); $A=$C; $A=&$B; printf("<br> 参 照 代 入 <BR>\$A=&\$B \$A=%s \$B=%s となります<BR><BR>",$A,$B); $A=$C; $A<<=1; printf("<br> 左 1ビットシフト <BR>\$A<<=1 \$A=%s となります<BR><BR>",$A); $A=$C; $A>>=1; printf("<br> 右 1ビットシフト<BR>\$A>>=1 \$A=%s となります<BR><BR>",$A); $A=$C; $A>>=2; printf("<br> 右 2ビットシフト<BR>\$A>>=2 \$A=%s となります<BR><BR>",$A);?> </BODY> </HTML> 117

118 結 果 : URL により 指 定 された 値 に 従 って それぞれの 演 算 が 行 われます < 練 習 課 題 > 加 算 代 入 から 除 算 代 入 までの 構 文 を 通 常 の 数 式 構 文 に 置 き 換 えて 実 行 してください 通 常 の 演 算 書 式 とは 以 下 のような 書 式 を 意 味 します $A+=$B; $A=$A+$B; 比 較 三 項 論 理 演 算 子 を 使 ったプログラミング hikakuenzan1.php プログラム <HTML> <HEAD> <meta http-equiv="content-type" content="text/html; charset=euc-jp"> </HEAD> <BODY> <?php echo <<<php1 <FORM MOTHOD="GET" ACTION="{$_SERVER['PHP_SELF']"> php1;?> 変 数 $a の 値 : <INPUT NAME="a" TYPE="TEXT" SIZE=5> <INPUT NAME="SUB" TYPE="SUBMIT" VALUE=" 送 信 "> </FORM> <?php if (!empty($_get['a'])) { PRINT ' 比 較 構 文 に 関 するサンプルプログラムです<br>'; PRINT '*******************************************<br>'; $A=$_GET['a']; if ($A==10) print 'if 構 文 1: 結 果 は10に 等 しいと 判 定 されました<BR>'; elseif ($A==20) print 'if 構 文 1: 結 果 は20に 等 しいと 判 定 されました<BR>'; else { print "if 構 文 1: 結 果 は10でも20でもないと 判 定 されました<BR>"; if ($A==10): { print "if 構 文 2: 結 果 は10に 等 しいと 判 定 されました <BR>"; elseif ($A==20): { print " if 構 文 2: 結 果 は20に 等 しいと 判 定 されました <BR>"; 118

119 else: { print " if 構 文 2: 結 果 は10でも20でもないと 判 定 されました <BR>"; endif; print( <BR><BR> );?> </BODY> </HTML> hikakuenzan2.php プログラム <HTML> <HEAD> <meta http-equiv="content-type" content="text/html; charset= EUC-JP"> </HEAD> <BODY> <?php echo <<<php1 <FORM MOTHOD="GET" ACTION="{$_SERVER['PHP_SELF']"> php1;?> 変 数 $a の 値 : <INPUT NAME="a" TYPE="TEXT" SIZE=5> <INPUT NAME="SUB" TYPE="SUBMIT" VALUE=" 送 信 "> </FORM> <?php if (!empty($_get['a'])) { PRINT ' 三 項 演 算 を 行 うサンプルプログラムです<BR>'; PRINT '*********************************** <BR>'; $A=$_GET['a']; $A>10?print "\$A>10 と 判 断 されました<BR>":print "\$A>10 と 判 断 されませんでした<BR>"; printf("\$a%s10 と 判 断 されました",($A==10)? "==" : "!="); print("<br><br>");?> </BODY> </HTML> hikakuenzan3.php プログラム <HTML> <HEAD> <meta http-equiv="content-type" content="text/html; charset= EUC-JP"> 119

120 </HEAD> <BODY> <?php echo <<<php1 <FORM MOTHOD="GET" ACTION="{$_SERVER['PHP_SELF']"> php1;?> 変 数 $a の 値 : <INPUT NAME="a" TYPE="TEXT" SIZE=5> 変 数 $b の 値 : <INPUT NAME="b" TYPE="TEXT" SIZE=5> <INPUT NAME="SUB" TYPE="SUBMIT" VALUE=" 送 信 "> </FORM> <?php if (!empty($_get['a']) &&!empty($_get['b'])) { PRINT ' 論 理 積 演 算 を 行 うプログラムです <BR>'; PRINT '*********************************** <BR>'; $A=$_GET['a']; $B=$_GET['b']; if ($A==10 and $B==20) print '$A==10 and $B==20 で 成 立 しました<BR>'; if ($A==50 and $B==20) print '$A==50 and $B==20 では 成 立 しました<BR>'; if ($A==10 && $B==20) print '$A==10 && $B==20 で 成 立 しました<BR>'; if ($A==50 && $B==20) print '$A==50 && $B==20 で 成 立 しました<BR>'; if ($A==50 && $B==20) print '$A==50 && $B==20 で 成 立 しました<BR>'; if ($A==10 or $B==20) print '$A==10 or $B==20 で 成 立 しました<BR>'; if ($A==10 or $B==50) print '$A==10 or $B==50 で 成 立 しました<BR>'; if ($A==50 or $B==20) print '$A==50 or $B==20 で 成 立 しました<BR>'; if ($A==50 or $B==30) print '$A==50 or $B==30 では 成 立 しました<BR>'; if ($A==10 $B==20) print '$A==10 $B==20 で 成 立 しました<BR>'; if ($A==10 $B==50) print '$A==10 $B==50 で 成 立 しました<BR>'; if ($A==50 $B==20) print '$A==50 $B==20 で 成 立 しました<BR>'; if ($A==50 $B==30) print "$A==50 $B==30 で 成 立 しました<BR>"; if ($A==10 xor $B==20) print '$A==10 xor $B==50 では 成 立 しました<BR>'; if ($A==10 xor $B==50) 120

121 print '$A==10 xor $B==50 で 成 立 しました<BR>'; if ($A==50 xor $B==20) print '$A==50 xor $B==20 で 成 立 しました<BR>'; if ($A==50 xor $B==30) print '$A==50 xor $B==30 で 成 立 しました<BR>'; if (!$A==11) print '!$A==11 で 成 立 しました<BR>'; if (!$A==10) print '!$A==10 で 成 立 しました<BR>'; PRINT "<BR>";?> </BODY> </HTML> Web サーバ 構 築 と 各 種 プログラミング sonota.php プログラム <?php PRINT '"ls -l"コマンドを 実 行 する 実 行 演 算 子 を 使 ったサンプルプログラムです<BR>'; PRINT 'コマンドを 定 義 する $A=`ls -l`の"`"マークに 注 意 してください<BR>'; $A=`ls -l`; echo "$A";?> 結 果 : URL で 指 定 された 値 との 比 較 が 行 われ 構 文 に 応 じた 評 価 が 行 われます また sonota.php を 実 行 した 場 合 指 定 されたコマンドが 実 行 されます 121

122 次 元 2 次 元 3 次 元 配 列 を 活 用 したプログラミング array.php プログラム <HTML> <BODY> <?php PRINT '*** 多 次 元 配 列 に 関 するサンプルプログラムです ***<BR>'; PRINT '1 次 元 配 列 です $A と$B では 配 列 記 述 の 方 法 が 違 います<BR>'; $A= array( " 秋 刀 魚 "=>"さんま", " 鯖 "=>"さば", " 鮪 "=>"まぐろ"); $B= array( " 秋 刀 魚 ", " 鯖 ", " 鮪 "); PRINT '$A[ 鯖 ]の 出 力 です '; echo $A[' 鯖 ']; PRINT '<BR>$B[1]の 出 力 です '; echo $B[1]; PRINT "<BR>"; PRINT $A= $B= '2 次 元 配 列 です $A と$B では 配 列 記 述 の 方 法 が 違 います<BR>'; array( " 海 魚 " => array( " 秋 刀 魚 "=>"さんま", " 鯖 "=>"さば", " 鮪 "=>"まぐろ"), " 川 魚 " => array( " 鮎 "=>"あゆ", " 鯉 "=>"こい", " 鮒 "=>"ふな") ); array( " 海 魚 " => array( " 秋 刀 魚 ", " 鯖 ", " 鮪 "), " 川 魚 " => array( " 鮎 ", " 鯉 ", " 鮒 ") ); PRINT '$A[ 海 魚 ][ 鯖 ]の 出 力 です '; echo $A[ 海 魚 ][ 鯖 ]; PRINT '<BR>$B[" 川 魚 "][1]の 出 力 です '; echo $B[ 川 魚 ][1]; 122

123 PRINT "<BR>"; PRINT '<BR>$C[1][2]に"CCC" 保 存 した 時 の $C[1][2]の 出 力 です '; $C[1][2]="CCC"; echo $C[1][2]; PRINT "<BR>"; PRINT '3 次 元 配 列 です <BR>'; PRINT '<BR>$D[1][2][1]に"DDD" 保 存 した 時 の $D[1][2][1]の 出 力 です '; $D[1][2][1]="DDD"; echo $D[1][2][1];?> </BODY> </HTML> 結 果 : 数 字 修 飾 でも キー 修 飾 でも 指 定 した 配 列 の 内 容 が 抽 出 されます 補 足 : 配 列 のインデックスは0から 始 まります < 練 習 課 題 > $A 配 列 に 登 録 されている"ふな を 取 り 出 す 構 文 を 作 成 し 実 行 してください また $B 配 列 に 登 録 されている 鮎 を 取 り 出 す 構 文 を 作 成 して 実 行 してください 各 々の 表 示 内 容 は 以 下 とします $A の 内 容 を 表 示 しました ふな $B の 内 容 を 表 示 しました 鮎 123

124 4.5.9 型 変 換 に 関 するプログラミング kata.php プログラム <HTML> <BODY> <?php PRINT '*** 型 変 換 に 関 するサンプルプログラムです ***<BR><BR>'; $A=123; PRINT '$A=123 の 時 の,$A の 型 は '. gettype($a). "です<BR>"; printf(" 設 定 された 値 は %d です <br><br>",$a); $A="123"; PRINT '$A="123"の 時 の,$A の 型 は '. gettype($a). "です<BR>"; printf(" 設 定 された 値 は %s です <br><br>",$a); $A=123.45; PRINT '$A= の 時 の,$A の 型 は '. gettype($a). "です<BR>"; printf(" 設 定 された 値 は %f です <br><br>",$a); $A=0xf0f0; PRINT '$A=0xf0f0 の 時 の,\A の 型 は '. gettype($a). "です<BR>"; printf(" 設 定 された 値 は %x です <br><br>",$a); $A=(INT)"123"; PRINT '$A=(INT)"123"の 時 の,\A の 型 は '. gettype($a). "です<BR>"; printf(" 設 定 された 値 は %d です <br><br>",$a); $A=(REAL)"123"; PRINT '$A=(REAL)"123"の 時 の,\A の 型 は '. gettype($a). "です<BR>"; printf(" 設 定 された 値 は %f です <br><br>",$a); $A=(DOUBLE)"123"; PRINT '$A=(DOUBLE)"123"の 時 の,\A の 型 は '. gettype($a). "です<BR>"; printf(" 設 定 された 値 は %f です <br><br>",$a); $A=(FLOAT)"123"; PRINT '$A=(FLOAT)"123"の 時 の,\A の 型 は '. gettype($a). "です<BR>"; printf(" 設 定 された 値 は %f です <br><br>",$a); $A=(ARRAY)"123"; PRINT '$A=(ARRAY)"123"の 時 の,\A の 型 は '. gettype($a). "です<BR>"; printf(" 設 定 された 値 は %s です <br><br>",$a[0]); $A=(STRING)123.45; PRINT '$A=(STRING)"123.45"の 時 の,\A の 型 は '. gettype($a). "です<BR>"; printf(" 設 定 された 値 は %s です <br><br>",$a); 124

125 ?> </BODY> </HTML> 結 果 : PHP は 変 数 に 設 定 される 値 により 型 が 決 まります ( 基 本 的 には Double,Integer,String と なります Double は 浮 動 小 数 点 形 式 です) < 練 習 課 題 > 以 下 のように 構 文 を 変 えた 場 合 に その 結 果 がどうなるかを 確 認 してください $A=123; 10 桁 の 数 字 を 設 定 します 32ビットの 有 効 範 囲 に 収 まる 値 を 設 定 した 場 合 と 収 まら ない 場 合 の 違 いを 認 識 してください Double の 形 式 で 格 納 された 整 数 数 値 の 有 効 範 囲 を 超 えた 数 値 を 整 数 で 表 記 した 場 合 の 問 題 をを 認 識 してください $A=123.45; 以 下 の 浮 動 小 数 点 の 計 算 を 行 います 有 効 桁 数 と 誤 差 があることを 認 識 してください 上 記 の 実 行 結 果 を 確 認 し その 理 由 を 明 確 にしてください 125

126 制 御 構 文 (WHILE,FOR,SWITCH,FOREACH など)を 使 ったプログラミング 制 御 構 文 IF に 関 しては 比 較 三 項 論 理 演 算 子 を 使 ったプログラミング の 項 を 参 照 ください seigyo01.php プログラム <HTML> <BODY> <?php PRINT '*** 制 御 構 文 に 関 するサンプルプログラムです ***<BR>'; PRINT 'WHILE 構 文 (1)による10 回 繰 り 返 すのプログラムです <BR>'; $A=1; While($A<11){ PRINT "$A 回 目 の 繰 り 返 しです "; $A++; PRINT "WHILE を 終 了 しました<BR><BR>"; PRINT 'WHILE 構 文 (2)による10 回 繰 り 返 すのプログラムです <BR>'; $A=1; While($A<11): PRINT "$A 回 目 の 繰 り 返 しです "; $A++; ENDWHILE; PRINT "WHILE を 終 了 しました<BR>"; PRINT " 無 限 繰 り 返 しは WHILE(1)で 行 います 強 制 脱 出 は BREAK です<BR>"; PRINT "<BR>";?> </BODY> </HTML> 結 果 : どちらの 構 文 でも 同 じ 繰 り 返 す 処 理 が 行 われます < 練 習 課 題 > While 構 文 を 使 って 1から1000 迄 の 数 値 を 全 て 加 算 し 出 力 するプログラムを 作 ってく ださい プログラム 名 は 以 下 とします Kadaiseigyo01.php seigyo02.php プログラム <HTML> <BODY> <?php PRINT PRINT "<BR>"; 'FOR 構 文 による10 回 繰 り 返 すのプログラムです <BR>'; 126

127 FOR ($A=1; $A<11; $A++) { PRINT "$A 回 目 の 繰 り 返 しです "; if ($A%2) CONTINUE; PRINT "( 偶 数 のみ 表 示 しました) "; PRINT "FOR を 終 了 しました<BR>"; PRINT "FOR の 先 頭 への 強 制 分 岐 は CONTINUE 強 制 脱 出 は BREAK です<BR>";?> </BODY> </HTML> Web サーバ 構 築 と 各 種 プログラミング 結 果 : FOR 構 文 により 繰 り 返 し 処 理 が 行 われます 構 文 の 中 の$A++は 1 回 ループ 処 理 が 完 了 した 段 階 で+1されます < 練 習 課 題 > FOR 構 文 を 使 って 1から1000 迄 の 数 値 の 中 で 偶 数 だけの 合 計 と 奇 数 だけの 合 計 を 別 々 に 算 出 して 表 示 するプログラムを 作 ってください プログラム 名 は 以 下 の 通 りです Kadaiseigyo02.php seigyo03.php プログラム <HTML> <BODY> <?php PRINT "<BR>"; PRINT 'SWITCH 構 文 と WHILE 構 文 の 組 み 合 わせによるプログラムです <BR>'; $A = array( "ぶどう", "りんご", "ばなな", "ははは", "おわり"); $i=0; WHILE(1) { $B=$A[$i]; $i++; SWITCH ($B) { CASE "ぶどう": PRINT "ぶどうのパスを 通 りました<BR>"; BREAK; CASE "りんご": PRINT "りんごのパスを 通 りました<BR>"; BREAK; CASE "ばなな": 127

128 PRINT "ばななのパスを 通 りました<BR>"; BREAK; CASE "おわり": PRINT "おわりのパスを 通 りました<BR>"; BREAK 2; Default: PRINT "CASE で 宣 言 されていないコードでした<BR>"; BREAK; ; ; PRINT "WHILE/SWITCH 文 を 終 了 しました<BR>"; PRINT 'CASE の 終 了 は BREAK,WHILE ループの 強 制 脱 出 は BREAK 2 です<BR>';?> </BODY> </HTML> 結 果 : Switch 構 文 で 指 定 された 変 数 の 内 容 に 従 って 対 応 する 処 理 が 行 われます 補 足 : CASE 構 文 の 中 に BREAK 命 令 を 入 れない 場 合 は 次 の CASE 構 文 に 記 述 された 命 令 が 実 行 されて しまいます < 練 習 課 題 > 配 列 に 定 義 されている ははは の 文 字 が 出 力 されるように CASE 文 を 追 加 してください seigyo04.php プログラム <HTML> <BODY> <?php PRINT "<BR><BR><BR>"; PRINT 'FOREACH 構 文 (1)による 配 列 参 照 プログラムです <BR>'; $A = array( "ぶどう", "りんご", "ばなな", "ははは", "おわり"); FOREACH ($A as $RET) { PRINT "$RET を 参 照 しました "; PRINT "<BR>FOREACH 構 文 (1)を 終 了 しました<BR>"; PRINT "<BR>"; PRINT 'FOREACH 構 文 (2)による 配 列 参 照 プログラムです <BR>'; 128

129 $A= array( " 秋 刀 魚 "=>"さんま", " 鯖 " =>"さば", " 鮪 " =>"まぐろ"); FOREACH ($A as $RET => $val) { PRINT "$RET {$valを 参 照 しました "; PRINT "<BR>FOREACH 構 文 (2)を 終 了 しました<BR>";?> </BODY> </HTML> 結 果 : キー 付 き 配 列 でも キー 無 し 配 列 でも Foreach 構 文 は 正 しく 動 作 します また 構 文 の $RET {$val では $val には 配 列 の 内 容 が 入 り $RET には 要 素 キーが 入 ります < 練 習 課 題 > 配 列 に 項 目 ふふふ を 追 加 するだけで Foreach 構 文 の 出 力 結 果 として ふふふ が 表 示 され ることを 確 認 してください 129

130 PHP による 独 自 関 数 を 活 用 したプログラミング kansu.php プログラム <HTML> <BODY> <?php function sub01(){ printf(" 関 数 の 中 で 表 示 しました \n"); function sub02($arg0,$arg1){ return $arg0+$arg1; function sub03(){ return array(1,2,3); function sub04($arg){ printf(" 引 数 配 列 in[0]と in[1]を 演 算 した 結 果 は %d です ",$arg[0]+$arg[1]); function sub05($arg=" 規 定 値 "){ echo "\""; echo $arg; echo "\""; echo "<BR>"; printf( 引 数 無 し 関 数 を 実 行 します <br> ); sub01(); echo "<BR>"; printf( 2つの 引 数 を 持 った 関 数 を 実 行 します <br> ); $result=sub02(1,2); printf("%d は 引 数 で 渡 した 値 を 関 数 で 演 算 し 返 却 値 を 表 示 しました",$result); echo "<BR>"; printf( 配 列 を 返 却 する 関 数 を 実 行 します <br> ); list($ret1,$ret2,$ret3)=sub03(); printf("%d,%d,%d は 配 列 返 却 形 式 で 関 数 から 返 却 された 値 です ",$ret1,$ret2,$ret3); echo "<BR>"; printf( 引 数 が 配 列 指 定 の 関 数 を 実 行 します <br> ); sub04(array(1,2)); echo "<BR>"; printf( 省 略 可 能 な 引 数 が 定 義 された 関 数 を 実 行 します <br> ); printf(" 規 定 値 定 義 関 数 は 引 数 を 省 略 した 場 合 は "); echo sub05(); printf("と 認 識 し,"); printf(" 引 数 を\" 引 数 \"とした 場 合 は "); 130

131 echo sub05(" 引 数 "); printf("と 認 識 します ");?> </BODY> </HTML> 結 果 : Function と 宣 言 された 関 数 は その 関 数 が 呼 ばれた 時 のみ 実 行 され Return 命 令 で 復 帰 します この 時 に 任 意 の 値 を 返 却 値 として 返 すことができます < 練 習 課 題 > Sub2 関 数 に 対 し 引 数 が 省 略 された 場 合 第 1 引 数 が 1000 第 2 引 数 が 2000 となるように 変 更 してください 変 数 の 有 効 範 囲 変 数 には ローカル 変 数 スタティック 変 数 グローバル 変 数 があります 一 般 的 には ローカル 変 数 で 定 義 された 領 域 はスタック 領 域 に 確 保 されますが スタティック 変 数 及 びグローバル 変 数 で 宣 言 された 領 域 は 専 用 の 領 域 としてメモリ 上 に 確 保 されます また ローカル 変 数 に 場 合 は その 変 数 を 定 義 したプロシージャが 呼 ばれる 度 に 初 期 化 されますが スタティック 変 数 は 初 期 化 が 行 われ ません これに 対 し グローバル 変 数 は どのプロシージャンでも 参 照 / 更 新 ができる 領 域 として 確 保 されます hensu.php プログラム <HTML> <BODY> <?php $data="abcd"; $val=1000; function sub01(){ $data="a"; return $data; function sub02(){ global $data; return $data; function sub03(){ static $val=0; echo $val; $val++; function sub04(){ global $val; echo $val; 131

132 $val++; echo "<BR>"; printf (" 関 数 内 でローカル 変 数 を 使 用 した 場 合 の 例 です <br> ); $ret=sub01(); printf (" 関 数 外 で 宣 言 された 変 数 を 関 数 内 で 更 新 してもローカル 変 数 として 処 理 されますので 関 数 外 で 宣 言 した 変 数 には 影 響 はありません"); echo "<BR>"; printf ("グローバル 変 数 の 宣 言 を 行 った 場 合 の 例 です <br> ); $ret=sub02(); printf (" 関 数 内 で Global 宣 言 を 行 うと 結 果 は \"%s\"となり 関 数 外 で 設 定 された 値 が 得 られ ます <br>",$ret); printf (" 関 数 内 で STATIC 変 数 を 更 新 する 関 数 を 連 続 実 行 した 場 合 の 例 です <br> ); printf("1 回 目 の 結 果 :"); echo sub03(); printf("<br>2 回 目 の 結 果 :"); echo sub03(); printf("<br>3 回 目 の 結 果 :"); echo sub03(); echo "<BR>"; printf (" 関 数 内 でグローバル 変 数 宣 言 を 行 い その 変 数 を 変 更 する 関 数 を 連 続 実 行 した 場 合 の 例 です <br> ); printf("1 回 目 の 結 果 :"); sub04(); printf("<br>2 回 目 の 結 果 :"); sub04(); printf("<br>3 回 目 の 結 果 :"); sub04();?> </BODY> </HTML> 補 足 : ローカル 変 数 として 定 義 された 変 数 スタティック 変 数 と 定 義 された 変 数 グローバルとして 定 義 された 変 数 が 名 前 は 同 じでも 別 々の 領 域 に 確 保 され 別 々の 値 が 格 納 されます 補 足 : 変 数 は 変 数 に 何 らかの 値 を 代 入 した 時 に 確 保 されます 132

133 フォームとの 連 携 に 関 するプログラミング 13-1) 連 携 形 式 1 フォーム 構 文 の 送 信 ボタンがクリックされた 場 合 別 に 定 義 されたプログラムを 再 呼 び 出 す 形 態 です form01.html プログラム <html> <head><title>フォームの 活 用 </title></head> <body> 入 力 してください <FORM method="get" action="form01.php"> 入 力 :<INPUT TYPE="text" NAME="in"> <INPUT TYPE="submit" VALUE=" 送 信 "> </FORM> </body> </html> form01.php プログラム <HTML> <BODY> <?php if (!empty($_get['in'])) printf ("%s が 入 力 されました ",$_GET['in']); else printf (" 入 力 されませんでした ");?> </BODY> </HTML> 結 果 : Action で 定 義 されたプログラムが 送 信 ボタンをクリックすることにより 実 行 されます < 練 習 課 題 > 入 力 ボックスを1つ 追 加 し 送 信 ボタンがクリックされた 場 合 その2つのボックスに 入 力 さ れた 値 を 積 算 し その 結 果 を 表 示 するようにプログラムを 変 更 してください 13-2) 連 携 形 式 2 フォーム 構 文 の 送 信 ボタンがクリックされた 場 合 自 分 自 身 を 再 呼 び 出 しする 形 態 です 133

134 form02.php プログラム <html> <head><title>フォームの 活 用 </title></head> <body> <?php if (empty($_get['in'])):?> 入 力 してください <?php echo <<<php1 <FORM MOTHOD="GET" ACTION="{$_SERVER['PHP_SELF']"> php1;?> 入 力 :<INPUT TYPE="text" NAME="in"> <INPUT TYPE="submit" VALUE=" 送 信 "> </FORM> <?php else: printf ("%s が 入 力 されました ",$_GET['in']); endif;?> </body> </html> 結 果 : ユーザインターフェースにおいて データが 入 力 されたか 否 かにより 処 理 を 分 けることができ ます < 練 習 課 題 > 入 力 ボックスを1つ 追 加 し 送 信 ボタンがクリックされた 場 合 その2つのボックスに 入 力 さ れた 値 の 合 計 を 計 算 し その 結 果 を 表 示 するようにプログラムを 変 更 してください 入 出 力 の 正 規 表 現 によるチェック valid01.php プログラム <html> <head><title> 入 力 データの 正 規 表 現 の 確 認 </title></head> <body> <?php if (empty($_get['in1'])):?> 正 規 表 現 には " 数 字 " " 英 数 字 " " 数 字 以 外 " 又 は"その 他 "を 入 力 します <BR> チェックデータには 正 規 表 現 でチェックしたい 内 容 を 入 力 します <BR> <?php echo <<<php1 <FORM MOTHOD="GET" ACTION="{$_SERVER['PHP_SELF']"> php1;?> 134

135 正 規 表 現 :<INPUT TYPE="text" NAME="in1" VALUE=" 数 字 "> チェックデータ:<INPUT TYPE="text" NAME="in2"> <INPUT TYPE="submit" VALUE=" 送 信 "> </FORM> <?php else: SWITCH ($_GET['in1']) { CASE " 数 字 ": if (ereg("^[0-9]*$",$_get['in2'])) printf (" 正 しく 入 力 されました <BR>"); Web サーバ 構 築 と 各 種 プログラミング else printf (" 入 力 ミスです 任 意 桁 の 数 字 を 入 力 してください <BR>"); BREAK; CASE " 英 数 字 ": if (ereg("^[0-9a-za-z]*$",$_get['in2'])) printf (" 正 しく 入 力 されました <BR>"); else printf (" 入 力 ミスです 任 意 桁 の 英 数 字 を 入 力 してください <BR>"); BREAK; CASE " 数 字 以 外 ": if (ereg("^[^0-9]*$",$_get['in2'])) printf (" 正 しく 入 力 されました <BR>"); else printf (" 入 力 ミスです 数 字 以 外 の 任 意 桁 の 文 字 列 を 入 力 してください <BR>"); BREAK; CASE " 数 字 4": if (ereg("^[0-9]{4$",$_get['in2'])) printf (" 正 しく 入 力 されました <BR>"); else printf (" 入 力 ミスです 4 桁 の 数 字 を 入 力 してください <BR>"); BREAK; CASE " 小 文 字 4": if (ereg("^[a-z]{4$",$_get['in2'])) printf (" 正 しく 入 力 されました <BR>"); else printf (" 入 力 ミスです 4 桁 の 小 文 字 を 入 力 してください <BR>"); BREAK; CASE " 大 文 字 4": if (ereg("^[a-z]{4$",$_get['in2'])) printf (" 正 しく 入 力 されました <BR>"); else printf (" 入 力 ミスです 4 桁 の 大 文 字 を 入 力 してください <BR>"); BREAK; CASE "a,b,c": if (ereg("^[abc]$",$_get['in2'])) printf (" 正 しく 入 力 されました <BR>"); else printf (" 入 力 ミスです 小 文 字 の a か b か c を 入 力 してください <BR>"); BREAK; CASE " 先 頭 1 2": 135

136 if (ereg("^[12][0-9]*$",$_get['in2'])) printf (" 正 しく 入 力 されました <BR>"); else printf (" 入 力 ミスです 先 頭 が1か2で 任 意 の 桁 数 の 数 字 を 入 力 してくだ さい <BR>"); BREAK; CASE "その 他 " or "HELP": printf (" 以 下 の 確 認 ができます <BR>"); printf (" 数 字 4 :4 桁 の 数 字 をチェックします <BR>"); printf (" 小 文 字 4 :4 桁 の 小 文 字 をチェックします <BR>"); printf (" 大 文 字 4 :4 桁 の 大 文 字 をチェックします <BR>"); printf ("a,b,c :a,b,c の 何 れかであることをチェックします <BR>"); printf (" 先 頭 1,2 : 最 初 が1 又 は2で 始 まる 任 意 桁 の 数 字 をチェックします <BR>"); BREAK; Default: printf (" 入 力 が 正 しくありません"); BREAK; ; endif;?> </body> </html> 結 果 : 正 規 表 現 を 使 えば 基 本 的 な 入 力 チェックは 全 て 可 能 です < 練 習 課 題 1> 表 示 されるユーザインターフェース 画 面 上 で 各 々の Case 文 が 成 立 するような 値 を 設 定 し 正 しく 設 定 されることを 確 認 してください < 練 習 課 題 2> 先 頭 が 小 文 字 の 英 字 で それ 以 降 に 0 以 外 の 数 字 が3 桁 続 いた 場 合 にのみ 正 しく 認 識 され るような CASE 構 文 を 作 成 し 追 加 してください 正 規 表 現 の 識 別 文 字 は 練 習 1 とします < 練 習 課 題 3> 大 文 字 4 と 同 じ 処 理 を 正 規 表 現 を 使 用 しないで 以 下 の 関 数 を 使 うことにより 行 うプログ ラムを 作 成 してください この 時 の 識 別 文 字 は 練 習 2 としてください $A=strlen($XXX); $XXX に 格 納 されている 文 字 列 の 長 さを 返 します substr($xxx,0,1); $XXX の0 番 目 の 文 字 を1バイトだけ 取 り 出 します 補 足 : 上 記 構 文 は 以 下 のように 表 現 することもできます <?php if (empty($_get['in1'])):?>の 部 分 を 以 下 のように 表 現 します 136

137 <?php if (empty($_get['in1'])){?> <?php else:の 部 分 を 以 下 のように 表 現 します <?php else { endif; の 部 分 を 以 下 のように 表 現 します ; REQUIRE 構 文 を 使 ったプログラミング Require 構 文 は この 構 文 を 宣 言 しているプログラムが 実 行 された 時 に 動 的 に 展 開 実 行 されます 尚 この 構 文 は Require 構 文 により 指 定 されたプログラムの 実 行 結 果 が 適 用 される 理 由 から Include 構 文 同 様 に 指 定 されるプログラムは そのものが 完 結 した( 単 独 で 実 行 できる 形 式 )プログラムである 必 要 が あります Include 構 文 との 違 いは この 構 文 を 宣 言 しているプログラムを 実 行 する 前 に 実 行 されるという 点 にあ ります 15-1) 正 しく 実 行 される 例 require01.php プログラム <HTML> <body> <?php require('require02.php');?> </body> </html> require02.php プログラム <?php $result=1+2; print <<<END <u> = <FONT COLOR="red"> $result <br> 計 算 完 了 </FONT> </u> END;?> 補 足 : require02.php は それ 自 身 が 処 理 を 完 結 しています 15-2) 正 しく 実 行 されない 例 require011.php プログラム 137

138 <HTML> <head><title> PHP 練 習 課 題 </title></head> <body> <?php $result=1+2; require( require021.php );?> </body> </html> require021.php プログラム print <<<END <u> = <FONT COLOR="red"> $result <br> 計 算 完 了 </FONT> </u>" END; 補 足 : require02.php は 単 独 で 実 行 を 行 うと require.php プログラムの$result=1+2; 文 と require02.php プログラムの$result 文 の 連 携 が 意 図 したように 動 作 しませんので 正 しい 結 果 を 得 ることはできません 138

139 クラスからオブジェクトを 生 成 するプログラミング オブジェクト 指 向 プログラミングにおいて 変 数 とそれに 付 随 する 処 理 ( 手 続 き)をひとまとめにした (カプセル 化 と 言 います)ものをクラスと 定 義 しています このクラスを 作 成 することにより 同 様 の 処 理 を 行 う 変 数 を 含 めた 複 数 のプログラム(オブジェクト)を 別 々に 生 成 し その 各 々のオブジェクトに 対 し 同 様 の 方 法 ( 呼 びに 対 する 片 手 続 き)により 個 別 の 独 立 した 処 理 を 要 求 することができます PHP では このオブジェクト 指 向 プログラミングが 可 能 となっています 16-1) 複 数 オブジェクトの 生 成 require03.php プログラミング <?php require('require04.php'); printf("オブジェクト1の 定 義 とコンストラクタの 実 行 です<BR>"); $obj1=new sub; printf("<br>オブジェクト 2 の 定 義 とコンストラクタの 実 行 です<BR>"); $obj2=new sub; printf("<br>オブジェクト1の 実 行 です<BR>"); $obj1->sub01(); $obj1->sub01(); $obj1->sub01(); $obj1->sub01(); printf("<br>オブジェクト 2 の 実 行 です<BR>"); $obj2->sub01(); $obj2->sub01(); $obj2->sub01(); $obj2->sub01();?> require04.php プログラミング <?php class sub{ var $var01; function sub() { $this->var01=100; printf("var01 の 値 は:%d<BR>",$this->var01); function sub01() { ++$this->var01; printf("var01 の 値 は:%d<BR>",$this->var01);?> 実 行 結 果 として 以 下 が 表 示 されます 139

140 オブジェクト1の 定 義 とコンストラクタの 実 行 です var01 の 値 は:100 オブジェクト 2 の 定 義 とコンストラクタの 実 行 です var01 の 値 は:100 オブジェクト1の 実 行 です var01 の 値 は:101 var01 の 値 は:102 var01 の 値 は:103 var01 の 値 は:104 オブジェクト 2 の 実 行 です var01 の 値 は:101 var01 の 値 は:102 var01 の 値 は:103 var01 の 値 は:104 補 足 : 上 記 例 では 1つのクラスから 2つの 独 立 したオブジェクトを 生 成 しています この 各 々のオブ ジェクト 内 に 定 義 されている 変 数 は オブジェクト 毎 に 独 立 に 扱 われます また オブジェクト 生 成 時 にコントラクタ(クラス 名 と 同 じ 名 前 の 関 数 )は 自 動 的 に 実 行 されますので 初 期 化 処 理 などが 容 易 に 可 能 です < 練 習 課 題 > オブジェクト 生 成 時 のコントラクタにおける 初 期 設 定 において $var01 変 数 の 値 を 1000 に 変 更 し て 実 行 してください 16-2) オブジェクト 生 成 後 の 変 数 の 編 集 require01.php プログラムにおいて New 命 令 によりオブジェクトを 生 成 後 に 変 数 を 切 り 替 える 命 令 を 挿 入 した 場 合 その 切 り 替 えがオブジェクト 内 の 変 数 に 適 用 されます require031.php プログラム <?php require('require04.php'); printf("オブジェクト1の 定 義 とコンストラクタの 実 行 です<BR>"); $obj1=new sub; printf("<br>オブジェクト 2 の 定 義 とコンストラクタの 実 行 です<BR>"); $obj2=new sub; printf("<br>オブジェクト1の 実 行 です<BR>"); $obj1->var01=1000; $obj1->sub01(); $obj1->sub01(); $obj1->sub01(); 140

141 printf("<br>オブジェクト 2 の 実 行 です<BR>"); $obj2->sub01(); $obj2->sub01(); $obj2->sub01();?> rqeuire04.php は 変 更 しないで require031.php プログラムを 実 行 しますと 以 下 の 結 果 が 得 られ ます この 結 果 $obj1->var01=1000; 命 令 は オブジェクト1(obj1)にしか 適 用 されないことが 分 かります オブジェクト1の 定 義 とコンストラクタの 実 行 です var01 の 値 は:100 オブジェクト 2 の 定 義 とコンストラクタの 実 行 です var01 の 値 は:100 オブジェクト1の 実 行 です var01 の 値 は:1001 var01 の 値 は:1002 var01 の 値 は:1003 オブジェクト 2 の 実 行 です var01 の 値 は:101 var01 の 値 は:102 var01 の 値 は:103 < 練 習 課 題 > $var01 変 数 の 初 期 値 を オブジェクト1に 対 しては 5000 とし オブジェクト2に 対 しては として 実 行 してください 実 行 結 果 として オブジェクト1は 5001,5002,5003 が 表 示 され オ ブジェクト2は 10001,1002,1003 が 表 示 されることを 確 認 してください 16-3) クラスに 定 義 された 内 容 を 含 めた 新 しいクラスの 生 成 既 存 のクラスをベースに その 既 存 のクラスを 一 部 変 更 或 いは 追 加 し 新 たなクラスを 生 成 すること ができます このクラスにより 生 成 されるオブジェクトを 使 用 することにより 新 たなクラスで 定 義 され た 内 容 を 含 んだクラスとしてオブジェクトを 生 成 することができます require05.php プログラム <?php require('require06.php'); class sub2 extends sub1{ function sub2(){ $this->sub1(); printf("var01 の 値 は:%d<BR>",$this->var01); 141

142 function sub02($val=10){ $this->var01=$val * 2; printf("var01 の 値 は:%d<BR>",$this->var01); printf("オブジェクト(sub2)の 定 義 とコンストラクタの 実 行 です<BR>"); $obj=new sub2; printf("<br>sub01(1)の 実 行 結 果 です クラス sub1 の 内 容 が 継 承 されます <BR>"); $obj->sub01(1); $obj->sub01(1); $obj->sub01(1); printf("<br>sub02(1)の 実 行 結 果 です クラス sub2 の 定 義 内 容 が 適 用 されます <BR>"); $obj->sub02(1); $obj->sub02(1); $obj->sub02(1); printf("<br>sub01()の 実 行 結 果 です クラス sub1 の 内 容 が 継 承 されます <BR>"); $obj->sub01(); $obj->sub01(); $obj->sub01(); printf("<br>sub02()の 実 行 結 果 です クラス sub2 の 定 義 内 容 が 適 用 されます <BR>"); $obj->sub02(); $obj->sub02(); $obj->sub02();?> require06.php プログラム <?php class?> sub1{ var $var01; function sub1() { $this->var01=100; printf("var01 の 値 は:%d<BR>",$this->var01); function sub01() { ++$this->var01; printf("var01 の 値 は:%d<BR>",$this->var01); function sub02() { $this->var01=+10; printf("var01 の 値 は:%d<BR>",$this->var01); 上 記 の 実 行 結 果 は 以 下 となります クラス sub2 で 定 義 されたクラス sub1 と 重 複 した 内 容 が クラ ス sub1 の 内 容 に 置 き 換 わり 実 行 されたことが 分 かります 142

143 オブジェクト(sub2)の 定 義 とコンストラクタの 実 行 です var01 の 値 は:100 var01 の 値 は:100 sub01(1)の 実 行 結 果 です クラス sub1 の 内 容 が 継 承 されます var01 の 値 は:101 var01 の 値 は:102 var01 の 値 は:103 sub02(1)の 実 行 結 果 です クラス sub2 の 定 義 内 容 が 適 用 されます var01 の 値 は:2 var01 の 値 は:2 var01 の 値 は:2 sub01()の 実 行 結 果 です クラス sub1 の 内 容 が 継 承 されます var01 の 値 は:3 var01 の 値 は:4 var01 の 値 は:5 sub02()の 実 行 結 果 です クラス sub2 の 定 義 内 容 が 適 用 されます var01 の 値 は:20 var01 の 値 は:20 var01 の 値 は:20 143

144 INCLUDE 構 文 を 使 ったプログラミング Include 構 文 は Require 構 文 同 様 に この 構 文 を 宣 言 しているプログラムの 実 行 中 に 展 開 実 行 され その 結 果 が 適 用 されます 尚 この 構 文 は include 構 文 により 指 定 されたプログラムの 実 行 結 果 が 適 用 される 理 由 から Require 構 文 同 様 に 指 定 されるプログラムは そのものが 完 結 した( 単 独 で 実 行 でき る 形 式 )プログラムである 必 要 があります 従 来 Require 構 文 との 違 いとして 動 的 に 展 開 するか 否 かがあったようですが 新 しいバージョンで は ほとんどなくなったと 考 えても 問 題 はないようです 17-1) Include 構 文 は Require と 同 じ 意 味 で 使 用 することができます Require 構 文 を Include 構 文 に 置 き 換 えても 結 果 は 同 じになります Include01.php プログラム <?php include('require06.php'); class sub2 extends sub1{ function sub2(){ $this->sub1(); printf("var01 の 値 は:%d<BR>",$this->var01); function sub02($val=10){ $this->var01=$val * 2; printf("var01 の 値 は:%d<BR>",$this->var01); printf("オブジェクト(sub2)の 定 義 とコンストラクタの 実 行 です<BR>"); $obj=new sub2; printf("<br>sub01(1)の 実 行 結 果 です クラス sub1 の 内 容 が 継 承 されます <BR>"); $obj->sub01(1); $obj->sub01(1); $obj->sub01(1); printf("<br>sub02(1)の 実 行 結 果 です クラス sub2 の 定 義 内 容 が 適 用 されます <BR>"); $obj->sub02(1); $obj->sub02(1); $obj->sub02(1); printf("<br>sub01()の 実 行 結 果 です クラス sub1 の 内 容 が 継 承 されます <BR>"); $obj->sub01(); $obj->sub01(); $obj->sub01(); printf("<br>sub02()の 実 行 結 果 です クラス sub2 の 定 義 内 容 が 適 用 されます <BR>"); $obj->sub02(); $obj->sub02(); $obj->sub02();?> 補 足 :Require05.php プログラムの require 命 令 を Include 命 令 に 置 き 換 えただけです 144

145 17-2) Include 構 文 はプログラムが 実 行 される 時 に 展 開 されます Include02.php プログラム <?php $program=array('include021.inc','include022.inc','include023.inc'); for ($i=0;$i<count($program);$i++){ include($program[$i]);?> Include021.inc プログラム <?php printf("include21.inc が 実 行 されました <BR>");?> Include022.inc プログラム <?php printf("include22.inc が 実 行 されました <BR>");?> Include023.inc プログラム <?php printf("include23.inc が 実 行 されました <BR>");?> 上 記 の 実 行 結 果 は 以 下 となります include21.inc が 実 行 されました include22.inc が 実 行 されました include23.inc が 実 行 されました 補 足 : 同 じプログラムファイルを Include や Require 構 文 を 使 って 複 数 回 読 み 込 んだ 時 に その 読 み 込 まれる プログラムの 中 でクラスの 宣 言 等 を 行 っていると 重 複 した 宣 言 によりエラーとなってしまうことがあり ます この 弊 害 を 防 ぐ 方 法 として Include 構 文 や Rquire 構 文 により 同 じプログラムファイルが 複 数 回 呼 ばれた 場 合 最 初 の 一 回 のみ 有 効 とする 以 下 のような 構 文 があります 特 に 意 識 しない 場 合 は 以 下 の 構 文 を 使 われたほうが 問 題 はないと 思 います once01.php 145

146 <?php require_once('require04.php'); require_once('require04.php'); include_once('require04.php'); include_once('require04.php'); $obj=new sub; $obj->sub01();?> require04.php ではクラス 宣 言 を 行 っていますが 上 記 構 文 を 実 行 してもエラーとはなりません 上 記 構 文 から _once を 取 って 実 行 した 場 合 は エラーとなります noonce01.php <?php require('require04.php'); require('require04.php'); include('require04.php'); include('require04.php'); $obj=new sub; $obj->sub01();?> 146

147 セッションを 使 ったプログラミング クライアント 側 に 動 作 しているブラウザソフトよりサーバに 対 し 発 行 される 各 画 面 (ページ) 表 示 要 求 は 毎 回 完 結 処 理 として 処 理 されます つまり クライアント 側 から URL を 介 してページの 表 示 要 求 が 行 われた 場 合 サーバはその 要 求 に 対 応 するページをクライアント 側 に 送 信 し 全 てを 終 了 します 上 記 理 由 から 基 本 的 には ページからページに 切 り 替 えた 場 合 そのページ 間 での 情 報 の 引 渡 しは 行 われませ ん この 情 報 の 引 渡 しを 可 能 とし 各 々のページが 関 連 性 を 持 って 論 理 的 に 動 作 する 連 続 処 理 のことをセ ッションといい これを 実 現 することをセッション 管 理 と 言 います PHP では 以 下 の 何 れかの 方 法 によ りセッション 管 理 を 行 うことができます URL の 引 数 として 指 定 することにより 情 報 を 引 き 渡 す 方 法 Hidden 属 性 を 使 って 情 報 を 引 き 渡 す 方 法 グローバル 変 数 を 使 って 情 報 を 引 き 渡 す 方 法 HTTP クッキーを 使 って 情 報 を 引 き 渡 す 方 法 補 足 : $_SESSION グローバル 変 数 に 対 するデータの 格 納 は クライアント 毎 に 別 々に 格 納 されます 18-1) URL の 引 数 として 指 定 することにより 情 報 を 引 き 渡 す 方 法 この 方 法 は 最 も 一 般 的 な 方 法 で 渡 したいセッション 情 報 を URL に 付 加 して 要 求 を 行 うことにより 実 現 できます 形 式 は 以 下 の 通 りで? 以 降 がセッション 情 報 として その URL に 対 応 するプログラムに 渡 さ れます ブラウザ 画 面 上 で 直 接 設 定 し 渡 す 場 合 HTML プログラムから リンクにより 渡 す 場 合 <html> <a href="session01.php?in=session-data"> 次 のページ</a> </html> 上 記 のセッション 情 報 を 受 け 取 るプログラムは 以 下 のようになります session01.php プログラム <html> <head><title>フォームの 活 用 </title></head> <body> <?php if (empty($_get['in'])):?> セッション 情 報 はありませんでした <?php else: printf ("セッション 情 報 として %s を 受 け 取 りました ",$_GET['in']); endif;?> </body> 147

148 </html> 上 記 の URL による 要 求 を 行 った 結 果 セッション 情 報 が 正 しく 渡 され 以 下 の 表 示 が 行 われます セッション 情 報 として session-data を 受 け 取 りました 18-2) Hidden 属 性 を 使 って 情 報 を 引 き 渡 す 方 法 この 方 法 は<form >タグを 使 い 現 在 表 示 されている 画 面 上 から 別 の 画 面 上 に 何 らかのセッション 情 報 を 渡 したい 場 合 に 使 用 する 方 法 です この 方 法 では 相 手 に 渡 されるセッション 情 報 は 画 面 には 表 示 され ず 相 手 を 呼 び 出 すための URL の 中 に 強 制 的 に 含 まれて 発 行 されます Hidden 属 性 を 使 ってセッション 情 報 を 渡 すプログラムは 以 下 のようになります session02.php <html> <body> <?php echo <<<php1 <FORM MOTHOD="GET" ACTION="{$_SERVER['PHP_SELF']"> php1;?> <input type="hidden" name=in value=session-data> <input type="submit" value=" 次 のページ"> </form> </body> </html> 補 足 : 次 のページは 前 項 の session01.php を 使 用 します この 実 行 結 果 セッション 情 報 として sessionn-data が 渡 されます 18-3) グローバル 変 数 を 使 って 情 報 を 引 き 渡 す 方 法 サーバ 側 の 所 定 のディレクトリ(サーバー 上 の/etc/php.ini によって 定 義 されたディレクトリ) 上 に $_SESSION グローバル 配 列 変 数 として 格 納 され 次 のアクセスにおいてセッション 情 報 として 渡 されます サーバ 側 の 所 定 のディレクトリにセッション 情 報 を 格 納 / 参 照 するプログラムは 以 下 のようになります Session03.php プログラム <?php session_start();?> <html> <body> 148

149 <?php session_cache_limiter("private"); print("request:\n"); print_r($_request); print("<br>\n"); $_SESSION["in"]="Test-Data"; print <<<EOF <a href="session031.php"> 次 のページです </a> EOF;?> </body> </html> サーバ 上 に 登 録 されているセッション 情 報 を 読 み 込 み そのセッション 情 報 に 従 った 動 作 を 行 うプログラ ムは 以 下 のようになります Session031.php プログラム <?php session_start();?> <HTML> <BODY> <?php $indata=!empty($_session["in"])? $_SESSION["in"] : ""; printf("グローバル 変 数 として 渡 されたセッション 情 報 は "); printf("%s でした <br>",$indata); printf("グローバル 変 数 として 渡 されたセッション 情 報 は "); printf("%s でした ",$_SESSION["in"]);?> </BODY> </HTML> 補 足 : グローバル 変 数 をディスク 上 に 格 納 するか メモリ 上 のみで 行 うか あるいは グローバル 変 数 の 有 効 範 囲 を 現 在 のブラウザに 限 定 するか ブラウザ 間 で 受 け 渡 せるようにするかは php.ini ファイルの 設 定 に 依 存 します 18-4) グローバル 変 数 を 使 って 情 報 を 引 き 渡 す 方 法 HTML の FORM 文 と 連 携 させてインタラクティブな 画 面 を 作 成 する 場 合 は 以 下 のようにします session04.php <HTML> 149

150 <BODY> <H1>** FORM 構 文 と PHP の 連 携 ** <BR></H1> <?php echo <<<php1 <FORM MOTHOD="GET" ACTION="{$_SERVER['PHP_SELF']"> php1;?> テキスト 入 力 <BR> <INPUT NAME="TXT" TYPE="TEXT" SIZE=20> <BR><BR>パスワード 入 力 <BR> <INPUT NAME="PWD" TYPE="PASSWORD" SIZE=20> <BR> 隠 しデータ 送 信 <BR> <INPUT NAME="HID" TYPE="HIDDEN" SIZE=20 VALUE=" 隠 し 情 報 "> <BR> 複 数 行 テキスト 入 力 <BR> <TEXTAREA NAME="TXTA" ROWS=5 COLS=50 WRAP=OFF> </TEXTAREA> <BR><BR>ラジオボタン 入 力 <BR> <INPUT NAME="RED" TYPE="RADIO" VALUE="RED1" CHECKED>ラジオ1 <INPUT NAME="RED" TYPE="RADIO" VALUE="RED2">ラジオ2 <INPUT NAME="RED" TYPE="RADIO" VALUE="RED3">ラジオ3 <BR><BR>チェックボタン 入 力 <BR> <INPUT NAME="CHK1" TYPE="CHECKBOX" VALUE="CHK1">チェックボタン1 <INPUT NAME="CHK2" TYPE="CHECKBOX" VALUE="CHK2" CHECKED>チェックボタン2 <INPUT NAME="CHK3" TYPE="CHECKBOX" VALUE="CHK3">チェックボタン3 <BR><BR>プルダウンメニュー 入 力 <BR> <SELECT NAME="PUL"> <OPTION VALUE="PUL1">プルダウンメニュー1 <OPTION VALUE="PUL2">プルダウンメニュー2 <OPTION VALUE="PUL3" SELECTED>プルダウンメニュー3 </SELECT> <BR><BR>リストボックス 入 力 <BR> <SELECT NAME="LST" SIZE=5> <OPTION VALUE="LST1">オプションリスト1 <OPTION VALUE="LST2">オプションリスト2 <OPTION VALUE="LST3" SELECTED>オプションリスト3 </SELECT> <BR><BR>リセットボタン 処 理 <BR> <INPUT NAME="RST" TYPE="RESET" VALUE="リセット"> <BR><BR> 送 信 ボタン 処 理 <BR> <INPUT NAME="SUB" TYPE="SUBMIT" VALUE=" 送 信 "> </FORM> <?PHP if if if (!empty($_get['txt'])){ printf ("<BR>テキストの 引 数 は %s",$_get['txt']); (!empty($_get['pwd'])){ printf("<br>パスワードの 引 数 は %s",$_get['pwd']); (!empty($_get['hid'])){ printf("<br> 隠 し 情 報 の 引 数 は %s",$_get['hid']); 150

151 if if if if if if if if if (!empty($_get['txta'])){ printf ("<BR> 複 数 テキストの 引 数 は %s",$_get['txta']); (!empty($_get['red'])){ printf("<br>ラジオボタンの 引 数 は %s",$_get['red']); (!empty($_get['chk1'])){ printf("<br>チェックボックス1の 引 数 は %s",$_get['chk1']); (!empty($_get['chk2'])){ printf ("<BR>チェックボックス2の 引 数 は %s",$_get['chk2']); (!empty($_get['chk3'])){ printf("<br>チェックボックス3の 引 数 は %s",$_get['chk3']); (!empty($_get['pul'])){ printf("<br>プルダウンメニューの 引 数 は %s",$_get['pul']); (!empty($_get['lst'])){ printf("<br>リストボックスの 引 数 は %s",$_get['lst']); (!empty($_get['rst'])){ printf("<br>リセットボタンの 引 数 は %s",$_get['rst']); (!empty($_get['sub'])){ printf("<br> 転 送 ボタンの 引 数 は %s",$_get['sub']);?> </BODY> </HTML> 18-5) HTTP クッキーを 使 って 情 報 を 引 き 渡 す 方 法 引 き 渡 したい 情 報 を setcookie 関 数 を 使 って クライアント 側 の 所 定 のフォルダ 上 に 保 存 されます また この 情 報 は 同 じ URL がアクセスされた 時 に httpプロトコルのヘッダー 情 報 送 信 と 一 緒 にサ ーバー 側 に 送 られます 具 体 的 な 内 容 については ネットワーク 関 数 の 項 で 紹 介 します 151

152 グローバル 変 数 参 照 プログラミング PHP は 各 種 の 情 報 をグローバル 変 数 を 介 して 開 放 しています 以 下 のプログラムは グローバル 変 数 の 参 照 例 です global01.php プログラム <HTML> <BODY> <?php printf("server[php_self]グローバル 変 数 の 内 容 は=>%s<br>",$_SERVER['PHP_SELF']); printf("server[http_user_agent]グローバル 変 数 の 内 容 は=> %s<br>",$_server['http_user_agent']); printf("server[http_host]グローバル 変 数 の 内 容 は=>%s<br>",$_SERVER['HTTP_HOST']); printf("server[remote_addr]グローバル 変 数 の 内 容 は=>%s<br>",$_SERVER['REMOTE_ADDR']); printf("env[home]グローバル 変 数 の 内 容 は=>%s<br>",$_ENV["HOME"]); printf("env[path]グローバル 変 数 の 内 容 は=>%s<br>",$_ENV["PATH"]); printf("env[console]グローバル 変 数 の 内 容 は=>%s<br>",$_ENV["CONSOLE"]); printf("env[term]グローバル 変 数 の 内 容 は=>%s<br>",$_ENV["TERM"]); printf("cookie グローバル 変 数 の 内 容 は=>%s",$_COOKIE["PHPSESSID"]); echo "<br><br>php の 動 作 環 境 (phpinfo)は 以 下 の 通 りです <br><br>"; phpinfo();?> </BODY> </HTML> 152

153 主 な 関 数 を 使 ったプログラミング PHP では プログラミングに 有 効 となる 以 下 のような 様 々な 関 数 が 提 供 されています これらの 関 数 を 使 用 することにより サーバプログラムを 容 易 に 作 成 することが 可 能 となります 尚 これなの 関 数 は 用 途 に 応 じて 様 々ですので 本 項 では 主 なものに 限 定 して 紹 介 することとします 1) 変 数 関 数 2) ファイル 関 数 3) システム 関 連 関 数 4) WWW/ネットワーク 関 数 5) 数 値 処 理 / 乱 数 関 数 6) マルチバイト 文 字 関 連 関 数 7) その 他 (データベース 関 数 他 ) 補 足 : 各 関 数 の 詳 細 及 び 使 い 方 に 関 しては 関 連 する 専 門 書 を 参 照 ください 20-1) 変 数 関 数 変 数 を 使 った 関 数 には 以 下 のようなものがあります 1 配 列 関 数 2 正 規 表 現 関 数 3 文 字 列 関 数 4 変 数 操 作 関 数 5 オブジェクト 関 数 1 配 列 関 数 PHP では 1 次 元 配 列 から 多 次 元 配 列 までを 扱 う 関 数 が 提 供 されています また 文 字 をキーとした 連 想 配 列 も 可 能 となっています 関 数 名 意 味 使 用 例 使 用 例 の 意 味 array 配 列 として 任 意 の 値 を 登 録 します $a=array(1,2,3); $b=array( a => AA, b => BB ); array_flip 配 列 を 逆 順 にしま $a=array_flip($aa); す array_intersect 複 数 の 配 列 から 共 $a=array_intersect($aa,$bb,$ 通 したキーを 持 つ cc,$dd,$ee); 配 列 を 抜 き 出 しま $a[0]には1が $a[1]には2が $a[2]には3が 格 納 されます $b には AA 及 び BB が 格 納 されあ $b[a]により AA が $b[b]により BB が 参 照 できます $aa 配 列 が 逆 順 となった 配 列 が$a に 格 納 されます 配 列 $aa~$ee の 中 に 含 まれる 要 素 (キー 付 きで 登 録 されているこ と)で 共 通 するキーを 持 つ 配 列 153

154 す を 抜 き 出 し $a に 格 納 します array_key_exist array_merge array_push array_pop array_shift array_sum asort rsort count ksort krsort その 他 指 定 したキーの 存 在 有 無 を 検 証 しま す 指 定 された 配 列 を 一 つの 配 列 として 返 却 します 指 定 された 要 素 を 配 列 の 最 後 に 追 加 登 録 します 配 列 の 最 後 の 要 素 を 取 り 出 し 配 列 か ら 削 除 します 配 列 の 先 頭 の 要 素 を 取 り 出 し 配 列 か ら 削 除 します 配 列 の 要 素 の 合 計 を 算 出 します 配 列 の 要 素 を 昇 順 に 並 び 替 えます 配 列 の 要 素 を 降 順 に 並 び 替 えます 配 列 に 含 まれる 要 素 数 を 返 却 します 配 列 の 要 素 をキー により 昇 順 に 並 び 替 えます 配 列 の 要 素 をキー により 降 順 に 並 び 替 えます $a=array_key_exists( key1 配 列 $aa に 中 に key1 という,$aa); キーを 持 った 配 列 が 存 在 する 場 合 は $a に True を 返 却 します $a=array_merge($aa,$bb,$cc); $aa~$cc の 配 列 を 結 合 して$a に 返 却 します 但 し 同 じキーは 上 書 きされます array_push($a, AA, BB ) 配 列 $a の 最 後 に AA と BB が 追 加 ; 登 録 されます $a=array_pop($aa); 配 列 $aa の 最 後 の 要 素 を$a に 返 却 します 尚 $aa からその 要 素 を 削 除 します $a=array_shift($aa); 配 列 $aa の 先 頭 の 要 素 を$a に 返 却 します 尚 $aa からその 要 素 を 削 除 します $a=array_sum($aa); 配 列 $aa に 登 録 されている 全 ての 要 素 を 合 計 し$a に 返 却 します $a=asort($aa); 配 列 $aa の 要 素 が 昇 順 に 並 び 替 え られ $a に True が 返 却 されます $a=arsort($aa); 配 列 $aa の 要 素 が 降 順 に 並 び 替 え られ $a に True が 返 却 されます $a=count($aa); 配 列 $aa に 登 録 されている 要 素 数 を$a に 返 却 します $a=ksort($aa); 配 列 $aa の 要 素 がキーに 従 って 昇 順 に 並 び 替 えられ $a に True が 返 却 されます $a=krsort($aa); 配 列 $aa の 要 素 がキーに 従 って 降 順 に 並 び 替 えられ $a に True が 返 却 されます array_change_key_case,array_chunk,array_count_value,array_diff,array_fill,array_ filter,array_keys,array_map,array_merge_recursive,array_multisort,array_pad,arra y_rand,aray_reduce,array_reverse,array_search,array_slice,array_splice,array_uni qure,array_unshift,array_value,array_walk,compact,current,each,end,extractin_arr ay,key,list,max,min,natsort,natcasesort,next,prev,range,reset,rsort,shuffle,sort,uasort,uksort,usort 154

155 2 正 規 表 現 関 数 PHP では 入 力 データの 妥 当 性 を 確 認 するなどの 目 的 で 正 規 表 現 を 使 った 各 種 の 関 数 が 提 供 を 提 供 し ています 主 な 関 数 は 以 下 の 通 りです 関 数 名 意 味 使 用 例 使 用 例 の 意 味 ereg 正 規 表 現 により 指 $aa= ; $a には 0~9の 数 字 が4 桁 と 定 された 文 字 列 を if (ereg( ([0-9]{4)- 0~9の 数 字 が1 桁 か2 桁 で 構 検 索 し 結 果 を True 又 は FALSE で 返 却 します ([0-9]{1,2),$aa)) { ---- 成 されていますので if 文 は 成 立 (True となります)します $bb に は , 2003, 11 が 配 列 として 格 納 されます eregi 正 規 表 現 により 指 $aa= ; 大 文 字 と 小 文 字 の 区 別 が 行 われ 定 された 文 字 列 を if (ereg( ([0-9]{4)- ない 以 外 は ereg と 同 じ 結 果 とな 検 索 し 結 果 を ([0-9]{1,2),$aa)) { ります True 又 は FALSE で 返 却 します 大 文 字 小 文 字 の 区 別 をしません ---- split 正 規 表 現 に 従 い 文 字 列 を 指 定 された 数 で 分 割 します $aa= aaa:bbb:ccc:ddd ; list($r1,$r2,$r3)=split( :, $aa,3); $r1 には aaa $r2 に は bbb $r3 には 残 りの 文 字 列 が 格 納 されます 注 意 :* や+ 等 の 予 約 コードを セパレータとして 指 定 する 場 合 はイスケープ 文 字 ( \* のよう な 指 定 )が 必 要 です その 他 erg_replace,ergi_replace,spliti,sql_replace,preg_grep,grep_match,preg_matc h_all,preg_quote,preg_replace,preg_replace_back,preg_split 3 文 字 列 関 数 PHP は 文 字 列 処 理 に 有 効 な 関 数 を 提 供 しています 主 な 関 数 は 以 下 の 通 りです 関 数 名 意 味 使 用 例 使 用 例 の 意 味 addcslashes 指 定 した 文 字 列 を $x= %abcd@123* ; $a には %\a\b\c@123* が 返 却 エスケープ 文 字 列 $a=addcslashes($x, a..z ) されます 155

156 に 変 換 して 返 却 し ます ; 通 常 エスケープ 文 字 は 受 け 側 で 無 視 されます bin2hex バイナリーデータ を16 進 文 字 列 に $x=chr(0x10).chr(0x11); $a=bin2hex($x); $a には 文 字 列 で 1011 が 返 却 されます 変 換 します chr 指 定 した ASCII コ ードの 文 字 列 を 返 $a= B.char(0x0d); $a には B と キャリッジリタ ーン(x0d) 文 字 が 返 却 されます 却 します crypt 指 定 された 文 字 列 を 暗 号 化 して 返 却 $password= yamadataro ; $pwd=crypt($password); $pwd には yamadatoro の 暗 号 化 された 結 果 が 返 却 されます します echo 指 定 された 文 字 列 をphpの 出 力 と Echo ( <html> ); PHP の 出 力 として <html> 構 文 が 出 力 されます して 出 力 します explode 文 字 列 を 指 定 され た 文 字 で 分 割 し $x= yamada taro ; $a=explode(,$x); $a には yamada と taro の 2つの 配 列 が 返 却 されます 配 列 で 返 却 しま す get_meta_tags <meta>タグにおい て 設 定 されている メタ 情 報 を 返 却 し $x=get_meta_tags( tag.inc ); $a=$x[ author ]; Tag_inc ファイル 内 の<meta>タグ により Author 名 で 定 義 されてい る 内 容 が$a に 返 却 されます ます implode 配 列 を 指 定 の 結 合 子 を 付 けて 一 $x=array( yama, kawa, umi ); $a には yama:kawa:umi が 返 却 されます つの 文 字 列 として 返 却 します $a=implode($x, : ); ltrim 文 字 列 の 先 頭 か ら \n,\r,\t,\v, $a=ltrim( \tgoodbye ); $a には Goodbye 文 字 列 が 返 却 されます \0 文 字 を 取 り 除 い た 文 字 列 を 返 却 し ます nl2br 文 字 列 に 含 まれる 改 行 の 前 に<br>タ $a=n12br( yamada\ntaro ); $a には yamada<br>\ntaro が 返 却 されます グを 挿 入 します print 文 字 列 を 出 力 しま す Print( <html> ); PHP の 出 力 として <html> タ グが 出 力 されます printf 出 力 フォーマット $a= ページ ; <html>ページ が 出 力 されま 156

157 quotemeta sprintf strcasecmp strlen strtolower str_replace substr その 他 に 従 い 出 力 しま す Printf( <html>%s,$a); す.\+*?[^]($) 文 $a=quotemete( aaa.b[c] ); $a には aaa\.b\[c\] が 返 却 字 の 前 に マーク されます を 挿 入 します 出 力 フォーマット $y=2003;$m=11;$d=14; 2003/11/14 文 字 列 が 出 力 さ に 従 い 出 力 しま sprintf( %04d/%02d/%02d, れます す $y, $m,$d); 大 文 字 小 文 字 の strcasecmp( YAMA, yama 比 較 結 果 は 等 しいと 判 断 されま 区 別 をしないで 比 ); す 大 文 字 / 小 文 字 を 区 別 する 場 較 します 合 は strcmp を 使 用 します 文 字 列 の 長 さを 返 $a=strlen( abcdefg ); $a には 7が 返 却 されます 却 します 文 字 列 を 全 て 小 文 $a= ABCSEFG ; $a には abcdefg が 返 却 され 字 に 変 換 します ます 逆 は strtoupper を 使 用 し ます 文 字 列 の 中 にある A, $a が A に 変 換 され 特 定 の 文 字 を 入 れ aaa@bbb ); た aaaabbb が 返 却 されます 替 えます 文 字 列 の 中 から $aa= ; $a には 1 が 返 却 されます 指 定 された 位 置 か $a=substr($aa,0,1); ら 指 定 された 長 さの 文 字 を 返 しま す addslashes,chop,chunk_split,count_chars,crc32,flush,get_html_translation,h tmlentities,htmlspecialchars,localeconv,md5,nl_langinfo,ord,parse_str,quot ed_printable_decode,rtrim,similar_text,sscanf,str_pad,strcmp,strcoll,strcs pn,strip_tags,stripcslashes,stripslashes,stristr,strnatcasecmp,strnatcmp,s trpos,strrchr,str_repeat,str_rot13,strrev,strrpos,strspn,strstr,strtok,str toupper,strtr, substr_count,substr_replace,trim,ucfirst,ucwords,wordwrap 4 変 数 操 作 関 数 PHP で 扱 われる 変 数 の 型 は 基 本 的 にはその 変 数 に 格 納 される 内 容 に 応 じて 自 動 的 に 決 定 されます 関 数 名 意 味 使 用 例 使 用 例 の 意 味 157

158 call_user_func call_user_func_a rray define empty gettype import_request_v ariables isset print_r ユーザ 定 義 関 数 を 呼 び 出 す 関 数 で す Functuion aaa($x){ Return $x+$x; $a=call_user_func( aaa,1 0); $a には 引 数 で 渡 された10が2 倍 (20)されて 返 却 されます ユーザ 定 義 関 数 を Functuion aaa($x,$y){ $a には 引 数 で 渡 された 10と 呼 び 出 す 関 数 で Return $x+$y; 20の 総 和 である30が 返 却 さ す 引 数 は 配 列 と れます なります $a=call_user_func( aaa,a rray(10,20)); 乗 数 を 名 前 で 定 義 define( NAME1, yamada ); Print を 実 行 すると yamada が 出 します print NAME1; 力 されます 指 定 された 変 数 の $x= ; $a には True が 返 却 されます 中 を 検 証 し True $a=empty($x); か False を 返 却 し ます 変 数 の 型 を 返 却 し $x= aaaa ; $a には String が 返 却 されます ます $a=gettype($x); 返 却 値 として 以 下 があります boolean,integer,resource,doub le,string,array,object,null,u nknowntype ユ ー ザ 入 力 GP は Get/Post 変 数 の 取 得 を ( POST/GET/Cooki Import_request_variables( 意 味 します es 変 数 )をグロー GP, MY_ ); Print 文 では arg0 で 渡 された1 バル 変 数 にインポ Print $MY_arg0; 00が 出 力 されます ートします 変 数 が 定 義 されて $a= test ; 1 回 目 の print 文 では OK 2 いるか 否 かを 検 証 print 回 目 の print 文 では NG となり します isset($a)? OK : NG ; ます unset ($a); print isset($a)? OK : NG ; 変 数 の 登 録 されて $a=array( aa, bb ); Print_r の 出 力 は 以 下 となりま いる 内 容 に 関 する print_r($a); す 詳 細 情 報 を 出 力 し Array([0]=>aa [1]=>bb) ます defined,pack,serialize,settype,uniqid,unpack,unserialize,unset.var_dump,va 158

159 r_export, 5 オブジェクトクラス 関 数 オブジェクト クラスを 扱 う 関 数 が 提 供 されています 関 数 名 意 味 使 用 例 使 用 例 の 意 味 class_exists 指 定 されたクラス の 存 在 を 検 証 しま す $a=calss_exists( aaaa ); aaaa というクラスが 定 義 さ れている 場 合 は$a に True が 返 却 されます その 他 get_class,get_class_vars,get_class_method,get_decleared_classes,get_object _vars,get_parent_class,is_a,is_subclass_of,method_exists, 20-2) ファイル 関 数 PHP では 一 般 的 なプログラム 同 様 に サーバ 上 の 外 部 記 憶 装 置 上 に 任 意 のファイルを 作 成 することがで きます 主 なファイル 処 理 関 連 の 関 数 として 以 下 があります 1 ファイルシステム 関 数 2 ディレクトリ 関 数 3 イメージ 関 数 4 圧 縮 関 数 5 PDF 関 数 1 ファイルシステム 関 数 ファイルシステム 関 数 として PHP プログラムから サーバ 側 の 外 部 記 憶 装 置 上 に 任 意 のファイルを 作 成 する 為 のものが 多 々 提 供 されています 以 下 に ファイルを 作 成 し データの 読 み 書 きを 行 う 基 本 的 なプログラミングの 例 を 紹 介 します 関 数 名 意 味 使 用 例 使 用 例 の 意 味 diskfreespace 指 定 したディレク トリ 上 の 使 用 可 能 $a=diskfreespace( /var/tmp ); $a に /var/tmp ディレクトリ の 空 きバイト 数 が 返 却 されます なバイト 数 を 返 却 します fclose ファイルをクロー ズします $fp=fopen( test.txt, r ); test.txt ファイルのクロー ズ 処 理 が 行 われます $a には 実 159

160 $a=fclose($fp); 行 結 果 が 返 却 されます fflush キャッシュに 書 き $fp=fopen( test.txt, w フラッシュ 処 理 (キャッシュの 排 込 まれているもの ); 出 処 理 )を 行 います を 外 部 記 憶 装 置 に.. 出 力 します fflush($fp) fgetc ファイルから 一 文 $fp=fopen( test.txt, r test.txt ファイルから1 文 字 を 字 を 読 み 込 みま ); 読 み 込 みます す $a=fgetc($fp); fgets ファイルから1テ $fp=fopen( test.txt, r test.txt ファイルから1テキス キスト 分 ( 改 行 文 ); トを 読 み 込 み $a に 返 却 します 字 又 は EOF 検 出 ま $a=fgets($fp); で)を 読 み 込 みま す file_exists ファイルが 存 在 す $a=file_exist( /var/tmp/te /var/tmp/test.txt ファイル るかどうかを 検 証 st.txt ); が 存 在 する 場 合 は $a に True が します 返 却 されます flock ファイルのロッ $fp=fopen( test.txt, r Test.txt ファイルを 共 有 ロック ク 及 び 解 除 を 行 ); します います $a=flock($fp, 1 ); LOCK_SH 又 は1: 共 有 ロック LOCK_EX 又 は2: 排 他 的 ロック LOCK_UN 又 は3:ロック 解 除 fopen ファイルをオープ $a=fopen( test.txt, w Test.txt ファイルを 書 き 込 みモ ンします ); ードでオープンします w : 書 き 込 みモード r : 読 み 込 みモード R+ : 読 み 書 きモード w+ : 読 み 書 きモード a : 追 記 モード a+ : 読 み 込 み& 追 記 モード fwrite ファイルへの 書 き $fp=fopen( test.txt, w Test.txt ファイルに 1111 を 込 みを 行 います ); 書 き 込 みます fwrite($fp, 1111 ); stat ファイルの 情 報 を $a=stat( test.txt ); Test.txt ファイルの 情 報 ( 下 記 ) 返 却 します print($a[ size ]); を 返 却 します Size,ino,mode,nlink,uid,gid,r dev,size,atime,mtime,ctime,bl 160

161 その 他 ksize,blocks basename,chmod,chown,clearstatcache,copy,dirname,feof,fgetcsv,fgetss,file, fpassthru,fread,fseek,fstat,ftell,ftruncate,set_file_buffer,link,mkdir,pcl ose,popen,readfile,readlink,rename,rewind,rmdir,lstat,symlink,tempnam,tmpf ile,touch,umask,unlink file01.php プログラム <HTML> <BODY> <?php printf("/var/tmp に test.txt ファイルを 作 成 し データを 書 き 込 みます <br>"); $a=chdir("/var/tmp"); $fp=fopen("test.txt","w"); fwrite($fp,"11111\n"); print("11111 を 書 き 込 みました <br>"); fwrite($fp,"22222\n"); print("22222 を 書 き 込 みました <br>"); fclose($fp); print("/var/tmp にある test.txt ファイルの 内 容 を 読 み 込 みます <br>"); $fp=fopen("test.txt","r"); $a=fgets($fp,50); printf("%s を 読 み 込 みました <br>",$a); $a=fgets($fp,50); printf("%s を 読 み 込 みました <br>",$a); fclose($fp);?> </BODY> </HTML> 2 ディレクトリ 関 数 ディレクトリ 関 数 として サーバ 上 のディレクトリを 扱 う 関 数 が 提 供 されています 関 数 名 意 味 使 用 例 使 用 例 の 意 味 chdir カレントディレク トリの 設 定 を 行 い ます Chdir( /var/tmp ); カレントディレクトリ が /var/tmp に 切 り 替 わりま す opendir ディレクトリをオ ープンします $d=opendir( /var ); /var ディレクトリをオープ ンします rewinddir ディレクトリの 先 $d=opendir( /var ); ファイル 名 の 呼 び 出 しが 先 頭 か 161

162 頭 に 呼 び 出 し 位 置 rewinddir($d); らとなるように 設 定 されます を 設 定 します readdir オープンされてデ $d=opendir( /var ); ディレクトリの 先 頭 に 登 録 され ィレクトリに 存 在 rewinddir($d); ているファイル 名 が$f に 返 却 さ するファイル 名 を $f=readdir($d); れます Readdir を 連 続 すること 読 み 込 みます により 後 続 のファイル 名 を 読 み 出 すことができます closedir ディレクトリをク $d=opendir( /var ); /var ディレクトリをクロー ローズします closedir($d); ズします その 他 chroot,dir < 練 習 課 題 > URL によりセッション 情 報 が 渡 された 場 合 そのデータを 規 定 のファイルに 登 録 するプログラムを 作 成 してください (プログラム 名 :practice.php) 尚 URL におけるセッション 情 報 は 以 下 のように 渡 します また セッション 情 報 が 省 略 された 場 合 は そのファイルの 内 容 を 全 て 表 示 してください.php?in=xxxxxxxxx 書 き 込 みを 行 う ディレクトリ 名 及 びファイル 名 は 以 下 とします ディレクトリ 名 :/var/www/html ファイル 名 :practice.txt 3 イメージ 関 数 getimagesize imagecreate 関 数 名 意 味 使 用 例 使 用 例 の 意 味 imagecolorallocate イメージのサ イズ 等 に 関 す る 情 報 を 配 列 で 返 却 しま す 任 意 の 幅 と 高 さを 持 つ 空 の イメージを 生 成 します 指 定 された RGB に 応 じた $x= test.jpg ; $a=getimagesize($x); \im=imagecreate(200,300); $red=imagecolorallocate($im,2 55,0,0); $green=imagecolorallocate($im 以 下 が 返 却 されます $a[0]:イメージのピクセル 幅 $a[1]:イメージのピクセル 高 $a[2]:イメージの 種 類 $a[3]:htmlimg のタグ $a[bits]:ビット/ピクセル $a[channels]:チャネル 数 幅 200ピクセル 高 さ30 0ピクセルの 空 イメージを 生 成 し $im にイメージ ID が 返 却 されます $red には 赤 に 対 応 するカラ ーID が $green には 緑 に 対 す 162

163 imagerectangle imagefilledpolygon imagearc imagefilltoborder imagefill imagepng その 他 RGB カラーID を 返 却 しま す 予 め 生 成 され たイメージ 上 に 矩 形 イメー ジを 描 画 しま す 多 角 形 イメー ジを 指 定 され たカラーで 描 画 します 指 定 された 大 きさと 色 で 楕 円 イメージを 描 画 します イメージの 境 界 線 を 描 画 し ます 指 定 されたイ メージ 全 体 を 指 定 されたカ ラーで 塗 り 潰 します イメージをフ ァイル 又 はブ ラウザ 画 面 に 出 力 します,0,255,0); $blue=imagecolorallocate($im, 0,0,255); imagerectangle($im,30,180,70, 150,$red); imagefilledpolygon($im,array( 10,150,90,150,50,50),3,$green ); imagearc($im,50,50,30,30,0,36 0,$blue); imagefilltoborder($im,50,40,$ blue,$blue); imagefill($im,50,170,$red); imagepng($im,"test.pnd"); るカラーID が $blue には 青 に 対 応 するカラーID が 返 却 されます $im に 設 定 されているイメー ジ ID 上 に 左 上 座 標 (30,180) 右 下 座 標 が(70,150) $red で 定 義 された 色 が 適 用 された 矩 形 が 描 画 されます 多 角 形 の 各 点 が それぞれ (10,150),(90,150),(50,50) の3 点 を 持 ち $green で 定 義 されたカラーで 多 角 形 イメー ジが 描 画 されます 座 標 (50,50)を 中 心 に 楕 円 の 幅 が30 高 さが30 始 点 角 が0 度 終 点 角 が360 度 で $blue で 定 義 されたカラ ーを 使 って 楕 円 イメージが 描 画 されます 座 標 (50,40)を 含 むイメージ を$blue で 定 義 されたカラー で 境 界 線 まで 塗 り 潰 します 座 標 (50,170)を 含 むイメー ジを$red で 指 定 されたカラ ーで 塗 り 潰 します $im に 設 定 されたイメージ ID 上 のイメージを test.pnd と いうファイル 名 で 保 存 しま す exif_read_data,exif_thumbnail,imagechar,imagecharup,imagecolordealloca te,imagecolorat,imagecolorclosest,imagecolorexact,imagecolorset,imagec olorsforindex,imagecolorstotal,imagecolortransparent,imagecopy,imageco pymerge,imagecopymergegray,imagecopyresized,imagecreatefromgd2part,ima gecreatefrompng,imagecreatefromstring,imagedestroy,imagefill,imagefont height,imagefontwidth,imageftbbox,imagefttext,imagegammacorrect,imagei 163

164 nterlace,imageline,imageloadfont,imagepalettecopy,imagepolygon,imageps bbox,imagesencodefont,imagepsextendfont,imagepsfreefont,imagepsloadfon timagepsslantfont,imagepstext,imagesetpixel,imagesetstypeimagesettitle imagestring,imagestringup,imagesx,imagesy,imagettfbboximagettftextimag etypes jpeg や pnd 等 で 代 表 される 画 像 ファイルの 情 報 を 扱 う 関 数 が 提 供 されています Image01.php プログラム <HTML> <BODY> <?php $im=imagecreate(500,500); $w=imagecolorallocate($im,255,255,255); $r=imagecolorallocate($im,255,0,0); $g=imagecolorallocate($im,0,255,0); $b=imagecolorallocate($im,0,0,255); imagefilledpolygon($im,array(100,100,200,100,150,200),3,$g); imagefilledpolygon($im,array(300,100,400,100,350,200),3,$g); imagerectangle($im,240,230,260,320,$b); imagefilltoborder($im,250,250,$b,$b); imagearc($im,250,400,150,50,0,360,$b); imagefilltoborder($im,250,400,$r,$r); imagepng($im,"/usr/tmp/test.png"); imagepng($im);?> </BODY> </HTML> image02.php プログラム : 作 成 済 みのイメージを 加 工 するプログラムです ( 関 数 説 明 は 省 略 します) <HTML> 164

165 <BODY> <?php $im=imagecreatefrompng("/usr/tmp/test.png"); $color=imagecolorat($im,150,150); imagecolorset($im,$color,100,100,100); $color=imagecolorat($im,350,150); imagecolorset($im,$color,200,200,200); $color=imagecolorat($im,250,250); imagecolorset($im,$color,50,50,255); $color=imagecolorat($im,250,400); imagecolorset($im,$color,255,50,50); imagepng($im);?> </BODY> </HTML> < 練 習 課 題 > Image01.php を 改 良 し 顔 の 輪 郭 が 表 示 されるようにしてください 165

166 4 圧 縮 関 数 文 字 列 を gzip 形 式 で 圧 縮 / 展 開 する 関 数 が 提 供 されています 関 数 名 意 味 使 用 例 使 用 例 の 意 味 gzencode gzfile gzopen 文 字 列 を gzip 圧 縮 します gzip ファイルを 展 開 し 返 却 します gzip ファイルをオ ープンします $gzdata=gzencode($indata,9,fo RCE_GZIP); $otdata=gzfile("test.txt.gz") ; $fp=gzopen( test.txt.gz, w ); 圧 縮 レベルを9 圧 縮 方 法 を FORCE_GZIP で 圧 縮 が 行 われ 結 果 は $gzdata に 返 却 されます test.txt.gz ファイルを 展 開 し 配 列 形 式 ( 行 毎 )で$otdata に 返 却 します test.txt.gz ファイルをオープン します gzwrite gzread gzclose その 他 文 字 列 を gzip 形 式 で 圧 縮 しファイル に 書 き 込 みます $fp=gzopen( test.txt.gz, w ); $gzwrite($fp, \n ); gzclose($fp); test.txt.gz ファイル に を 圧 縮 して 書 き 込 みます Gzip ファイルを 読 $fp=gzopen( test.txt.gz, w test.txt.gz ファイルを 読 み 込 み 込 み 展 開 して 返 ); み 展 開 した 結 果 を$otdata に 返 却 します $otdata=$gzread($fp, r ); 却 します gzclose($fp); gzip ファイルをク $fp=gzopen( test.txt.gz, w test.txt.gz ファイルをクローズ ローズします ); します gzclose($fp); gzcompress,gzdeflate,gzeof,gzgetc,gzgets,gzgetss,gzinflate,gzpassthru,gzrewind,gzseek,gztell,gzuncompress,readgzfile gzip01.php プログラム <HTML> <BODY> <?php $indata=str_repeat("gzip 圧 縮 / 展 開 用 テストデータです \n",1000); $gzdata=gzencode($indata,9,force_gzip); $fp=fopen("test.txt.gz","w"); fwrite($fp,$gzdata); fclose($fp); $otdata=gzfile("test.txt.gz"); 166

167 print ("1 行 目 の $otdata[0] <br>"); print ("2 行 目 の $otdata[1] <br>"); print ("3 行 目 の $otdata[2] <br>"); print ("1000 行 目 の $otdata[999] <br>");?> </BODY> </HTML> 167

168 5 PDF 関 数 文 書 改 ざんを 防 止 する 目 的 で 作 成 された 標 準 電 子 文 書 形 式 である PDF(PortableDocumentFormat) 形 式 を 動 的 に 生 成 する 等 の 関 数 が 提 供 されています 但 し この 関 数 はライセンスが 必 要 です 本 項 では PDF 関 数 にはどのようなものがあり どのように 使 われるのかを 紹 介 するだけとします pdf_new 関 数 名 意 味 使 用 例 使 用 例 の 意 味 pdf_open_file 新 規 に PDF オブ ジェクトを 作 成 します 新 規 に PDF ファ イルをオープン します pdf_begin_page 新 規 に PDF ペー pdf_findfont pdf_setfont ジ を 開 始 し ま す フォントを 検 索 し その ID を 返 却 します カレントのフォ ントを 設 定 しま す $pdf=pdf_new(); pdf_open_file($pdf,"test.pdf "); pdf_begin_page($pdf,595,842) ; $font=pdf_findfont($pdf,"tim es-roman","host"); $font=pdf_findfont($pdf,"tim es-roman","host"); pdf_setfont($pdf,$font,30); $pdf に PDF オブジェクトのリ ソースが 返 却 されます test.pdf ファイルが 作 成 されます 高 さ595 幅 842のページ が 作 成 されます ( 単 位 は 1/72 インチです) フォント 名 が Times=Roman 文 字 エンコードが host で 検 索 され その ID が 返 却 され ます Pdf_findfont で 返 却 されたフ ォントをサイズ30で 設 定 し ます pdf_show_xy 指 定 された 座 標 に 文 字 列 を 出 力 します pdf_show_xy($pdf,"this text is created by pdf_xxx Program.",100,800); 座 標 (100,800)に This text. の 文 字 列 が 出 力 されま す pdf_set_text_pos 描 画 開 始 位 置 を 設 定 します pdf_set_text_pos($pdf,200,80 0); テキストの 描 画 開 始 位 置 が (200,800)に 設 定 されます pdf_show pdf_end_page pdf_close その 他 現 在 の 位 置 に 文 字 列 を 出 力 しま す ページを 終 了 し ます PDF ドキュメン トを 閉 じます pdf_show($pdf,"このテキスト はpdf 関 数 により 作 成 しまし た "); pdf_end_page($pdf); pdf_close($pdf); "このテキストはpdf 関 数 により 作 成 しました "が 現 在 の 位 置 に 出 力 されます ページが 終 了 されます PDF ドキュメントが 閉 じられま す pdf_add_bookmark,pdf_add_launchlink,pdf_add_locallink,pdf_add_note,pdf_a 168

169 dd_pdflink,pdf_add_thumbnail,pdf_add_weblink,pdf_arc,pdf_arcn,pdf_attach _file,pdf_begin_pattern,pdf_begin_template,pdf_circle,pdf_clip,pdf_close _image,pdf_close_pdi,pdf_close_pdi_page,pdf_closepath,pdf_closepath_fill _stroke,pdf_closepath_stroke,pdf_concat,pdf_continue_text,pdf_curveto,pd f_dalete,pdf_end_pattern,pdf_end_template,pdf_endpath,pdf_fill,pdf_fill_ stroke,pdf_get_buffer,pdf_get_majorversion,pdf_get_minorversion,pdf_get_ parameter,pdf_get_pdi_parameter,pdf_get_pdi_value,pdf_get_value,pdf_init graphics,pdf_lineto,pdf_makespotcolor,pdf_moveto,pdf_open_ccitt,pdf_open _image,pdf_open_image_file,pdf_open_memory_image,pdf_open_pdi,pdf_open_p di_page,pdf_place_image,pdf_place_pdi_page,pdf_rect,pdf_restore,pdf_rota te,pdf_save,pdf_scale,pdf_set_border_color,pdf_set_border_dash,pdf_set_b order_style,pdf_set_info,pdf_set_parameter,pdf_set_value,pdf_setcolor,pd f_setmatrix,pdf_show_boxed,pdf_skew,pdf_stringwidth,pdf_stroke,pdf_trans late pdf01.php プログラム <HTML> <BODY> <?php $pdf=pdf_new(); pdf_open_file($pdf,"test.pdf"); pdf_begin_page($pdf,595,842); $font=pdf_findfont($pdf,"times-roman","host"); $font_ja=pdf_findfont($pdf,"heiseimin-w3","euc-h",0); pdf_setfont($pdf,$font,30); pdf_show_xy($pdf,"this text is created by pdf_xxx Program.",100,800); pdf_setfont($pdf,$font_ja,30); pdf_set_text_pos($pdf,200,800); pdf_show($pdf,"このテキストはpdf 関 数 により 作 成 しました "); pdf_end_page($pdf); pdf_close($pdf);?> </BODY> </HTML> 169

170 20-3) システム 関 連 関 数 PHP プログラミングにおいて セキュリティーを 考 慮 する 場 合 或 いは 動 作 を 制 御 する 場 合 に 友 好 と なる 関 数 が 多 々 提 供 されています 関 数 名 意 味 使 用 例 使 用 例 の 意 味 escapeshellarg escapeshellcmd system sleep getrusage 入 力 データの 前 後 に コードを 付 けて 返 却 します シェルコマンドと して 実 行 する 場 合 に 問 題 となるコー ドをイスケープし ます 指 定 されたコマン ドを 実 行 し 結 果 を 返 却 します. 指 定 された 秒 数 実 行 を 停 止 します システムリソース 情 報 を 配 列 で 返 却 します $a=escapeshellarg($_post['na me']); $a=escapeshellcmd($_post['na me']); system("echo ".$a); sleep(1); $a=getrusage(); print $a['ru_utime.tv_usec']; $_POST['name']で 得 られる 文 字 列 は 1つの 文 字 列 として 扱 わ れます (コマンドが 含 まれてい ても 無 視 されます) $_POST['name']で 得 られる 文 字 列 は 1つの 文 字 列 として 扱 わ れます (コマンドが 含 まれてい ても 無 視 されます) echo コマンドにより $a 変 数 に 定 義 されている 内 容 が 表 示 され ます 1 秒 間 実 行 が 停 止 されます システムリソース 情 報 から この プログラムの 消 費 時 間 をマイク ロ 秒 単 位 で 取 り 出 せます phpinfo PHP に 関 する 情 報 phpinfo(info_variables); 環 境 変 数 に 関 する PHP 情 報 が 出 力 を 出 力 します されます 他 に 以 下 があります INFO_GENERAL,INFO_CREDITS,INF O_CONFIGULATION,INFO_MODULES, INFO_ENVIRONMENT,INFO_LICENSE,INFO_ALL phpversion PHP の 現 在 のバー $a=phpversion(); 現 在 実 行 中 の PHP のバージョンが ジョンを 返 却 しま $a に 返 却 されます す Error_log エラーメッセージ error_log( error01,0); error01 は php.ini で 定 義 され が 指 定 された 相 手 error_log( error02,1, htt た 場 所 に error02 は 指 定 され 先 に 出 力 さ れ ま p:// ); たメールアドレスに erroe03 は す error_log( error03,3, err 指 定 されたファイルに 出 力 され _log ); ます 170

171 checkdate date getdate localtime mktime time その 他 設 定 された 日 時 の 正 当 性 を 検 証 しま Print checkdate(29,2,2003)? OK 2003 年 がうるう 年 であれば OK が 返 却 されます す : NG ; 日 付 け 時 間 等 を $a=array(,,,, 2003 年 1 月 1 日 の 曜 日 が 表 変 換 して 返 却 しま,, ); 示 されます w は 曜 日 の 取 り す $w=date( w,mktime(0,0,0,1, 出 しを 示 しますがそれ 以 外 にも 1,2003)); 以 下 があります ( 詳 細 は 省 略 ) print ( 2003/1/1 は {$a[$w] a,a,d,d,f,h,g,g,i,i z,z 曜 日 です 日 付 け 情 報 を 取 り $t=getdate(); 日 付 け 情 報 が 配 列 で 出 力 されま 出 します print_r($t); す 配 列 名 には 以 下 があります seconds,minutes,hours,mday,wd ay,mon,year,yday,weekday,mont h ローカルな 時 刻 を $t=localtime(); ローカルな 時 刻 情 報 が 配 列 で 出 配 列 で 返 却 し ま print_r($t); 力 されます 配 列 名 は 以 下 の 通 り す です Tm_sec,tm_min,tm_hour,tm_mday,tm_mon,tm_year,tm_wday,tm_yd ay,tm_isdst 指 定 された 時 間 を $a=mktime(12,10,30,14,11, 年 11 月 14 日 12 時 10 Unix 時 間 に 変 換 し ); 分 30 秒 を Unix 時 間 で 返 却 しま 返 却 します す 現 在 の 時 間 を Unix $a=time(); 現 在 の 時 間 が Unix 時 間 として$a 時 間 に 変 換 し 返 却 に 返 却 されます します exec,passthru,shell_exec,connection_aborted,connection_status,eval,exit,igno re_user_abort,usleep,dl,extension_loaded,get_cfg_var,getenv,highlight_file,h ighlight_string,putenv,version_compare,func_get_arg,func_get_args,func_num_a rgs,function_exists,get_defined_functions,register_shutdown_function,registe r_tick_function,assert,assert_options,error_reporting,restore_error_handler, set_error_handler,torigger_error,gettimeofday,gmdate,gmmktime,gmstrftime,mac rotime,strftime,strtotime 1 実 行 関 数 エラー 処 理 関 数 時 刻 関 数 など system01.php プログラム 171

172 <HTML> <BODY> <?php print ("このシステムの PHP は "); $a=phpversion(); printf("%s です ",$a); echo "<br><br>"; printf("このプログラムの 実 行 時 間 は,"); $a=getrusage(); print $a['ru_utime.tv_usec']; printf("でした "); echo "<br><br>"; sleep(1); printf("phpinfo(info_variables)の 実 行 結 果 です <br>"); phpinfo(info_variables);?> </BODY> </HTML> 172

173 2 セッション 関 数 セッション 管 理 とは 異 なるページ 間 で 任 意 の 情 報 をやり 取 りする 事 により お 互 いのページが 関 連 性 を 持 って 実 行 表 示 されることを 可 能 とするものです この 情 報 は セッション ID により 管 理 され Cookie ファイル URL パラメータ HTML のフォームにより 保 持 されます また このセッション 情 報 は $_SESSION グローバル 変 数 により 設 定 取 得 できます 注 意 : 関 数 名 は 大 文 字 でも 小 文 字 でも 正 しく 処 理 されますが $_SESSION などの 変 数 は 大 文 字 でなければ 正 し く 認 識 されません 関 数 名 意 味 使 用 例 使 用 例 の 意 味 session_start セッションデー タを 作 成 しま す $a=session_start(); セッション 管 理 が 可 能 となると$a に TRUE が 返 却 されます session_is_registered セッション 情 報 の 有 無 を 検 証 し ます If (session_is_registered('a')) echo "あり"; else echo "なし"; セッション a があ れば あり が 表 示 さ れます session_destroy session_register session_unregister その 他 セッションに 登 録 されたデータ を 全 削 除 しま す session_destroy(); 現 在 登 録 されている 全 てのセッション 情 報 が 破 棄 されます セッション 変 数 session_register('a','b'); セッション 変 数 とし を 登 録 します て a, b が 登 録 されます セッション 変 数 session_unregister('a'); セッション 変 数 a を 削 除 します が 削 除 されます session_decode,session_encode,session_get_cookie_param,session_id,ses sion_set_save_handler,session_unset,session_write_close sessfunc01.php プログラム <?php session_start(); if (!session_is_registered('count')){ $_SESSION['count']=0;?> <HTML> <BODY> 173

174 <?php if ($_SESSION['count']>10){ session_destroy(); printf("セッション 情 報 を 削 除 しました"); else{?> </BODY> </HTML> $a=$_session['count']++; printf ("セッション 情 報 は %s です ",$a); $a=$_session['count']++; printf ("セッション 情 報 は %s です ",$a); $a=$_session['count']++; printf ("セッション 情 報 は %s です ",$a); sessfunc02.php プログラム <?php session_start(); session_register('aaaa','bbbb'); $_SESSION['aaaa']=1; $_SESSION['bbbb']=2; $_SESSION['cccc']=3;?> <HTML> <BODY> <?php if (session_is_registered('aaaa')) printf ("セッション aaaa は 存 在 します->%s<br>",$_SESSION['aaaa']); else echo "セッション aaaa は 存 在 しません <br>"; if (session_is_registered('bbbb')) printf ("セッション bbbb は 存 在 します->%s<br>",$_SESSION['bbbb']); else echo "セッション bbbb は 存 在 しません <br>"; if (session_is_registered('cccc')) printf ("セッション cccc は 存 在 します->%s<br>",$_SESSION['cccc']); else echo "セッション cccc は 存 在 しません <br>"; session_unregister('aaaa'); print "aaaa のみ 解 放 しました <br>"; if (session_is_registered('aaaa')) printf ("セッション aaaa は 存 在 します->%s<br>",$_SESSION['aaaa']); else echo "セッション aaaa は 存 在 しません <br>"; if (session_is_registered('bbbb')) printf ("セッション bbbb は 存 在 します->%s<br>",$_SESSION['bbbb']); else echo "セッション bbbb は 存 在 しません <br>"; if (session_is_registered('cccc')) printf ("セッション cccc は 存 在 します->%s<br>",$_SESSION['cccc']); 174

175 else echo "セッション cccc は 存 在 しません <br>"; session_destroy(); print "aaaa のみ 解 放 しました <br>"; if (session_is_registered('aaaa')) printf ("セッション aaaa は 存 在 します->%s<br>",$_SESSION['aaaa']); else echo "セッション aaaa は 存 在 しません <br>"; if (session_is_registered('bbbb')) printf ("セッション bbbb は 存 在 します->%s<br>",$_SESSION['bbbb']); else echo "セッション bbbb は 存 在 しません <br>"; if (session_is_registered('cccc')) printf ("セッション cccc は 存 在 します->%s<br>",$_SESSION['cccc']); else echo "セッション cccc は 存 在 しません <br>";?> </BODY> </HTML> < 練 習 課 題 > URL で 呼 ばれる 毎 に 以 下 のようにカウントを1ずつ 更 新 して 表 示 するプログラムを 作 成 してください (プログラム 名 :psessfunc.php) 貴 方 の 訪 問 回 数 は X 回 です 補 足 : x の 部 分 に 回 数 を 表 示 します 20-4) ネットワーク 関 数 PHP にはネットワーク 操 作 に 関 連 する 関 数 が 多 々あります 関 数 名 意 味 使 用 例 使 用 例 の 意 味 base64_encode base64_decode mail 文 字 列 を BASE64 でエン コードします BASE64 でエンコードさ れたコードをデコード して 返 却 します メールを 相 手 に 対 して 送 ります $a=" 山 田 孝 司 "; $a=base64_encode($a); $a=base64_encode($a); $a=base64_decode($a); mail("yh5m-yi@asahi-net.or.jp","subject","message"); $a にエンコードした 結 果 が 返 却 されます 入 力 文 字 列 を6ビット 毎 に 分 割 し それらを ASCII 文 字 に 変 換 して 返 却 しま す $a にデコードした 結 果 が 返 却 されます Yh5m-yi@asahi-net.or.jp に 対 して subject と いうサブジェクト 175

176 gethostbyaddr gethostbyname setcookie その 他 と message という 内 容 のメールを 発 信 します 指 定 された IP アドレス $a=gethostbyaddr(" "); のアドレスを 持 を 持 つホスト 名 を 返 却 つホスト 名 が$a に 返 却 さ します れます 指 定 されたホスト 名 を $a=gethostbyname("localhost"); Localhost というホスト 名 持 つホストの IP アドレ の IP アドレスが$a に 返 却 スを 返 却 します されます クッキー 情 報 を 設 定 し setcookie("cook","abcdef",time cook という 変 数 名 ます ()+600); で abcdef ちう 内 容 の クッキー 情 報 が10 分 間 の 有 効 期 限 付 きでクライ アント 側 のハードディス ク 上 に 格 納 されます get_browser,header,headers_send,setcookie,parse_url,urldecode,urlencode,rawu rldecode,rawurlencode,ezmlm_hash,checkdnsrr,closelog,fsockopen,gethostbyname 1,getmxrr,openlog,pfsockopen,socket_get_status,socket_set_blocking,socket_se t_timeout,syslog,ob_clean,ob_end_clean,ob_end_flush,ob_flush,ob_get_contents,ob_get_length,ob_get_level,ob_get_status,ob_implicit_flush,ob_start network01.php プログラム <?php setcookie("cook1","1111",time()+600); setcookie("cook2","2222",time()+600);?> <HTML> <BODY> <?php print "Setcookie 関 数 で 登 録 しました <br>"; printf("cook1 の 内 容 :%s",$_cookie['cook1']); echo "<br>"; printf("cook2 の 内 容 :%s",$_cookie['cook2']);?> </BODY> </HTML> 補 足 : setcookie 関 数 でクッキー 情 報 を 登 録 直 後 に $_cookie 関 数 を 使 って 読 み 込 んでも 登 録 され た 情 報 が 読 まれないことが 分 かります これは クッキー 情 報 は url による 要 求 時 に クライア ントから 一 回 送 られるもので 動 的 に 読 まれるものでは 無 いからです network02.php プログラム 176

177 <HTML> <BODY> <?php print "Setcookie 関 数 で 登 録 された 内 容 を 読 み 込 みました <br>"; printf("cook1 の 内 容 :%s",$_cookie['cook1']); echo "<br>"; printf("cook2 の 内 容 :%s",$_cookie['cook2']);?> </BODY> </HTML> < 練 習 課 題 > クッキー 情 報 が 登 録 されている 場 合 と されていない 場 合 で 表 示 するメッセージを 変 えるプロ グラムを 作 成 してください クッキー 情 報 が 登 録 されているか 否 かの 判 断 は isset 関 数 を 使 っ て 行 います クッキー 情 報 名 :yamada 未 登 録 の 場 合 のメッセージ:はじめまして! 登 録 時 のメッセージ :yamada さん こんにちは! network03.php プログラム <HTML> <BODY> <?php $a=" 山 田 孝 司 "; printf ("エンコード 前 は=>%s でした <br>",$a); $a=base64_encode($a); printf ("Base64 エンコード 後 は=>%s でした <br>",$a); $a=base64_decode($a); printf ("Base64 デコード 後 は=>%s でした <br>",$a); print ("<br>"); print (" のホスト 名 は "); print gethostbyaddr(" "); print ("です <br>"); print ("localhost の IP アドレスは "); print gethostbyname("localhost"); print ("です <br>"); </BODY> </HTML> 177

178 < 練 習 課 題 > 自 分 の 使 用 しているクライアントの IP アドレスから gethostbyaddr を 使 って ホスト 名 を 取 り 出 し 表 示 してください また gethostbyname 関 数 を 使 って 自 分 のホスト 名 から IP アドレ スを 取 り 出 し 表 示 してください 20-5) 数 値 処 理 / 乱 数 関 数 PHP は C 言 語 などで 提 供 されている 各 種 の 数 学 関 数 や 独 自 の 関 数 を 使 用 することができます 関 数 名 意 味 使 用 例 使 用 例 の 意 味 abs 絶 対 値 を 返 却 します $a=abs(-100); -100の 絶 対 値 である10 sin log sqrt bcpow dechex hexdec Number_format その 他 正 弦 が 求 められ 返 却 さ れます 自 然 対 数 が 求 められ 返 却 されます 平 方 根 が 求 められ 返 却 されます べき 乗 計 算 が 行 われ そ の 結 果 が 返 却 されます 10 進 数 を16 進 数 に 変 換 し 返 却 します 16 進 数 を10 進 数 に 変 換 し 返 却 します 数 値 を1000 単 位 で 区 切 り コードを 付 けて 返 却 します (ディフォ ルトはコンマです) $a=sin(45*3.14/180); $a=log(3); $a=sqrt(5); $a=bcpow(2,5); $a=dechex(100); $a=hexdec(64); $a=number_format( ,4); 0が$a に 返 却 されます 45の 正 弦 値 が$a に 返 却 され ます 設 定 する 値 は ラジアンです 3の 自 然 対 数 が$a に 返 却 され ます 5の 平 行 根 が$a に 返 却 されま す 2の5 乗 の 計 算 結 果 が$a に 返 却 されます 100の16 進 数 が$a に 返 却 されます 16 進 数 の64が 10 進 数 に 変 換 され $a に 返 却 されます の 数 値 に 対 し 1000 桁 単 位 で が 付 けられ 小 数 点 4 桁 まで 有 効 とした 数 値 が$a に 返 却 されます acos,acosh,asin,asinh,atan,atan2,atanh,ceil,cos,cosh,deg2rad,exp,expm1,floor, hypot,log10,log1p,pi,pow,rad2deg,sinh,tan,tanh,bcadd,bccomp,bcdiv,bcmod,bcmul,bcscale,bcsqrt,bcsub,base_convert,bindec,decbin,decoct,octdec,is_finite,is_i nfinite,is_nan,max,min,round,getrandmax,rand,srand,mt_getrandmax,mt_rand,mt_s rand 注 意 : 3 角 関 数 はラジアン( 円 の 半 径 の 長 さに 等 しい 弧 に 対 する 角 度 を1rad と 定 義 します)により 指 定 します 通 常 の 角 度 からラジアンを 求 める 式 は 以 下 の 通 りです ラジアン=( 求 める 角 度 *3.14)/

179 math01.php プログラム <HTML> <BODY> <?php $a=abs(-100); printf(" 絶 対 値 を 求 める abs(-100)は %s です <br>",$a); $a=sin(45*3.14/180); printf(" 正 弦 を 求 める sin(45)は %s です <br>",$a); $a=log(3); printf(" 自 然 対 数 を 求 める log(3)は %s です <br>",$a); $a=sqrt(5); printf(" 平 方 根 を 求 める sqrt(5)は %s です <br>",$a); echo "<br>"; $a=bcpow(2,5); printf("べき 乗 を 求 める bcpow(2,5)は %s です <br>",$a); $a=dechex(100); printf("10 進 数 を16 進 数 に 変 換 する dechex(100)は %s です <br>",$a); $a=hexdec(64); printf("16 進 数 を10 進 数 に 変 換 する hexdec(64)は %s です <br>",$a); echo "<br>"; $a=number_format( ); printf("1000 単 位 でフォーマットする number_format( ) は %s です <br>",$a); $a=number_format( ,4); printf("1000 単 位 でフォーマットする number_format( ,4) は %s です <br>",$a);?> </BODY> </HTML> < 練 習 課 題 > URL の 引 数 により 与 えられる 数 値 に 対 し 以 下 の 関 数 を 適 用 することにより 得 られる 結 果 を 表 示 しなさい Sin,Cos,Tan,Log,Sqrt 補 足 : 45 度 の Sin は 以 下 のように 求 めることができます $A=sin(45*3.14/180); 20-6) その 他 の 関 数 179

180 ファイルのアップロードは 一 般 的 には ftp ソフトを 使 って 行 いますが 以 下 のような 関 数 を 使 うこと により 任 意 のファイルをアップロードすることもできます upload.php プログラム <HTML> <BODY> <H1>ファイルのアップロードのサンプルです</H1> <?php echo <<<EOD <FORM ENCTYPE="multipart/form-data" ACTION="{$_SERVER['PHP_SELF']" METHOD=POST> <INPUT TYPE=hidden name=max_file_size value= > 送 信 ファイル 名 <INPUT NAME=uploaded TYPE=file SIZE=30> <INPUT TYPE="submit" VALUE="アップロード"> </form> EOD; if (!empty($_files['uploaded']['name'])) { if (move_uploaded_file( $_FILES['uploaded']['tmp_name'], $_FILES['uploaded']['name']) == FALSE) { printf("ファイルの 移 動 に 失 敗 しました:%s<BR>\n", $_FILES['uploaded']['error']); echo <<<EOD <BR>\$_FILES 変 数 に 設 定 される 値 です <BR> tmp_name:アップロードファイルの 一 時 的 な 格 納 場 所 (php.ini で 設 定 )<BR> name :クライアント 側 のアップデート 対 象 ファイル 名 ( 指 定 されたファイル)<BR> size :アップロード 対 象 ファイルの 大 きさ<BR> type :アップロードファイルの 形 式 <BR> <BR> \$_FILES['uploaded']['tmp_name']={$_FILES['uploaded']['tmp_name']<BR> \$_FILES['uploaded']['name']={$_FILES['uploaded']['name']<BR> \$_FILES['uploaded']['size']={$_FILES['uploaded']['size']<BR> \$_FILES['uploaded']['type']={$_FILES['uploaded']['type']<BR> EOD;?> </BODY> </HTML> 注 意 : 事 前 に サーバ 側 のアップロードを 行 うディレクトリを 書 き 込 み 可 状 態 に 設 定 します また ア ップロードを 行 う 場 合 の FORM 文 に 設 定 する Method 属 性 は POST とし ENCTYPE を ENCTYPE="multipart/form-data"とします < 練 習 課 題 > サーバ 側 の Web プログラム 保 存 用 ディレクトの 中 に 任 意 のディレクトリを 作 成 し クライアン ト 側 の 任 意 のファイルを そのディレクトリに 登 録 するプログラムを 作 成 してください 180

181 20-7) ファイルを 使 ったチャットプログラムの 例 です chattest.htm <HTML> <HEAD> <TITLE> 有 限 会 社 ユーアイテクノケアのサンプルプログラム 集 です </TITLE> </HEAD> <FRAMESET rows="150,*" BORDER="0"> <frame src="chat1.php" MARGINWIDTH="0" SCROLLING="yes" frameborder="no" noresize MARGINHEIGHT="0" width=860> <frame src="chat2.php" MARGINWIDTH="0" SCROLLING="yes" frameborder="no" noresize MARGINHEIGHT="0" width=860> </FRAMESET> </HTML> chat1.php <HTML> <HEAD> <style type="text/css"> <!-- H1{ font: 24pt/32px "MS Pゴシック", "Osaka" H2{ font: 12pt/18px "MS Pゴシック", "Osaka" -->0 </style> </HEAD> <BODY> <CENTER> <BR> <H1>ユーアイテクノケアの 簡 易 チャット<BR></H1> <?php if else if else if else (!empty($_get['in1'])) $in1=$_get['in1']; $in1=""; (!empty($_get['in2'])) $in2=$_get['in2']; $in2=""; (!empty($_get['bc'])) $bc=$_get['bc']; 181

182 $bc="white"; echo "<H2>"; echo "<FORM method=get action=chat1.php>"; echo " 名 前 : "; printf ("<INPUT name=in1 type=text size=30 value=%s> 背 景 色 :",$in1); printf ("<INPUT name=bc type=text size=10 value=%s>",$bc); echo "<BR><BR>メッセージ: "; echo "<INPUT name=in2 type=text size=100> "; echo "<INPUT name=sub type=submit value='メッセージ 登 録 '>"; echo "</FORM>"; echo "</H2>"; $data_file="chat_data.txt"; $datalog = file($data_file); if ($_GET['in1']=="administrator" and empty($_get['in2'])){ $fp = fopen($data_file, "w"); fclose($fp); if (!empty($_get['in2'])){ $fp = fopen($data_file, "w"); if (flock($fp,lock_ex)){ rewind($fp); fputs($fp, "$in1\n"); fputs($fp, "$bc\n"); fputs($fp, "$in2\n"); $msg_num = sizeof($datalog); for($i = 0; $i < $msg_num; $i++){ fputs($fp, $datalog[$i]); fclose($fp);?> </CENTER> </BODY> </HTML> chat2.php <HTML> <HEAD> <TITLE> 超 手 抜 き 簡 易 チャット </TITLE> <meta http-equiv="refresh" content="5;url= </HEAD> <style type="text/css"> <!-- TD{ font: 16pt/20px "MS Pゴシック", "Osaka" --> </style> <BODY bgcolor="white" alink="black" link="black" vlink="black" > 182

183 <CENTER> <hr> <TABLE border="0" aligin=center width=800> <?php $data_file="chatdata.txt"; $datalog = file($data_file); $msg_count = count($datalog); for($i = 0; $i < $msg_count; $i=$i+3){ printf("<tr bgcolor=%s >",$datalog[$i+1]); printf("<td>%s",$datalog[$i]); printf("<td>%s",$datalog[$i+2]); echo "</TR>"; echo "</TABLE>";?> </CENTER> </BODY> </HTML> Web サーバ 構 築 と 各 種 プログラミング 補 足 : 以 下 の 構 文 は 使 用 しているサーバの URL アドレスに 変 更 してください <meta http-equiv="refresh" content="5;url= < 練 習 課 題 > チャット 画 面 を 改 良 して 背 景 色 だけではなく 文 字 の 色 も 切 り 替 えることができるように 改 良 してください 183

184 20-8) グラフィックカウンターの 作 成 と 活 用 このプログラムは counterview.htm プログラムを 実 行 することにより 動 作 します gcounter.php カウンターを 作 り 出 すプログラムです <?php session_start(); $counter=file("nana-counter.txt"); if (!session_is_registered('count')) { session_register('count'); $counter[0]++; $fp=fopen("nana-counter.txt","w"); if (flock($fp,lock_ex)){ fwrite($fp,$counter[0]); flock($fp,lock_un); fclose($fp); $count=$counter[0];?> <HTML> <HEAD> <link rel="stylesheet" href="nana-css/styletitle.css" type="text/css"> </HEAD> <style type="text/css"> <!-- B {font-size:20pt;color:black; --> </style> <BODY> <?php $count=$counter[0]; $keta5=$count/10000; $keta5=(int)$keta5; $count%=10000; $keta4=$count/1000; $keta4=(int)$keta4; $count%=1000; $keta3=$count/100; $keta3=(int)$keta3; $count%=100; 0~9のグラフィック 文 字 を 作 成 して カレントディレクト リ 上 の counter ディレクトリ に c0.jpg~c9.jpg の 名 前 で 登 録 します 各 画 像 の 大 きさは 30x30 程 度 とします 184

185 $keta2=$count/10; $keta2=(int)$keta2; $count%=10; $keta1=$count/1; $keta1=(int)$keta1; echo <<<eof <img src="count/c$keta5.jpg"> <img src="count/c$keta4.jpg"> <img src="count/c$keta3.jpg"> <img src="count/c$keta2.jpg"> <img src="count/c$keta1.jpg"> eof;?> </BODY> </HTML> counterview.htm カウンターを 表 示 するプログラムです <HTML> <HEAD> <TITLE>カウンター 表 示 プログラム</TITLE> <style type="text/css"> <!-- TD{ font:20pt/24px" --> </style> <meta http-equiv="content-type" content="text/html"; charset="euc-jp"> </HEAD> <BODY alink="white" vlink="white" link="white" text="red"> <CENTER> <IFRAME src="gcounter.php" marginheight="0" margnwidth="0" width=150 height=30 scrolling="no" align=right frameborder="no" bordercolor="black" style="position: absolute;left:500px;top:15px;"> </IFRAME> <BR><BR> <B>カウンターはページが 呼 ばれる 毎 に 毎 回 更 新 されます </CENTER> </BODY> </HTML> 185

186 20-9) ユーザ 認 証 プログラム ninshou.php <?php session_start(); if (!isset($_server["php_auth_user"])){ Header("HTTP/ Unauthorized"); Header("WWW-authenticate:basic realm=\" 管 理 者 確 認 です\""); print ("あなたは 管 理 者 ではありません"); exit; else { if (($_SERVER["PHP_AUTH_PW"] == "uitec1353")&& ($_SERVER["PHP_AUTH_USER"] == "uitec")){ session_register('uitec'); else { Header("HTTP/ Unauthorized"); Header("WWW-authenticate:basic realm=\" 管 理 者 確 認 です\""); print (" 管 理 者 パスワードが 違 います"); exit; printf ("こんにちは %s さん",$_SERVER["PHP_AUTH_USER"]);?> 186

187 第 5 章 PHP と PostgreSql データベースの 連 携 プログラミング Web サーバ 構 築 と 各 種 プログラミング PHP プログラムからデータベースをアクセスする 場 合 PHP プログラミングを 行 う 前 に SQL データベース を 理 解 する 必 要 があります この 章 では この SQL データベースに 関 する 仕 様 と 本 説 明 書 が 前 提 とする データベースについて 紹 介 します 5.1 データベースとファイル 編 成 一 般 的 に データベースには 1 階 層 モデルによるデータベース 2ネットワークデータモデルによる データベース 及 び3リレーショナルなデータベースがあります 階 層 モデルのデータベースは 一 つの レコードに 対 し 一 つの 親 を 持 つという 構 造 体 で 実 現 されたデータベースであり ネットワークモデルは レコード 同 士 がネットワーク 上 に 関 連 を 持 った 構 造 体 として 実 現 されています これに 対 し 現 在 最 もポ ピュラーなものが リレーショナルデータベースで 2 次 元 の 表 の 概 念 を 利 用 したデータベースです 本 コースではこのリレーショナルデータベース 使 ったモデルを 活 用 します データベースが 使 用 するファイル 編 成 とは 各 種 のデータベースモデルは 使 用 者 から 見 たモデルであり 実 際 にデータが 格 納 される 観 点 から 見 た 場 合 各 データベースモデルは 以 下 の 示 すような3 種 類 の 基 本 的 なファイル 編 成 ファイルを 使 用 することによりデータベースモデルを 実 現 しています 1 順 編 成 ファイルの 仕 組 み 記 憶 装 置 の 先 頭 から 順 番 に 記 憶 する 方 法 で 記 録 効 率 ( 空 きがない)としては 良 いのですが データを 順 次 アクセスしかできませんので データの 検 索 挿 入 及 び 削 除 が 困 難 である 欠 点 があ ります 2 索 引 編 成 ファイルの 仕 組 み 索 引 編 成 は 索 引 域 (インデックス 域 )と 実 際 にデータが 書 き 込 まれる 基 本 域 及 びあふれ 域 から 構 成 されるもので 通 常 は 基 本 域 にデータは 格 納 されますが 削 除 / 更 新 を 繰 り 返 すとデータは 基 本 域 に 格 納 できず あふれ 域 に 格 納 することとなり 記 録 効 率 が 务 化 します 187

188 3 直 接 編 成 ファイルの 仕 組 み 実 際 のデータに 記 憶 装 置 のアドレスに 変 換 できるようなキーを 持 たせ そのキーをハッシュ 変 換 等 で 実 際 の 物 理 アドレスに 変 換 してアクセスする 方 式 で 高 速 なアクセスが 可 能 ですが 記 憶 装 置 に 無 駄 が 発 生 しますので 記 録 効 率 は 良 くありません 追 記 : ハッシュ 法 とは ハッシュ 関 数 を 用 いてインデックスとして 設 定 した 列 の 値 を 変 換 し 物 理 的 な 格 納 アドレスを 知 る 方 法 ですが 関 数 の 計 算 結 果 が 同 じ 値 となった 場 合 (シノニムと 言 います) に その 位 置 にデータ 格 納 ができない 為 に 別 の 領 域 に 格 納 することになり この 処 理 による 効 率 は 务 化 することになります (ハッシュ 関 数 には 平 方 抽 出 法 や 合 同 法 ( 除 算 法 )があります) 188

189 5.1.2 リレーショナルデータベースとは リレーショナルデータベースとは データベースファイル(スキーマ)に 複 数 のテーブルを 作 成 し そ の 各 々のテーブルを 主 キー 及 び 外 部 キーにより 関 連 づけることにより テーブル 間 の 相 関 関 係 を 維 持 した 状 態 で 情 報 の 効 率 的 なデータの 格 納 ( 重 複 したデータ 保 存 の 回 避 等 )と 必 要 情 報 の 迅 速 な 抽 出 を 可 能 とし ます ( 主 キーとして 登 録 されるデータには 同 じ 値 が 登 録 されてはいけません 例 えば 学 生 番 号 別 に 学 生 の 個 人 情 報 をまとめた 表 においては 学 生 番 号 で 他 の 表 と 関 連 付 けられますので 一 般 的 には 主 キーと 定 義 されます 勿 論 同 じ 学 生 番 号 の 学 生 は 存 在 してはいけません )また このデータベースは SQL 言 語 にて 構 築 されます SQL 言 語 とはリレーショナルデータベースを 構 築 したり 参 照 する 為 に 使 われる 標 準 的 な 言 語 です マ イクロソフト 社 のアクセスデータベースソフト 等 はGUI(グラフィックユーザインターフェース)を 使 い スキーマの 作 成 テーブル( 表 )の 作 成 及 び 各 テーブル( 表 )へのデータ 入 力 を 行 いますが( 入 力 条 件 の 設 定 等 も 行 います) 内 部 的 にはこの SQL を 使 ってデータベースを 作 成 / 参 照 しています また 各 種 のテーブル( 表 )から 必 要 な 項 目 を 抜 き 出 したり 各 種 の 集 計 処 理 等 を 行 ったものを 表 とし て 表 示 する 為 のクエリ( 仮 想 表 として 作 成 され 実 際 のデータは 各 テーブルに 存 在 しますので テーブル が 更 新 された 場 合 はクエリも 更 新 されたように 見 えます)を 作 成 したりします 勿 論 内 部 的 には これら の 処 理 も 全 てSQLという 言 語 を 使 い 実 現 されています 補 足 : ある 表 から 条 件 を 満 たした 行 のみを 選 択 する 演 算 を 選 択 又 は 制 限 といい SQL 上 ではSele ctという 概 念 で 処 理 されます また 特 定 の 項 目 ( 列 )のみを 取 り 出 す 演 算 を 射 影 と 呼 び SQL ではProjectionという 概 念 で 処 理 されます 189

190 データベースサーバを 利 用 したクライアントサーバーシステムにおいて クライアント 側 で 直 接 SQLコ マンドを 実 行 し サーバー 上 のデータベースをアクセスするとSQL 処 理 そのものが 通 信 回 線 を 使 って 実 行 されますので 通 信 上 の 負 荷 が 大 きくなる 弊 害 があります この 問 題 を 解 決 する 方 法 として ストアド プロシージャ 機 能 を 利 用 する 方 法 があります この 機 能 は サーバー 上 のデータベースに 対 するアクセス をできる 限 りデータベースサーバー 側 で 実 行 してもらい クライアントはその 結 果 だけを 得 る 方 法 で こ の 目 的 として 作 られたデータサーバー 上 に 登 録 されたプロシージャ(ストアードプロシージャ)がクライ アントの 要 求 に 応 じてサーバー 側 のCPU 上 で 動 作 し 結 果 を 返 す 方 式 です 190

191 5.2 SQL 言 語 によるデータベースアクセス SQL データベース 言 語 とは リレーショナルデータベースの 定 義 言 語 (DDL:DataDefinitionLanguage) 操 作 (DML:DataManipulationLanguage) 及 び 制 御 (DCL:DataControlLanguage)を 行 う 言 語 であり ISO により 標 準 化 されたものです PHP 言 語 はデータベースに 対 する 以 下 のおのおのの 処 理 を 関 数 ( 例 えば SELECT 文 を 実 行 する 為 の pg_query 関 数 )を 使 って 要 求 することにより データベースとのやりとりを 実 現 します 1) リレーショナルデータベースの 定 義 (DDL:DataDefinitionLanguage) 以 下 のコマンドから 構 成 されるもので データベースの 構 造 や 表 を 定 義 します CREATE : 表 等 の 定 義 例 :create table tbl01(id1 integer,id2 date); 例 : 自 動 発 番 機 能 を 使 った 場 合 の 例 create table tbl01(id1 serial primary key,id2 text) 補 足 :Mysql の 場 合 の 自 動 発 番 は 以 下 のように 設 定 します create table tbl01(id1 integer auto_increment primary key,id2 text) ALTER : 列 等 の 変 更 例 :ALTER table tbl01 add id1 text; 例 :ALTER table tbl01 add id1 integer primary key; 例 :ALTER table tbl01 drop id1; 例 :ALTER table tbl01 modify id1 text DROP : 表 及 び 列 等 の 削 除 例 :drop table tbl01; 2) リレーショナルデータベースの 操 作 (DML:DataManipulationLanguage) 以 下 のコマンドから 構 成 され データベースからデータを 取 り 出 したり 追 加 更 新 削 除 等 を 行 うものです SELECT : 行 の 問 い 合 わせ 等 を 行 います 例 :SELECT * from tbl01; INSERT : 行 の 挿 入 を 行 います 例 :INSERT into tbl01 values(1000, 2003/11/14 ); 例 :INSERT into tbl01(item2) values('2003/11/15'); UPDATE : 行 の 更 新 を 行 います 例 :UPDATE tbl01 set id1=20,id2= 2003/11/17 where id1=20; 191

192 DELETE : 行 の 削 除 を 行 います 例 :DELETE from tbl01 where id1=20; 3) リレーショナルデータベースの 制 御 (DCL:DataControlLanguage) 以 下 のコマンドから 構 成 され データベースの 制 御 を 行 うものです GRANT : 権 限 の 付 与 を 行 います 例 :GRANT ALL ON tbl01 to apache; 例 :GRANT SELECT ON tbl01 to yamada; REVOKE : 権 限 の 削 除 を 行 います 例 :REVOKE ALL ON tbl01 from apache; 例 :REVOKE SELECT ON tbl01 from yamada; COMMIT :コミットを 行 います ROLLBACK:ロールバック 処 理 を 行 います 5.3 PHP から PostgreSql データベースをアクセスするライブラリ PHP から PostgreSql データベースに 処 理 要 求 を 行 う 場 合 所 定 のインターフェース(API)を 介 して 行 います 以 下 の 主 なインターフェース 仕 様 を 紹 介 します 詳 細 な 構 文 に 関 しては インターネット 等 で 紹 介 されている 説 明 書 を 参 照 ください 例 : 重 要 API 名 機 能 説 明 使 用 例 pg_connect PostgerSql データベースに 接 続 し PHP プログラムからのデータベース アクセスを 可 能 とします $con=pg_connect("dbname=db01"); 注 : 返 却 値 である$con は 切 断 処 理 要 求 時 等 で 使 用 します pg_query PostgreSql データベースに 対 し 任 $result=pg_query($con, SELECT * 意 のコマンド( 右 記 例 では SELECT 文 )を 実 行 し その 結 果 を 取 得 ( 右 FROM a_table ORDER BY item01); 記 では$result で)します pg_num_rows pg_query 関 数 による SELECT 文 実 行 $row=pg_numrows($result); により 取 得 した 結 果 から その 時 の 総 行 数 を 得 ます pg_num_fields pg_query 関 数 による SELECT 文 実 行 により 取 得 した 結 果 から その 時 の 総 列 数 を 得 ます pg_fetch_result pg_query 関 数 による SELECT 文 実 行 により 取 得 した 結 果 から 特 定 の 行 / 列 のデータを 取 得 します 注 :$result は pg_query で 指 定 した 変 数 名 です $col=pg_numfields($result); 注 :$result は pg_query で 指 定 した 変 数 名 です $str=pg_fetch_result($result,1,1); 注 :パラメータの1,1は 取 得 した い 情 報 の 行 及 び 列 番 号 です 結 果 は $str 変 数 に 返 却 されます 192

193 pg_freeresult pg_query 関 数 により 所 得 内 容 を 保 存 する 為 に 確 保 されたメモリを 解 放 します pg_close pg_connect 関 数 により 確 立 された PostgreSql データベースとの 接 続 状 態 を 切 断 します pg_pconnect pg_connect 関 数 と 基 本 的 には 同 じで すが この 場 合 pg_close では 切 断 できません( 終 了 時 にのみ 切 断 され ます) pg_errormessage pg_query 関 数 でエラーが 発 生 した 場 合 の 詳 細 を 取 得 できます pg_field_name pg_query 関 数 による SELECT 文 実 行 により 取 得 した 結 果 から 特 定 の 列 に 付 けられている 名 前 を 取 得 します pg_fetch_array pg_query 関 数 による SELECT 文 実 行 により 取 得 した 結 果 から 特 定 の 行 のデータを 取 得 します pg_fetch_row pg_fetch_array 関 数 と 同 じで 特 定 の 行 を 取 得 します 違 いは 返 却 さ れる 配 列 のタイプが 普 通 の 配 列 に 固 定 かされている 点 です pg_fetch_array はタイプ 指 定 可 能 pg_fetch_object 機 能 的 には pg_fetch_array 関 数 と 同 じで 特 定 の 行 を 取 得 します 但 し 返 却 される 内 容 はオブジェク トです pg_freeresult($result); 注 :$result は pg_query で 指 定 した 変 数 名 です pg_close($con); 注 :$con は pg_connect 関 数 で 設 定 し た 変 数 名 です $con=pg_pconnect("dbname=db01"); $str=pg_errormessage($con); 注 :$str 変 数 に 詳 細 が 返 却 されます &str=pg_fieldname($result,1); 注 :1は 列 番 号 です $rowstr=pg_fetch_array($result,1); 注 :パラメータの1は 取 得 したい 情 報 の 行 番 号 です 結 果 は $rowstr 変 数 に 返 却 されます $rowstr=pg_fetch_row($result,1); 注 :パラメータの1は 取 得 したい 情 報 の 行 番 号 です 結 果 は $rowstr 変 数 に 返 却 されます $obj=pg_fetch_array($result,1); 補 足 1: 上 記 以 外 の 関 数 として pg_dbname pg_host などのいろいろな 関 数 が 用 意 されていますが 導 入 レベルで は 必 要 ありませんので 割 愛 します 補 足 2: Mysql において 使 用 できる 主 な 関 数 は 以 下 の 通 りです 重 要 API 名 機 能 説 明 使 用 例 mysql_connect mysql データベースに 接 続 し PHP プログラムからのデータ ベースアクセスを 可 能 としま す mysql_select_db 使 用 するデータベースを 定 義 します mysql_query mysql データベースに 対 し 任 意 のコマンド( 右 記 例 では SELECT 文 )を 実 行 し その 結 $con=mysql_connect("localhost","uitec ","uitec1353"); localhost:server-name uitec:user name uitec1353:password 注 : 返 却 値 である$con は 切 断 処 理 要 求 時 等 で 使 用 します mysql_select_db("uitecdb"); uitecdb:データベース 名 $result=mysql_query($con, SELECT * FROM a_table ORDER BY item01); 193

194 果 を 取 得 ( 右 記 では$result で)します mysql_num_rows mysql_query 関 数 に よ る SELECT 文 実 行 により 取 得 した 結 果 から その 時 の 総 行 数 を 得 ます mysql_num_fields mysql_query 関 数 に よ る SELECT 文 実 行 により 取 得 した 結 果 から その 時 の 総 列 数 を 得 ます mysql_result mysql_query 関 数 に よ る SELECT 文 実 行 により 取 得 した 結 果 から 特 定 の 行 / 列 のデー タを 取 得 します mysql_free_result mysql_query 関 数 により 所 得 内 容 を 保 存 する 為 に 確 保 され たメモリを 解 放 します mysql_close mysql_connect 関 数 により 確 立 された mysql データベース との 接 続 状 態 を 切 断 します mysql_pconnect mysql_connect 関 数 と 基 本 的 には 同 じですが この 場 合 mysql_close では 切 断 できま せん( 終 了 時 にのみ 切 断 され ます) mysql_field_name mysql_query 関 数 による SELECT 文 実 行 により 取 得 した 結 果 から 特 定 の 列 に 付 けら れている 名 前 を 取 得 します mysql_fetch_array mysql_query 関 数 に よ る mysql_fetch_row SELECT 文 実 行 により 取 得 した 結 果 から レコードを 取 得 し て 配 列 として 返 します mysql_fetch_array 関 数 と 同 じで 特 定 の 行 を 取 得 します 違 いは 返 却 される 配 列 のタ イプが 普 通 の 配 列 に 固 定 かさ れている 点 です mysql_fetch_array はタイプ $row=mysql_numrows($result); 注 :$result は mysql_query で 指 定 した 変 数 名 です $col=mysql_numfields($result); 注 :$result は mysql_query で 指 定 した 変 数 名 です $str=mysql_result($result,1,1); 注 :パラメータの1,1は 取 得 したい 情 報 の 行 及 び 列 番 号 です 結 果 は $str 変 数 に 返 却 されます 補 足 : PostgreSql の pg_fetch_result に 相 当 し ます mysql_freeresult($result); 注 :$result は mysql_query で 指 定 した 変 数 名 です mysql_close($con); 注 :$con は mysql_connect 関 数 で 設 定 し た 変 数 名 です $con=mysql_pconnect("localhost","uite c","uitec1353"); localhost:server-name uitec:user name uitec1353:password 注 : 返 却 値 である$con は 切 断 処 理 要 求 時 等 で 使 用 します &str=mysql_fieldname($result,1); 注 :1は 列 番 号 です $rowstr=mysql_fetch_array($result); 注 :パラメータとして 返 却 値 の 型 を 指 定 することも 出 来 ます ( 省 略 時 は MYSQL_BOTH と 解 釈 されます) Postgresql の 場 合 とパラメータが 異 なり ます $rowstr=mysql_fetch_row($result,1); 注 :パラメータの1は 取 得 したい 情 報 の 行 番 号 です 結 果 は $rowstr 変 数 に 返 却 されます 194

195 mysql_fetch_object 指 定 可 能 機 能 的 には $obj=mysql_fetch_array($result,1); mysql_fetch_array 関 数 と 同 じで 特 定 の 行 を 取 得 します 但 し 返 却 される 内 容 はオブ ジェクトです 補 足 : 上 記 以 外 の 関 数 として mysql_data_seek mysql_field_seek などのいろいろな 関 数 が 用 意 されています が 導 入 レベルでは 必 要 ありませんので 割 愛 します 5.4 データベース 関 連 のコマンド データベース 関 連 コマンドとして Unix のコマンドラインから 実 行 できるコマンドを 紹 介 します コマンド 名 機 能 説 明 使 用 例 createuser PostgreSql に 対 するアクセスを 可 能 とします >createuser apache PHP からの PostgerSql の 使 用 を 可 能 と します createdb dropdb データベースを 作 成 するコマンドで す このコマンドで 作 成 されたデー タベースの 中 に psql や PHP+ Postgresql を 使 ってテーブルやデー タを 登 録 することになります パラメータとして 指 定 されたデータ ベース 名 を 削 除 します >createuser xxxxx xxxxx のアカウント 名 からの PostgreSql の 使 用 が 可 能 となります >createdb xxxxxx xxxxxx という 名 前 のデータベースが 作 成 されます この 名 前 は psql -l コマンドにて 参 照 できます >dropdb xxxxxx xxxxxx という 名 前 のデータベースが 削 除 されます この 確 認 は psql -l コマンドにて 行 うことができます 補 足 : mysql データベースの 場 合 は mysql ツールを 使 ってデータベースの 作 成 を 行 います #mysql mysql>create database xxxxx xxxxx:データベース 名 195

196 5.5 Psql データベースツールの 活 用 方 法 Psql データベースツールとは PostgreSql データベースシステムが 提 供 している コマンドラインから 各 種 のデータベースアクセスを 行 うことのできるツールです このツールを 使 うことにより コマンドラ インから 様 々な SQL コマンドを 実 行 させることができます (SQL コマンドを 実 行 させる 場 合 は SQL コ マンドの 後 ろにセミコロン( ; )マークを 付 ける 必 要 があります) 以 下 に 主 な 使 い 方 を 紹 介 します SQL コマンドファイルを 使 ってデータベース 処 理 を 行 う 場 合 SQL コマンドが 記 述 されたファイルからコマンドを 読 み 込 み データベース 構 築 等 を 行 う 場 合 は コマ ンド 入 力 ウインド 上 から 以 下 の 入 力 を 行 います psql DatabaseName -f SqlFileName DatabaseName SqlFileName : createdb コマンドで 生 成 されたデータベース 名 :テキストエディタで 作 成 された SQL コマンド 登 録 ファイル 名 Psql ツールのユーザインターフェースを 使 ってデータベース 処 理 を 行 う 場 合 コマンドラインより Psql DatabaseName を 実 行 し 表 示 される 画 面 上 で 以 下 のコマンドを 入 力 することにより 各 種 のデータベースアクセス 処 理 ができます psql ツールの 起 動 psql DatabaseName psql の 主 な 実 行 コマンド \h :psql コマンドの 使 い 方 が 表 示 されます \d : 指 定 されたデータベースに 登 録 されているテーブル 名 等 が 表 示 されます \q :psql を 強 制 的 に 終 了 させます SQL 命 令 : 指 定 された SQL 命 令 が 実 行 されます psql ツールから 実 行 できる 主 なコマンド psql ツールを 使 ってデータベースをアクセスする 主 なコマンドを 紹 介 します コマンド 名 機 能 説 明 使 用 例 CREATE TABLE データベースに 中 にテーブルを 作 成 CREATE TABLE 得 意 先 テーブル( します 得 意 先 コード INTEGER, 得 意 先 名 VARCHAR(64), PRIMARY KEY( 得 意 先 コード)); CREATE VIEW データを 参 照 する 目 的 だけに 作 成 さ れる 実 体 のない 表 を 作 成 します こ CREATE VIEW 売 上 ビュー( AS SELECT * FROM 売 上 テーブル); 196

197 GRANT INSERT DELETE UPDATE の 定 義 を 行 うことにより 複 数 の 表 から 任 意 の 項 目 だけを 抜 き 出 した 全 く 独 立 した 一 つの 表 にように 扱 う ことができます データベースに 対 し アクセスを 許 可 する 相 手 を 定 義 します この 定 義 が 無 いユーザはそのデータベースを 作 成 できません データベースに 定 義 されたテーブル にレコードを 登 録 します データベースに 定 義 されたテーブル から 任 意 のレコードを 削 除 します データベースに 定 義 されたテーブル の 任 意 のレコードを 更 新 します 売 上 テーブルの 全 てを 売 上 ビューとい うテーブルでも 参 照 できます GRANT ALL ON 売 上 テーブル TO apache; 上 記 は PHP から PostgreSql を 使 用 可 能 にする 例 です INSERT INTO 売 上 テーブル VALUES(100,'11/10/2003',140)"; 売 上 テーブルに 新 規 に 1 件 のレコード を 登 録 します DELETE FROM 売 上 テーブル WHERE 伝 票 番 号 =100; 売 上 テーブルから 伝 票 番 号 が 100 番 の レコードを 削 除 します UPDATE 売 上 テーブル SET 伝 票 番 号 = 伝 票 番 号 +100 WHERE 伝 票 番 号 =100; 売 上 テーブルの 伝 票 番 号 が 100 番 のレ コードの 内 容 を 変 更 します 補 足 : PSQL において 利 用 できるデータの 型 は 以 下 の 通 りです データ 型 CHAR(n) 意 味 n 桁 の 文 字 列 を 宣 言 します 指 定 した 文 字 以 内 が 書 き 込 まれた 場 合 は スペー スが 後 ろに 詰 められます n 桁 の 文 字 列 を 宣 言 します 格 納 された 文 字 分 だけが 確 保 されます 文 字 数 制 限 無 しの 文 字 列 格 納 用 の 型 です 4バイトの 整 数 型 です 2バイトの 整 数 型 です 8バイトの 整 数 型 です 単 精 度 浮 動 小 数 点 型 です 日 付 け 型 です 時 間 型 です 年 月 日 時 分 秒 型 です 論 理 型 です 1000 桁 までの 精 度 の 整 数 と 尐 数 用 型 です VARCHAR(n) TEXT INTEGER SMALLINT BIGINT FLOAT DATE TIME TIMESTAMP BOOL NUMERIC DOUBLE PRECISION 倍 精 度 浮 動 小 数 点 型 です その 他 DECIMAL INTERVAL などがあります 197

198 5.5.4 SQL 基 本 コマンドの 体 系 SQL コマンドによりデータベースを 作 成 / 参 照 する 場 合 の 体 系 は 以 下 の 通 りです 198

199 5.6 本 書 のサンプルプログラムが 想 定 するデータベースの 体 系 本 書 の 第 6 章 の PHP から PostgreSql へのアクセスに 関 するサンプルプログラムが 扱 うデータベースは 以 下 を 想 定 します 6 章 のサンプルプログラムは このテーブルを 使 って PHP プログラムからのデータベー ス 更 新 や 参 照 を 行 います Sampledb1データベース 本 データベースは 野 菜 果 物 及 び 雑 貨 を 扱 う 卸 売 り 業 者 の 売 上 げ 情 報 に 関 するもので 本 データ ベースは 売 上 げ 情 報 に 対 し 第 3 正 規 化 処 理 を 行 うことにより 4つのテーブルから 構 成 されています 補 足 : リレーショナルデータベースにおいては データが 矛 盾 無 く 更 新 される 体 系 とする 必 要 があります こ れをデータベースの 正 規 化 といいます 第 1 正 規 化 : 表 を 1 行 1 件 とした 形 式 とします 第 2 正 規 化 : 表 上 でユニークなキーが 存 在 し そのキーを 介 して 列 が 特 定 できる 形 式 とします 第 3 正 規 化 : 列 を 特 定 するキーが 複 数 存 在 しない 形 式 とします 199

200 Sampledb2 データベース テーブルの 作 成 手 順 (1) PostgreSql データベースをアクセスできる 権 限 でログインを 行 います (2) サーバ 側 のウインド 上 で 以 下 のコマンドを 入 力 することにより データベースを 作 成 します dropdb createdb dropdb createdb sampledb1 sampledb1 sampledb2 sampledb2 (3) データベースにテーブルを 作 成 し 実 際 のデータを 登 録 する 為 に 以 下 のコマンド 群 をクライアント 側 で 作 成 し PHP プログラム 同 様 に FFFTP ツールを 使 って Web サーバ 側 の 所 定 のディレクトリに 登 録 します ( 括 弧 やコンマを 含 む 制 御 文 字 は 全 て 半 角 としてください) ファイル 名 :makedb1.sql ファイルの 内 容 : 以 下 の 通 りとします ( 実 際 の 図 と 合 わない 項 目 は 追 加 します) TeraPad において 編 集 を 行 う 場 合 の 注 意 : 表 示 オプション ウインドウ/ 漢 字 コード タブにおいて 保 存 時 の 漢 字 コードを EUC とすること ファイル 漢 字 コード 指 定 再 読 込 で 表 示 されるメニューで EUC が 選 択 さ れていること DROP TABLE 売 上 テーブル; DROP TABLE 得 意 先 テーブル; DROP TABLE 売 上 明 細 テーブル; DROP TABLE 商 品 テーブル; CREATE TABLE 得 意 先 テーブル( 200

201 得 意 先 コード INTEGER, 得 意 先 名 VARCHAR(64), PRIMARY KEY( 得 意 先 コード)); CREATE TABLE 売 上 テーブル( 伝 票 番 号 INTEGER, 日 付 け DATE, 得 意 先 コード INTEGER, PRIMARY KEY( 伝 票 番 号 ), FOREIGN KEY( 得 意 先 コード) REFERENCES 得 意 先 テーブル); CREATE TABLE 商 品 テーブル ( 商 品 コード INTEGER, 商 品 名 CHAR(30), 単 価 INTEGER, PRIMARY KEY( 商 品 コード)); CREATE TABLE 売 上 明 細 テーブル ( 伝 票 番 号 INTEGER, 商 品 コード INTEGER, 個 数 INTEGER, PRIMARY KEY( 伝 票 番 号, 商 品 コード), FOREIGN KEY( 商 品 コード) REFERENCES 商 品 テーブル, FOREIGN KEY( 伝 票 番 号 ) REFERENCES 売 上 テーブル( 伝 票 番 号 )); INSERT INTO 得 意 先 テーブル VALUES(100,'A 商 店 '); INSERT INTO 得 意 先 テーブル VALUES(101,'B 商 店 '); INSERT INTO 得 意 先 テーブル VALUES(105,'F 商 店 '); INSERT INTO 売 上 テーブル VALUES(1000,'2003/10/14',100); INSERT INTO 売 上 テーブル VALUES(1001,'2003/10/14',101); INSERT INTO 売 上 テーブル VALUES(1010,'2003/10/24',105); INSERT INTO 商 品 テーブル VALUES(10,'ねぎ',50); INSERT INTO 商 品 テーブル VALUES(11,' 白 菜 ',45); INSERT INTO 商 品 テーブル VALUES(50,' 苗 ',200); INSERT INTO 売 上 明 細 テーブル VALUES(1000,10,100); INSERT INTO 売 上 明 細 テーブル VALUES(1000,11,120); INSERT INTO 売 上 明 細 テーブル VALUES(1010,10,20); SELECT * FROM 売 上 テーブル; SELECT * FROM 得 意 先 テーブル; SELECT * FROM 売 上 明 細 テーブル; SELECT * FROM 商 品 テーブル; INSERT INTO 得 意 先 テーブル VALUES(102,'C 商 店 '); INSERT INTO 売 上 テーブル VALUES(1002,'2003/10/15',102); 得 意 先 コードにはリレーションが 設 定 されていますので 得 意 先 テー ブルに 登 録 されていない 得 意 先 コードを 使 って 売 上 テーブルに 登 録 することはできません 事 前 に 得 意 先 テーブルに 登 録 を 行 う 必 要 があ ります 201

202 SELECT 伝 票 番 号, 日 付 け, 売 上 テーブル. 得 意 先 コード, 得 意 先 名 FROM 売 上 テーブル, 得 意 先 テ ーブル WHERE 売 上 テーブル. 得 意 先 コード= 得 意 先 テーブル. 得 意 先 コード; SELECT 伝 票 番 号, 商 品 名, 個 数 FROM 売 上 明 細 テーブル, 商 品 テーブル WHERE 売 上 明 細 テーブル. 商 品 コード= 商 品 テーブル. 商 品 コード; GRANT ALL ON 売 上 テーブル TO apache; GRANT ALL ON 得 意 先 テーブル TO apache; GRANT ALL ON 売 上 明 細 テーブル TO apache; GRANT ALL ON 商 品 テーブル TO apache; (4) データベースにテーブルを 作 成 し データを 登 録 するコマンドファイルを vi コマンドを 使 って 作 成 します ( 括 弧 やコンマを 含 む 制 御 文 字 は 全 て 半 角 としてください) ファイル 名 :makedb2.sql ファイルの 内 容 : 以 下 の 通 りとします DROP TABLE MemberTable; CREATE TABLE MemberTable( Number INTEGER UNIQUE NOT NULL, Name CHAR(32), Sex CHAR(6), Birth DATE, Age INTEGER, Speciality CHAR(32), PRIMARY KEY(Number)); INSERT INTO MemberTable VALUES(1,'abe shizuo','male','1980/11/14',23,''); INSERT INTO MemberTable VALUES(2,'Inoue Kazuko','Female','1975/11/14',28,''); INSERT INTO MemberTable VALUES(3,'ueza mitsuo','male','1973/11/14',30,''); INSERT INTO MemberTable VALUES(4,'enomoto shinya','male','1976/11/14',27,''); INSERT INTO MemberTable VALUES(5,'Ogawa seiji','male','1977/11/14',26,''); INSERT INTO MemberTable VALUES(6,'Kawabata kenji','male','1978/11/14',25,''); INSERT INTO MemberTable VALUES(7,'Sato shizuka','female','1977/11/14',26,''); INSERT INTO MemberTable VALUES(8,'Suzuki yasuo','male','1976/11/14',25,''); INSERT INTO MemberTable VALUES(9,'Segawa shizuo','male','1975/11/14',28,''); INSERT INTO MemberTable VALUES(10,'Soga Kazuko','Female','1980/11/14',23,''); INSERT INTO MemberTable VALUES(11,'Takahashi mitsuo','male','1975/11/14',28,''); 202

203 INSERT INTO INSERT INTO INSERT INTO INSERT INTO INSERT INTO MemberTable VALUES(12,'Chiba shinya','male','1973/11/14',30,''); MemberTable VALUES(13,'Tsukida seiji','male','1974/11/14',29,''); MemberTable VALUES(14,'Teshigawara kenji','male','1975/11/14',28,''); MemberTable VALUES(15,'Toyama shizuka','female','1976/11/14',27,''); MemberTable VALUES(16,'Nakagawa yasuo','male','1975/11/14',28,''); SELECT * FROM MemberTable; GRANT ALL ON MemberTable TO apache; (5) 以 下 のコマンドを 使 い 上 記 で 作 成 したデータベース 構 築 用 コマンドを 実 行 します >psql sampledb1 -f makedb1.sql >psql sampledb2 -f makedb2.sql 補 足 : データベースを 作 成 するツールである psql の 基 本 操 作 は 以 下 の 通 りです なお psql では コマンド ラインから 全 ての sql コマンドを 実 行 することができます 登 録 されているデータベースの 一 覧 表 を 表 示 する 場 合 psql -l 特 定 のデータベースに 対 し sql コマンド, 或 いは psql コマンド psql コマンドラインから 実 行 する 場 合 psql データベース 名 データベース 名 =>sql コマンド データベース 名 =>\d データベース 名 =>\q 補 足 : \d コマンドは 登 録 テーブルの 内 容 を 参 照 する 場 合 \q は psql を 終 了 する 為 のコマンド です ファイルとして 登 録 されているデータベース 登 録 用 コマンドを 実 行 する 場 合 psql データベース 名 -f xxxxxx.sql 補 足 : xxxxx.sql は sql コマンドが 登 録 されているファイル 名 です 注 意 :psqlに 関 する 詳 細 は psql 関 連 のマニュアルを 参 照 してください 203

204 5.6.2 SQL の Select 構 文 による 様 々なデータ 抽 出 方 法 SQL 構 文 により 作 成 されたデータベースに 対 し Select 構 文 を 駆 使 することにより 計 算 処 理 も 含 めた 様 々な 形 態 でのデータ 抽 出 が 可 能 です 以 下 の 主 な 使 用 例 を 紹 介 します 列 名 は item-n テーブル 名 は Table-n として 表 記 します 用 途 構 文 例 意 味 全 項 目 の 単 純 抽 出 Select * from Table-1 Table-1 から 全 ての 項 目 を 選 択 します 任 意 項 目 の 抽 出 Select item-1 from Table-1 Table-1 から item-1 の 項 目 を 選 択 します 別 名 で 抽 出 Select item-1 as item-x from Table-1 Item-1 を item-x として Table-1 から 抽 出 します 複 数 項 目 の 抽 出 Select item-1,item-2 from Table-1 Item-1 と item-2を Table-1 か ら 抽 出 します 選 択 的 抽 出 複 合 条 件 による 抽 出 範 囲 条 件 による 抽 出 演 算 子 を 使 った 抽 出 関 数 を 使 った 抽 出 グループ 単 位 での 抽 出 グループ 単 位 で 抽 出 と 条 件 の 複 合 条 件 に よる 抽 出 昇 順 並 び 替 えによる 抽 出 昇 順 並 び 替 えによる 抽 出 Select item-1 from Table-1 Where item-2>1000 補 足 : 文 字 列 は xx と 指 定 します Select item-1 from Table-1 Where item-2>1000 or Item-1<10 Select item-1 from Table-1 Where item-2>100 and item-2<200 Select item-1,item-1*1.5 as item-3 from Table-1 補 足 : 演 算 子 として *,-,+,/,%が あります Select Length(item-1) as item-1 from Table-1 補 足 : 関 数 として Count,Avg Min,Max,Sum 等 があります Select Count(*) as item-2 from Table-1 Group by item-1 Select Avg(Item-1) as item-2 from Table-1 Group by item-1 Having Avg(Item-1) >=100 Select * from Table-1 Order by Item-1 Select * from Table-1 Order by Item-1 DESC Item-2 が 1000 以 上 の 値 の 持 つ Item-1 の 項 目 を Table-1 から 抽 出 します Item-2 が 1000 以 上 か Item-1 が10 以 下 の 値 の 持 つ Item-1 の 項 目 を Table-1 から 抽 出 しま す Item-2 が 100 から 200 の 間 の 値 の 持 つ Item-1 の 項 目 を Table-1 から 抽 出 します Item-1 と item-1 を 1.5 倍 した 値 を item-3 として Table-1 から 抽 出 します Item-1 の 中 の 文 字 数 を item-1 という 名 前 で Table-1 から 抽 出 します Item-1 の 中 に 登 録 されている 同 じ 内 容 のものをグループ 化 して 1 件 とし Table-1 に 登 録 されている 行 数 を,item-2 とい う 名 前 で 抽 出 します Item-1 によりグループ 化 され た グループ 毎 の 平 均 が 100 以 上 のものを item-2 という 名 前 で 抽 出 します Item-1 項 目 で 昇 順 並 び 替 えを 行 った 結 果 を Table-1 から 抽 出 します Item-1 項 目 で 降 順 並 び 替 えを 行 った 結 果 を Table-1 から 抽 出 します 204

205 複 数 テーブルからの 項 目 抽 出 演 算 結 果 を 別 項 目 と して 抽 出 グループ 化 による 抽 出 重 複 出 力 抑 制 抽 出 Select item1,item2 from table-1,table-2 Where table-1.xxx=table-2.xxx Select item1*item2 as item3 From table-1 Order by Item-1 ASC Select item1,item2 from table-1,table-2 Where table-1.xxx=table-2.xxx Group by item1,item2 Select distinct item1,item2 from table-1,table-2 Table-1 と table-2 から xxx が 等 しいデータを 抜 き 出 し そ こから item1 と item2 を 抜 き 出 します Table-1 の item1 と item2 を 積 算 し その 結 果 を item3 と 言 う 名 前 で 抽 出 します item2 と item2 の 内 容 が 同 じで あれば グループ 化 して1 行 と して 抽 出 します item1 に 同 じ 内 容 が 登 録 されて いる 場 合 は 最 初 に 登 録 されて いる 行 のみを 抽 出 します Select 構 文 には 様 々な 組 み 合 わせの 使 い 方 があります 例 えば Where 文 の 中 に Select 文 を 定 義 すること により その Select 文 により 抽 出 されたテーブルに 対 し 抽 出 条 件 を 設 定 して 抽 出 するような 組 み 合 わせ が 可 能 となります 例 えば 以 下 の 通 りです SELECT item1 item2 xxx as item3 from table1 WHERE item1<100 AND item2>200 AND item3 NOT IN(SELECT DISTINCT item3 FROM Ttable2 table3 WHERE table2.yyy=table3.yyy) 補 足 : SQL 構 文 には 各 パラメータの 設 定 順 番 が 決 まっています 例 えば Order パラメータの 前 に Where パラ メータを 記 述 する 必 要 があるなどです 205

206 5.7 PHP 言 語 からデータベース(PostgreSql)をアクセスするプログラミング 本 項 では SQL コマンドが 理 解 されていることを 前 提 として PHP から PostgreSql へのアクセスに 関 す るプログラミング 演 習 を 行 います 補 足 : PHP-PostgreSql 連 携 プログラムにおいて 日 本 語 を 使 用 する 場 合 は テキストエディタ(TeraPad)のフ ァイル 書 き 込 み 時 のコードは EUC-JP としてください PostgreSql は EUC-JP でなければ 解 釈 できません TeraPad の 表 示 オプション ウインド/ 漢 字 コード タブで 保 存 時 の 漢 字 コード を EUC とします SQL を 理 解 する 為 の PHP と PostgreSql の 連 携 プログラム sqlstudy.php <HTML> <head> <title>sql 修 得 の 為 のソフト</title> <meta http-equiv="content-type" content="text/html"; charset="euc-jp"> </head> <style type="text/css"> <!-- TD { font: 12pt/14px "MS Pゴシック", "Osaka" H1 { font: 10pt/12px "MS Pゴシック", "Osaka" H2 { font: 14pt/16px "MS Pゴシック", "Osaka" --> </style> <BODY bgcolor ="skyblue"> <CENTER> <H2><B>SQL コマンド 修 得 用 プログラム( 有 効 に 活 用 ください)</B></H2><BR> </CENTER> <?php if else { echo (empty($_get['sqldb']) or!empty($_get['reset'])){ $sqldb="sqldb"; $sqlcont=""; $sqldb=$_get['sqldb']; $sqlcont=stripslashes($_get['sqlcont']); "<CENTER>"; echo "<FORM method='get' action='sqlstudy.php'>"; print("<b>データベース 名 :</B>"); printf("<input TYPE='text' size=20 VALUE=%s NAME='sqldb'>",$sqldb); echo "<BR>"; echo "<TEXTAREA rows='3' Cols='110' name='sqlcont'>"; 206

207 echo $sqlcont; echo <<<form1 </TEXTAREA> <BR> <INPUT TYPE="submit" VALUE="SQL 文 の 実 行 " name="exec"> <INPUT TYPE="submit" VALUE="コマンドリセット" name="reset"> <BR><BR> </FORM> form1; echo "</CENTER>"; echo <<<remark <BR> 構 文 例 です <BR> create table sampletbl(item1 integer,item2 char(10),primary key(item1)) <BR> insert into sampletbl values(1,' 栃 木 ') <BR> select * from sampletbl; <BR><BR> remark; if (empty($_get['sqldb'])) exit; if ($con == false){ printf (" 指 定 されたデータベース(%s)は 存 在 しません ",$sqldb); exit; if ($sqlcont=="") exit; echo $sqlcont; if (!empty($_get['reset'])) exit; $result=pg_query("$sqlcont"); if ($result == false){ print ("SQL コマンドが 正 しくありません"); exit; $cmd=substr($sqlcont,0,6); if ($cmd == "select") { $rowcount=pg_num_rows($result); $colcount=pg_num_fields($result); print ("<HR><BR>"); print("<table BORDER=1>"); print("<tr>"); for ($j=0; $j<$colcount; $j++){ $str=pg_field_name($result,$j); print("<th>$str</th>"); 207

208 print("</tr>"); for ($i=0;$i<$rowcount;$i++){ print("<tr>"); for ($j = 0; $j<$colcount;$j++){ $str=pg_fetch_result($result,$i,$j); print("<td>$str</td>"); print("</tr>"); pg_free_result($result); pg_close($con); echo <<<EOF </BODY> </HTML> EOF;?> 補 足 : 第 4 章 に 記 載 されている 各 種 の SQL コマンドを 実 行 してください ご 参 考 : MYSQL データベースを 使 った 上 記 同 様 のプログラムは 以 下 のようになります mysql.php <HTML> <head> <title>mysql 修 得 の 為 のソフト</title> <meta http-equiv="content-type" content="text/html"; charset="euc-jp"> </head> <style type="text/css"> <!-- TD { font: 12pt/14px "MS Pゴシック", "Osaka" H1 { font: 10pt/12px "MS Pゴシック", "Osaka" H2 { font: 14pt/16px "MS Pゴシック", "Osaka" --> </style> <BODY bgcolor ="skyblue"> <CENTER> <H2><B>SQL コマンド 修 得 用 プログラム( 有 効 に 活 用 ください)</B></H2><BR> </CENTER> <?php if (empty($_get['sqldb']) or!empty($_get['reset'])){ $sqldb="sqldb"; $sqlcont=""; 208

209 else { $sqldb=$_get['sqldb']; $sqlcont=stripslashes($_get['sqlcont']); echo "<CENTER>"; Web サーバ 構 築 と 各 種 プログラミング echo "<FORM method='get' action='mysql.php'>"; print("<b>データベース 名 :</B>"); printf("<input TYPE='text' size=20 VALUE=%s NAME='sqldb'>",$sqldb); echo "<BR>"; echo "<TEXTAREA rows='3' Cols='110' name='sqlcont'>"; echo $sqlcont; echo <<<form1 </TEXTAREA> <BR> <INPUT TYPE="submit" VALUE="SQL 文 の 実 行 " name="exec"> <INPUT TYPE="submit" VALUE="コマンドリセット" name="reset"> <BR><BR> </FORM> form1; echo "</CENTER>"; echo <<<remark <BR> 構 文 例 です <BR> create table sampletbl(item1 integer,item2 char(10),primary key(item1)) <BR> insert into sampletbl values(1,' 栃 木 ') <BR> select * from sampletbl; <BR><BR> remark; if (empty($_get['sqldb'])) exit; $sqldb=$_get['sqldb']; $con=mysql_connect("localhost","uitec","yui1353") or die("failed"); mysql_select_db("$sqldb") or die(" 指 定 されたデータベースは 存 在 しません "); if ($sqlcont=="") exit; echo $sqlcont; if (!empty($_get['reset'])) exit; $result=mysql_query("$sqlcont"); if ($result == false){ print ("SQL コマンドが 正 しくありません"); exit; $cmd=substr($sqlcont,0,6); if ($cmd == "select") { 209

210 if $rowcount=mysql_num_rows($result); $colcount=mysql_num_fields($result); print ("<HR><BR>"); print("<table BORDER=1>"); print("<tr>"); for ($j=0; $j<$colcount; $j++){ $str=mysql_field_name($result,$j); print("<th>$str</th>"); for ($i=0;$i<$rowcount;$i++){ print("</tr>"); print("<tr>"); for ($j = 0; $j<$colcount;$j++){ $str=mysql_result($result,$i,$j); print("<td>$str</td>"); print("</tr>"); ($cmd == "select") mysql_free_result($result); mysql_close($con); echo <<<EOF </BODY> </HTML> EOF;?> Web サーバ 構 築 と 各 種 プログラミング PHP と PostgreSql の 連 携 による 表 内 容 表 示 プログラミング データベース(sampledb)に 登 録 されている 売 上 げテーブルの 内 容 を 表 示 するプログラムです postgre01.php プログラム <HTML> <BODY> if ($con == false){ print ("データベース 接 続 失 敗 "); exit; $sql="select * from 売 上 テーブル order by 日 付 if ($result==false){ print("sql 実 行 に 失 敗 "); exit; 210

211 for ($i=0; $i<pg_num_rows($result); $i++){ $record=pg_fetch_array($result,$i); printf("%d 件 目 => 伝 票 番 号 =%d, 日 付 け=%s, 得 意 先 コード=%s <BR>",$i+1,$record[' 伝 票 番 号 '],$record[' 日 付 け'],$record[' 得 意 先 コード']); pg_free_result($result); 売 上 テーブル の 全 レコードを 取 り 出 pg_close($con); し ブラウザ 画 面 上 に 表 示 します?> </BODY> </HTML> プログラム 概 説 : < 練 習 課 題 データベース(sampledb)を 使 用 可 能 状 態 にします $sql="select * from 売 上 テーブル order by 日 付 売 上 テーブル から 全 ての 項 目 を 行 毎 に 配 列 で 取 り 出 します $record=pg_fetch_array($result,$i); pg_query コマンドで 入 力 した 配 列 から1レコード 分 ($i で 指 定 されたレ コード)のデータを 取 り 出 します pg_free_result($result); $result として 確 保 された 領 域 を 解 放 します pg_close($con); データベースの 使 用 を 終 了 し 解 放 します 売 上 げテーブルの 内 容 全 てを 伝 票 番 号 順 に 表 示 してください 売 上 げテーブルの 内 容 から 10 月 26 日 以 降 の 内 容 を 抽 出 して 伝 票 番 号 順 に 表 示 してく ださい データベース 表 に 対 するデータ 追 加 変 更 削 除 プログラミング 売 上 テーブルに 対 して データの 追 加 (INSERT) 変 更 (UPDATE) 削 除 (DELETE)を 行 い その 各 々の 状 態 でのテーブルの 内 容 を 抽 出 (SELECT)し 表 示 するプログラムです postgre02.php プログラム Sampledb1 を 使 用 します <HTML> <BODY> 211

212 if ($con == false){ print ("データベース 接 続 失 敗 "); exit; printf (" 伝 票 番 号 が6000~6009の10 件 のデータを 挿 入 します <br><br>"); $a=6000; for ($i=0; $i<10; $i++){ $result=pg_query("insert INTO 売 上 テーブル VALUES($a,'11/10/2003',100)"); if ($result==false){ print("sql 実 行 に 失 敗 "); exit; $a=$a+1; pg_query("commit"); $sql="select * FROM 売 上 for ($i=0; $i<pg_num_rows($result); $i++){ $record=pg_fetch_array($result,$i); printf("%d 件 目 => 伝 票 番 号 =%d, 日 付 け=%s, 得 意 先 コード=%s <BR>",$i+1,$record[' 伝 票 番 号 '],$record[' 日 付 け'],$record[' 得 意 先 コード']); ここまでが 売 上 テーブル に 新 規 のレコード を 追 加 し その 結 果 を 表 示 する 処 理 部 分 です echo "<br><br><br>"; printf (" 伝 票 番 号 の6000~6009を6100~6109に 変 更 します <br><br>"); $a=6000; for ($i=0; $i<10; $i++){ $result=pg_query("update 売 上 テーブル SET 伝 票 番 号 = 伝 票 番 号 +100 WHERE 伝 票 番 号 =$a"); if ($result==false){ print("sql 実 行 に 失 敗 "); exit; $a=$a+1; pg_query("commit"); $sql="select * FROM 売 上 for ($i=0; $i<pg_num_rows($result); $i++){ $record=pg_fetch_array($result,$i); printf("%d 件 目 => 伝 票 番 号 =%d, 日 付 け=%s, 得 意 先 コード=%s <BR>",$i+1,$record[' 伝 票 番 号 '],$record[' 日 付 け'],$record[' 得 意 先 コード']); ここまでが 売 上 テーブル の 伝 票 番 号 を 変 更 し その 結 果 を 表 示 する 処 理 部 分 です 212

213 echo "<br><br><br>"; printf ("6100~6109を 削 除 します <br><br>"); $a=6100; for ($i=0; $i<10; $i++){ $result=pg_query("delete FROM 売 上 テーブル WHERE 伝 票 番 号 =$a"); if ($result==false){ print("sql 実 行 に 失 敗 "); exit; $a=$a+1; pg_query("commit"); $sql="select * FROM 売 上 for ($i=0; $i<pg_num_rows($result); $i++){ $record=pg_fetch_array($result,$i); printf("%d 件 目 => 伝 票 番 号 =%d, 日 付 け=%s, 得 意 先 コード=%s <BR>",$i+1,$record[' 伝 票 番 号 '],$record[' 日 付 け'],$record[' 得 意 先 コード']); ここまでが 売 上 テーブル に 新 規 に 追 加 されたレコ ードを 全 て 削 除 し その 結 果 を 表 示 する 処 理 部 分 です pg_free_result($result); pg_close($con);?> </BODY> </HTML> プログラム 概 説 データベース(sampledb)を 使 用 可 能 状 態 にします $result=pg_query("insert INTO 売 上 テーブル VALUES($a,'11/10/2003',140)"); salpledb データベースの 売 上 テーブル に $a の 内 容 11/10/2003 及 び 140 のデータを 登 録 します pg_query("commit"); 新 規 に 挿 入 されたレコードを 実 際 に 登 録 します $result=pg_query("update 売 上 テーブル SET 伝 票 番 号 = 伝 票 番 号 +100 WHERE 伝 票 番 号 =$a"); 売 上 テーブル の 伝 票 番 号 を100を 加 えた 値 で 入 れ 替 えます $result=pg_query("delete FROM 売 上 テーブル WHERE 伝 票 番 号 =$a"); 売 上 テーブル から$a で 指 定 される 伝 票 番 号 のレコードを 削 除 します pg_free_result($result); $result として 確 保 された 領 域 を 解 放 します pg_close($con); データベースの 使 用 を 終 了 し 解 放 します 213

214 < 練 習 課 題 > URL により 引 数 を 与 えることにより 売 上 テーブルへの 追 加 (INSERT) 日 付 け 変 更 (UPDATE) 及 び 削 除 処 理 (DELETE)が 行 えるプログラム(postgre02m.php)を 作 成 してください また 更 新 処 理 後 に 売 上 げテーブルの 一 覧 表 を 表 示 してください URL の 形 式 ( 例 )は 以 下 とします.php?cmd=INSERT&no=6000&date=11/27/2003&code=150.php?cmd=DELETE&no=6000.php?cmd=UPDATE&no=6000&date=11/27/2003.php?cmd=VIEW : 一 覧 表 表 示 を 行 います 214

215 5.7.4 データベースからの 抽 出 と 表 形 式 での 表 示 方 法 に 関 するプログラミング sampledb1 データベースに 登 録 されている 内 容 を 抽 出 し そのデータを HTML の Table タグを 使 って 表 示 を 行 うプログラムです postgre03.php プログラム <HTML> <BODY> if ($con == false){ print ("データベース 接 続 失 敗 "); exit; $sql="select * from 売 上 明 細 テーブル order by 個 数 if ($result==false){ print("sql 実 行 に 失 敗 "); exit; print <<<end <TABLE border="1" bgcolor="#f0f000" width="800" height="10" align="center"> <CAPTION align="top"> <H3> 売 上 げ 明 細 表 </H3> <TR align="center" bgcolor="#f00000"> <TH> 伝 票 番 号 </TH><TH> 商 品 コード</TH><TH> 販 売 個 数 </TH></TR> end; for ($i=0; $i<pg_num_rows($result); $i++){ $record=pg_fetch_array($result,$i); printf ('<TR align="center">'); $a=$record[' 伝 票 番 号 ']; $b=$record[' 商 品 コード']; $c=$record[' 個 数 ']; printf("<td>$a</td><td>$b</td><td>$c</td></tr>"); pg_free_result($result); pg_close($con);?> </BODY> </HTML> 補 足 : HTML の Table タグ 関 連 の 構 文 を 除 いては これまでの 内 容 と 変 わりません 215

216 < 練 習 課 題 > 売 上 げ 明 細 テーブルと 商 品 テーブルから 商 品 コードが 同 じ 項 目 を 抜 き 出 し 以 下 の 内 容 を 表 示 してください 伝 票 番 号 商 品 コード 商 品 名 個 数 単 価 合 計 金 額 この 項 目 は 個 数 * 単 価 で 算 出 します データベースからの 抽 出 と 表 形 式 での 表 示 方 法 に 関 するプログラミング sampledb2 データベースに 登 録 されている 内 容 を 抽 出 し そのデータを HTML の Table タグを 使 って 表 示 を 行 うプログラムです postgre04.php プログラム <HTML> <BODY> if ($con == false){ print ("データベース 接 続 失 敗 "); exit; $sql="select * from MemberTable order by if ($result==false){ print("sql 実 行 に 失 敗 "); exit; print <<<end <TABLE border="1" bgcolor="#f0f000" width="800" height="10" align="center"> <CAPTION align="top"> <H3> Web プログラミング 受 講 生 名 簿 </H3> <TR align="center" bgcolor="#f00000"> <TH> 出 席 番 号 </TH><TH> 氏 名 </TH><TH> 性 別 </TH><TH> 誕 生 日 </TH><TH> 年 齢 </TH><TH> 特 技 </TH> </TR> end; $SumAge=0; for ($i=0; $i<pg_num_rows($result); $i++){ $record=pg_fetch_array($result,$i); printf ('<TR align="center">'); $a=$record['number']; $b=$record['name']; $c=$record['sex']; $d=$record['birth']; $e=$record['age']; $f=$record['speciality']; 216

217 printf("<td>$a</td><td>$b</td><td>$c</td><td>$d</td><td>$e</td><td> $f</td> </TR>"); $SumAge=$SumAge+$e; printf ("</TABLE>"); $AveAge=$SumAge/$i; printf('<br><h3 align="center">'); printf (" 総 人 数 は %d で 平 均 年 齢 は %d でした </h3><br>",$i,$aveage); pg_free_result($result); pg_close($con);?> </BODY> </HTML> 補 足 : 単 純 にデータベースから 抽 出 するだけではなく PHP 構 文 を 使 い 年 齢 の 平 均 及 び 総 件 数 の 算 出 を 行 っています 217

218 5.7.6 HTML のフォーム 構 文 とデータベースを 結 合 したプログラミング HTML のフォーム 構 文 を 使 い ユーザからの 指 示 に 従 い データベースに 対 しデータの 登 録 や 変 更 及 び 一 覧 表 表 示 を 行 うプログラムです 注 :データベース 参 照 / 更 新 用 プログラムは 各 自 で 完 成 させてください Conbination1.php プログラム <HTML> <HEAD> <TITLE> HTML のサンプルプログラムです </TITLE> <meta http-equiv=content-type content="text/html; charset=euc-jp"> </HEAD> <BODY bgcolor="blue"> <H2 align="center"> PHP+PostgreSql のサンプルプログラムです</H2><BR><BR><BR> <TABLE border= 1 bgcolor= #F0F000 width="800" height="10" align="center"> <CAPTION align="top"> <FORM name="myform" method="get" action="conbination2.php"> <H3> 名 簿 登 録 用 画 面 です</H3> <TR align="center" bgcolor="#f00000"> <TH> 出 席 番 号 </TH><TH> 名 前 </TH><TH> 性 別 </TH><TH> 誕 生 日 </TH><TH> 年 齢 </TH><TH> 特 技 </TH> </TR> <TR align="center"> <TD><INPUT type="text" name="number" size=12></td> <TD><INPUT type="text" name="name" size=32 ></TD> <TD><INPUT type="text" name="sex" size=5 ></TD> <TD><INPUT type="date" name="birth" size=16 ></TD> <TD><INPUT type="text" name="age" size=5 ></TD> <TD><INPUT type="text" name="speciality" size=50 ></TD> </TR> </TABLE> <CENTER> <BR><BR> <INPUT type="submit" name="cmd" value= " 新 規 データ 登 録 " width="40"> <INPUT type="submit" name="cmd" value=" 登 録 データ 変 更 " width="40"> <INPUT type="submit" name="cmd" value=" 登 録 データ 削 除 " width="40"> <INPUT type="submit" name="cmd" value= "データベース 一 覧 表 示 " width="40"> </CENTER> </FORM> </BODY> </HTML> 218

219 Conbination2.php プログラム Sampledb2 を 使 用 し 以 下 の 構 文 を 使 ってデータベースの 参 照 更 新 を 行 うプログラムです 新 規 データ 登 録 要 求 に 対 しては SQL 言 語 の INSERT 命 令 を 使 用 します 登 録 データ 変 更 要 求 に 対 しては SQL 言 語 の UPDATE 命 令 を 使 用 します 登 録 データ 削 除 要 求 に 対 しては SQL 言 語 の DELETE 命 令 を 使 用 します 一 覧 表 示 要 求 に 対 しては SQL 言 語 の SELECT 命 令 を 使 用 します if ($con == false){ print ("データベース 接 続 失 敗 "); exit; $Number=$_GET['Number']; $Name=$_GET['Name']; $Sex=$_GET['Sex']; $Birth=$_GET['Birth']; $Age=$_GET['Age']; $Speciality=$_GET['Speciality']; echo "<br>"; $Rep=""; if (!empty($_get['cmd'])): $Rep=$_GET['cmd']; endif; SWITCH ($Rep) { CASE " 新 規 データ 登 録 ": printf(" 新 規 データ 登 録 を 受 け 付 けました %s, $Number,$Name,$Sex,$Birth,$Age,$Speciality<br>",$Rep); /* INSERT 命 令 により 新 規 データを 挿 入 します */ $result=pg_query("insert INTO MemberTable VALUES('$Number','$Name','$Sex','$Birth','$Age','$Speciality')"); if ($result==false){ print("sql 実 行 に 失 敗 "); exit; データベースに 追 加 登 録 を 行 う 処 理 部 です pg_query("commit"); BREAK; CASE " 登 録 データ 変 更 ": printf(" 登 録 データ 変 更 を 受 け 付 けました %s,$number,$name,$sex,$birth,$age,$speciality <br>",$rep); $result=pg_query("update MemberTable SET Number='$Number',Name='$Name',Sex='$Sex',Birth='$Birth',Age='$Age',Speciality='$Speciality' Where Number='$Number'"); 219

220 if ($result==false){ print("sql 実 行 に 失 敗 "); exit; データベースに 対 し 指 定 されたレコードの pg_query("commit"); 内 容 変 更 を 行 う 処 理 部 です BREAK; CASE " 登 録 データ 削 除 ": printf(" 登 録 データ 削 除 を 受 け 付 けました %s,$number,$name,$sex,$birth,$age,$speciality <br>",$rep); $result=pg_query("delete FROM MemberTable WHERE Number='$Number'"); if ($result==false){ print("sql 実 行 に 失 敗 "); exit; データベースから 指 定 されたレコードを 削 pg_query("commit"); 除 する 処 理 部 です BREAK; print end; CASE "データベース 一 覧 表 示 ": $sql="select * from MemberTable order by Number"; $result=pg_query($sql); if ($result==false){ print("sql 実 行 に 失 敗 "); exit; <<<end <TABLE border="1" bgcolor="#f0f000" width="500" height="10" align="center"> <CAPTION align="top"> <H3> 受 講 生 名 簿 </H3> <TR align="center" bgcolor="#f00000"> <TH> 出 席 番 号 </TH><TH> 氏 名 </TH><TH> 性 別 </TH><TH> 誕 生 日 </TH> <TH> 年 齢 </TH><TH> 特 技 </TH> </TR> $SumAge=0; for ($i=0; $i<pg_num_rows($result); $i++){ $record=pg_fetch_array($result,$i); printf ('<TR align="center">'); $a=$record['number']; $b=$record['name']; $c=$record['sex']; $d=$record['birth']; $e=$record['age']; $f=$record['speciality']; printf("<td>$a</td><td>$b</td><td>$c</td><td>$d </TD><TD>$e</TD><TD>$f</TD> </TR>"); $SumAge=$SumAge+$e; 220

221 printf ("</TABLE>"); $AveAge=$SumAge/$i; printf('<br><h3 align="center">'); printf (" 総 人 数 は %d で 平 均 年 齢 は %d でした </h3><br>",$i,$aveage); pg_free_result($result); BREAK; データベースの 一 覧 表 を 表 示 する 処 理 部 です ; Default: printf (" %s 要 求 は 受 け 付 けられません ",$Rep); BREAK; pg_close($con);?> < 練 習 課 題 1> 以 下 の 一 覧 表 表 示 機 能 を 追 加 してください 年 齢 順 一 覧 表 出 席 番 号 順 一 覧 表 名 前 順 一 覧 表 < 練 習 課 題 2> 誕 生 日 が 入 力 された 場 合 年 齢 を 自 動 的 に 計 算 する 機 能 を 追 加 してください また 生 年 月 日 と 年 齢 が 両 方 共 に 入 力 された 場 合 生 年 月 日 から 年 齢 を 計 算 し 入 力 された 年 齢 が 正 しいかどうかを 確 認 してくだ さい ( 正 しくない 場 合 は 警 告 表 示 を 行 うものとします) データベースを 使 った 簡 易 ブログプログラム 画 像 と 表 示 コメントをデータベースに 登 録 するだけで Web ページが 自 動 的 に 作 成 / 表 示 されます weblog.php は ユーザ 対 話 画 面 により 画 像 ファイル 名 と 表 示 コメントをデータベースに 登 録 します このデータは weblogview.php プログラムにより 参 照 されます weblog.php <HTML> <head><title>weblog ページ</title> <meta http-equiv="content-type" content="text/html; charset=euc-jp"> <META name="author" content="uitec"> <META name="expires" content=" "> <META name="copyright" content="none"> <META name="reply-to" content="uitec@uitec.net"> <META name="content-language" content="ja"> <META name="build" content=" "> <meta name="robots" content="index,follow"> 221

222 <meta name="description" content="ユーアイテクノケア"> <meta name="keywords" content=" 儲 からない 会 社 "> </head> <style type="text/css"> <!-- TD { font: 12pt/20px "MS Pゴシック", "Osaka" TH { font: 12pt/20px "MS Pゴシック", "Osaka" H1 { font: 20pt/30px "MS Pゴシック", "Osaka" H2 { font: 10pt/20px "MS Pゴシック", "Osaka" H3 { font: 16pt/24px "MS Pゴシック", "Osaka" --> </style> <BODY bgcolor=silver> <CENTER> <?php echo <<<php1 <FORM ENCTYPE="multipart/form-data" ACTION="{$_SERVER['PHP_SELF']" METHOD=POST> php1;?> 画 像 ファイル 名 : <INPUT TYPE=hidden name=max_file_size value= > <INPUT NAME=uploaded TYPE=file SIZE=60> <INPUT TYPE="submit" VALUE=" 登 録 ", name="record"> <BR> <TEXTAREA rows="3" Cols="120" name="cont"> </TEXTAREA> </FORM> <HR> <?php if (!empty($_files['uploaded']['name'])){ if (move_uploaded_file($_files['uploaded']['tmp_name'], $_FILES['uploaded']['name']) == FALSE) { printf("ファイルの 移 動 に 失 敗 しました:%s<BR>\n", $_FILES['uploaded']['error']); $con=pg_connect("dbname=weblogdb"); if ($con == false){ echo "<CENTER>"; echo "<FONT size=4 color=crimson><b>"; print("データベースアクセスに 失 敗 しました "); echo "</FONT>"; echo "</CENTER>"; exit; if (!empty($_post['record'])){ 222

223 $fp=fopen("weblogcount50.txt","w"); if (flock($fp,lock_ex)){ fwrite($fp,$counter[0]); flock($fp,lock_un); $number=$counter[0]; $date=getdate(); $yymmdd=$date['year']."/".$date['mon']."/".$date['mday']; from weblogtbl50 where number=$number"); $result=pg_query("insert INTO weblogtbl50 values('$number','$name','$cont','$yymmdd','$hhmmss')"); if ($result == false){ print ("INSER 実 行 要 求 失 敗 "); exit; echo <<<php2 <IFRAME src="blogview.php" marginheight="0" margnwidth="0" width=850 height=500 align=center scrolling="yes" align=right frameborder="no" bordercolor="black" > </IFRAME> php2; pg_close($con); echo <<<EOF </CENTER> </BODY> </HTML> EOF;?> weblogview.php weblog.php で 作 成 されたデータベースを 解 析 して web ページを 作 成 し 表 示 します <HTML> <head><title>ブログページ</title> <meta http-equiv="content-type" content="text/html; charset=euc-jp"> <META name="author" content="uitec"> <META name="expires" content=" "> <META name="copyright" content="none"> <META name="reply-to" <META name="content-language" content="ja"> <META name="build" content=" "> 223

224 <meta name="robots" content="index,follow"> <meta name="description" content="ブログページ"> <meta name="keywords" content="ユーアイテクノケア"> </head> <style type="text/css"> <!-- TD { font: 12pt/20px "MS Pゴシック", "Osaka" H1 { font: 20pt/30px "MS Pゴシック", "Osaka" H2 { font: 10pt/20px "MS Pゴシック", "Osaka" H3 { font: 16pt/24px "MS Pゴシック", "Osaka" --> </style> <BODY leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" bgcolor=oldlace> <CENTER> <?php $con=pg_connect("dbname=weblogdb"); if ($con == false){ echo "<CENTER>"; echo "<FONT size=4 color=crimson><b>"; print("データベースが 正 常 に 動 作 していません "); echo "</FONT>"; echo "</CENTER>"; exit; $sql="select * from weblogtbl50 order by number if ($result==false){ print("sql 実 行 に 失 敗 "); exit; $rowcount=pg_num_rows($result); for ($i=0; $i<$rowcount; $i++){ $record=pg_fetch_array($result,$i); print ("<TABLE border=0 width=800 height=50 cellpadding=10>"); print ("<TR>"); print ("<TD width=250 height=50>"); $image=$record['image']; $yymmdd=$record['yymmdd']; $hhmmss=$record['hhmmss']; echo $yymmdd; echo " "; echo $hhmmss; if ($image > ""){ printf ("<IMG src=%s width=200>",$record['image']); print ("</TD>"); 224

225 print ("<TD width=550 height=50>"); if (!empty($record['comment'])) print nl2br($record['comment']); print ("</TD>"); print ("</TR>"); print ("</TABLE>"); PRINT ("<HR>"); pg_free_result($result); pg_close($con);?> </CENTER> </BODY> </HTML> 補 足 : Weblog プログラムを 実 行 するためには 以 下 のデータベースを 準 備 する 必 要 があります データベース 名 :webblogdb テーブル 名 :weblogtbl50 フィールド 名 :number integer,image text comment text, yymmdd date,hhmmss time 225

226 < 課 題 : 図 書 管 理 システム> 以 下 の 機 能 を 持 った 図 書 貸 出 管 理 システム(データベース 含 )を 完 成 させてください 利 用 者 登 録 プログラム 図 書 貸 出 を 利 用 できる 利 用 者 を 登 録 します 図 書 登 録 プログラム 全 ての 図 書 情 報 を 登 録 します 貸 出 返 却 登 録 プログラム 貸 出 日 返 却 日 を 登 録 します 図 書 検 索 プログラム( 図 書 一 覧 表 利 用 者 一 覧 表 未 返 却 者 一 覧 表 ) 各 種 検 索 を 行 います システムの 全 体 像 作 成 すべきデ ータベース 226

227 利 用 者 登 録 プ ログラム 図 書 登 録 プロ グラム 貸 出 返 却 登 録 プログラム 図 書 検 索 プロ グラム 227

228 < 図 書 管 理 システム 参 考 プログラム> 図 書 管 理 システムは 以 下 の HTML 言 語 で 作 成 されたユーザインターフェース 画 面 を 表 示 するプログラム に 対 して 実 処 理 を 行 うプログラムを PHP 言 語 を 使 って 作 成 し HTML プログラムの 中 に 挿 入 することによ り 完 成 させてください なお HTML で 作 成 されている 部 分 も 追 加 / 修 正 が 必 要 です なお プログラム 仕 様 に 対 する 細 かな 気 配 りは 任 意 で 行 ってください 利 用 者 登 録 処 理 プログラム <HTML> <HEAD> <title> 利 用 者 データベース 作 成 </title> <meta http-equiv="content-type" content="text/html; charset=euc-jp"> <LINK rel="stylesheet" href="tosho.css" type="text/css"> </HEAD> <BODY> <CENTER> <H1><B> 利 用 者 登 録 </B></H1> <FORM METHOD=GET ACTION=""> <TABLE width=800 height=10 border=0 cellpadding=5> <TR> <TD align=center> <B> 利 用 者 番 号 </B><INPUT TYPE="text" size=12 NAME="recno" value=""> : 半 角 <INPUT TYPE="submit" VALUE="データベース 読 込 " name="exec"> </TD> </TR> </TABLE> <HR> <TABLE width=800 height=100 border=0 cellpadding=5> <TR> <TD width=100><b> 利 用 者 名 </B></TD> <TD> <INPUT TYPE="text" size=40 NAME="namae" value=""> <B> 生 年 月 日 </B><INPUT TYPE="text" size=12 NAME="birth" value=""> 角 (yyyy-mm-dd) </TD> </TR> <TR> <TD width=100><b> 性 別 </TD> <TD> <INPUT NAME="seibetsu" TYPE="RADIO" VALUE=" 男 "><B> 男 <INPUT NAME="seibetsu" TYPE="RADIO" VALUE=" 女 "><B> 女 <INPUT NAME="seibetsu" TYPE="RADIO" VALUE="お 釜 "><B>お 釜 <INPUT NAME="seibetsu" TYPE="RADIO" VALUE="お 鍋 "><B>お 鍋 </TD> </TR> <TR> : 半 228

229 <TD><B> 住 所 </B></TD> <TD> <INPUT TYPE="text" size=100 NAME="jyusho" value=""> </TD> </TR> <TR> <TD><B> 職 業 </B></TD> <TD> <INPUT TYPE="text" size=40 NAME="shoku" value=""> <B> 電 話 番 号 </B><INPUT TYPE="text" size=20 NAME="keitai" value=""> : 半 角 </TD> </TR> <TR> <TD><B>メールアドレス</TD> <TD> <INPUT TYPE="text" size=100 NAME="mail" value=""> </TD> </TR> </TABLE> <BR> <INPUT TYPE="submit" VALUE=" 登 録 / 更 新 " name="exec"> <INPUT TYPE="submit" VALUE=" 完 全 削 除 " name="exec"> </FORM> <A href="window.close();"> 処 理 を 終 了 します </A> <HR> <H2> 利 用 者 一 覧 表 表 示 </H2> </CENTER> </BODY> </HTML> 図 書 データ 登 録 処 理 プログラム <HTML <HEAD> <title> 図 書 データベース 作 成 </title> <meta http-equiv="content-type" content="text/html; charset=euc-jp"> <LINK rel="stylesheet" href="tosho.css" type="text/css"> </HEAD> <BODY> <CENTER> <H1><B> 図 書 登 録 </B></H1> <FORM METHOD=GET ACTION=""> <TABLE width=800 height=10 border=0 cellpadding=5> <TR> 229

230 <TD align=center> <B> 図 書 番 号 </B><INPUT TYPE="text" size=12 NAME="recno" value=""> : 半 角 <INPUT TYPE="submit" VALUE="データベース 読 込 " name="exec"> </TD> </TR> </TABLE> <HR> <TABLE width=800 height=100 border=0 cellpadding=5> <TR> <TD width=80><b> 図 書 名 </B></TD> <TD> <INPUT TYPE="text" size=40 NAME="namae" value=""> <B>ジャンル </B><INPUT TYPE="text" size=20 NAME="genre" value=""> : 半 角 </TD> </TR> <TR> <TD><B> 著 者 名 </B></TD> <TD> <INPUT TYPE="text" size=40 NAME="chosha" value=""> <B> 出 版 社 名 </B><INPUT TYPE="text" size=70 NAME="shuppan" value=""> </TD> </TR> <TR> <TD><B> 保 管 場 所 </B></TD> <TD> <INPUT TYPE="text" size=40 NAME="jyusho" value=""> <B>URL </B><INPUT TYPE="text" size=70 NAME="url" value=""> </TD> </TR> </TABLE> <BR> <INPUT TYPE="submit" VALUE=" 登 録 / 更 新 " name="exec"> <INPUT TYPE="submit" VALUE=" 完 全 削 除 " name="exec"> </FORM> <A href="window.close();"> 処 理 を 終 了 します </A> <HR> <H2> 図 書 一 覧 表 表 示 </H2> </CENTER> </BODY> </HTML> 貸 出 管 理 プログラム 230

231 <HTML <HEAD> <title> 貸 出 データベース 作 成 </title> <meta http-equiv="content-type" content="text/html; charset=euc-jp"> <LINK rel="stylesheet" href="tosho.css" type="text/css"> </HEAD> <BODY> <CENTER> <H1><B> 図 書 貸 出 情 報 登 録 </B></H1> <FORM METHOD=GET ACTION=""> <TABLE width=850 height=10 border=0 cellpadding=5> <TR> <TD align=center> <B> 貸 出 番 号 </B><INPUT TYPE="text" size=12 NAME="recno" value=""> : 半 角 <INPUT TYPE="submit" VALUE="データベース 読 込 " name="exec"> </TD> </TR> </TABLE> <HR> <TABLE width=850 height=100 border=0 cellpadding=5> <TR> <TD align=center> <B> 利 用 者 番 号 </B><INPUT TYPE="text" size=8 NAME="riyoushano" value=""> : 半 角 <B> 図 書 番 号 </B><INPUT TYPE="text" size=8 NAME="toshono" value=""> : 半 角 <B> 貸 出 日 </B> <INPUT TYPE="text" size=21 NAME="kashidashi" value=""> : 半 角 <B> 返 却 日 </B><INPUT TYPE="text" size=12 NAME="henkyaku" value=""> : 半 角 </TD> </TR> </TABLE> <BR> <INPUT TYPE="submit" VALUE=" 登 録 / 更 新 " name="exec"> <INPUT TYPE="submit" VALUE=" 完 全 削 除 " name="exec"> </FORM> <A href="window.close();"> 処 理 を 終 了 します </A> <HR> <H2> 貸 出 情 報 一 覧 表 表 示 </H2> </CENTER> </BODY> </HTML> 図 書 検 索 処 理 プログラム <HTML <HEAD> 231

232 <title> 図 書 検 索 システム</title> <meta http-equiv="content-type" content="text/html; charset=euc-jp"> <LINK rel="stylesheet" href="tosho.css" type="text/css"> </HEAD> <BODY> <CENTER> <H1><B> 図 書 貸 出 情 報 検 索 システム</B></H1> <FORM METHOD=GET ACTION=""> <TABLE width=800 height=10 border=0 cellpadding=5> <TR> <TD align=center> <B>ジャンル </B><INPUT TYPE="text" size=20 NAME="genre" value=""> <B> 図 書 名 </B><INPUT TYPE="text" VALUE="" name="toshomei"> <B> 著 者 名 </B><INPUT TYPE="text" VALUE="" name="choshamei"> </TD> </TR> </TABLE> <BR> <INPUT TYPE="submit" VALUE=" 図 書 一 覧 表 " name="exec"> <INPUT TYPE="submit" VALUE=" 利 用 者 一 覧 表 " name="exec"> <INPUT TYPE="submit" VALUE=" 未 返 却 者 一 覧 表 " name="exec"> </FORM> <A href="window.close();"> 処 理 を 終 了 します </A> <HR> <H2> 検 索 結 果 一 覧 表 表 示 </H2> </CENTER> </BODY> </HTML> Web サーバ 構 築 と 各 種 プログラミング tosho.css H1{color:crimson;background-color:deepskyblue;font-size:20pt; H2{color:navy;font-size:16pt; TD{color:#000066;background-color:orange;font-size:9pt; TH{color:#001166;background-color:orange;font-size:9pt; TABLE{background-color:orange;border-color:grey;border-width:thick; INPUT{background-color:orange;border-color:grey;border-width:thin; 232

233 第 6 章 Web を 理 解 する 上 での 予 備 知 識 6.1 プログラムの 分 類 プログラムの 形 態 として 基 本 的 には3 種 あり これらは 目 的 とするプリグラムの 形 態 により 機 能 面 性 能 面 汎 用 面 などを 考 慮 し 使 用 される 必 要 があります 補 足 1: 各 種 のプログラム 言 語 を 外 国 語 というカテゴリで 分 類 した 場 合 以 下 のようになります また これら の 言 語 を 全 て 理 解 し コンピュータが 理 解 してくれる 言 葉 に 置 き 換 えてくれるのが コンパイラなどと 呼 ばれる 言 語 プロセッサ(ソフトウェア)なのです 第 1 外 国 語 第 2 外 国 語 :アセンブラ :COBOL 233

234 第 3 外 国 語 :FORTLAN 第 4 外 国 語 :HTML XML 第 5 外 国 語 :C 言 語 ( 方 言 1) Java( 方 言 2) Java スクリプト( 方 言 3) VB( 方 言 4) PHP( 方 言 5) Perl( 方 言 6) 補 足 2: 第 5 外 国 語 の 主 な 構 文 の 違 い 対 象 構 文 VB C PHP IF 構 文 If 条 件 式 then ステートメント If( 条 件 式 ){ ステートメント; If( 条 件 式 ){ ステートメント; elseif 条 件 式 then else if ( 条 件 式 ){ else if ( 条 件 式 ){ ステートメント ステートメント; ステートメント; endif または If( 条 件 式 ): ステートメント; elseif ( 条 件 式 ): ステートメント; endif; CASE 構 文 Select case 評 価 データ Switch( 変 数 ){ Switch( 変 数 ){ Case 条 件 : Case 条 件 : Case 条 件 : ステートメント ステートメント; ステートメント; case else: break; break; ステートメント default: default: end select ステートメント; ステートメント; break; break; FOR 構 文 For 変 数 =0 to 99 step 1 ステートメント For( 変 数 =0; 変 数 <99; 変 数 ++){ ステートメント; For( 変 数 =0; 変 数 <99; 変 数 ++){ ステートメント; next 変 数 変 数 構 文 Dim 変 数 名 As integer Int 変 数 名 ; 先 頭 に$を 付 けると 変 数 を 見 なさ その 他 その 他 れる < 注 意 > < 注 意 > 変 数 は 自 動 的 に 確 保 され その 変 数 省 略 も 可 能 ( 省 略 時 はバリアント 省 略 不 可 に 値 が 挿 入 される 時 に その 値 によ 型 となる) り 型 が 決 められる 補 足 : 234

235 JavaScript は 基 本 的 には C 言 語 を 同 じような 構 文 であるが 変 数 宣 言 に 関 しては var 変 数 名 と いう 一 通 りの 構 文 で 定 義 します また データの 型 に 関 しては PHP 同 様 に 設 定 される 値 で 決 まります PHP と JavaScript の 構 文 の 違 いとしては function 構 文 の 外 に 定 義 した 変 数 を function の 中 で 見 れ るか 否 かが 異 なります PHP は 外 で 定 義 されたものを 参 照 する 場 合 は global 定 義 が 必 要 となりますが JavaScript の 場 合 は 自 動 的 に 参 照 できます また JavaScript には Case 構 文 はありません #include<stdio.h> main(){ int counter; int goukei; goukei=0; for (counter=1;counter<=10;counter++){ goukei=goukei+counter; printf("%d の 加 算 合 計 :%d\n",counter,goukei); <HTML> <BODY> <?php $goukei=0; for ($counter=1;$counter<=10;$counter++){ $goukei=$goukei+$counter; printf("%d の 加 算 合 計 :%d<br>",counter,goukei);?> </BODY> </HTML> 上 記 2つのプログラムは 変 数 の 扱 い(C 言 語 は 変 数 の 定 義 が 必 要 なのに 対 して PHP は 変 数 名 が$ではじまり 変 数 の 宣 言 の 必 要 はない)と 改 行 の 扱 い(C 言 語 では n で 改 行 を 定 義 しているが PHP では ブラウザが 扱 う 関 係 で<BR>タグを 宣 言 している) が 異 なるだけで 全 く 同 じであることが 分 かります 235

236 6.2 ソフトウェアの 基 本 的 な 構 成 パソコンやワークステーションに 搭 載 されている 一 般 的 なソフトウェアの 構 成 は 以 下 のようになって います OS の 無 いワンチップマイクロコンピュータ 上 でソフトウェアを 開 発 する 場 合 は アプリケーショ ンとデバイスドライバーを 作 成 するような 開 発 形 態 となります 236

237 進 数 2 進 数 8 進 数 16 進 数 表 記 の 関 係 私 たちは 通 常 10 進 数 表 記 ( 演 算 )を 使 用 していますが コンピュータの 世 界 は2 進 数 ( 電 気 的 には ON と OFF の 世 界 )で 動 作 しています 以 下 にこの 関 係 を 紹 介 します 整 数 部 表 記 237

238 6.3.2 小 数 部 表 記 補 足 : 整 数 部 と 小 数 部 の 組 み 合 わせの 関 する 関 連 238

239 6.4 データの 型 宣 言 と 記 憶 形 態 プログラムにおいてデータの 型 を 宣 言 した 場 合 その 設 定 により 格 納 される 形 態 は 大 きく 異 なります 性 能 を 重 視 するプログラムを 作 成 する 場 合 は これにより 型 変 換 処 理 も 大 きく 影 響 しますので 注 意 が 必 要 です バイト 型 (Byte) 通 常 は8ビット 構 成 各 ビットの ON/OFF でデータが 格 納 されます 例 えば S-JIS (2 進 数 では )というコードを 格 納 した 場 合 上 記 の 各 ビットの 値 は 以 下 となります 整 数 型 (INT) 通 常 は16ビット 構 成 で 正 負 の 値 を 持 つ 負 数 は 2の 補 数 で 定 義 される 最 上 位 ビットは 正 負 の 符 号 として 使 用 される S S :の 場 合 は1 正 の 場 合 は0となります 2 0 ~2 15 : 実 際 の 数 値 が 入 ります 但 し 負 の 場 合 は2の 補 数 が 入 ります 正 の 数 字 の1は 以 下 となります 負 の 数 字 の1は 以 下 となります 補 足 : 2の 補 数 とは 全 てのビットを 反 転 させ 1を 加 えた 値 (0の 補 数 は 反 転 のみ)で 表 されます 反 転 して2の 補 数 にしたものを 元 の 数 値 に 戻 すには 上 記 同 様 に 各 ビットを 反 転 させ 1を 加 え ます 上 記 から 負 の 最 小 値 は ( 符 号 ビットのみ1の 状 態 )となり 最 大 値 は ( 符 号 は0)となります この2の 補 数 で 格 納 する 理 由 は 補 数 による 演 算 の 項 を 参 照 ください 浮 動 小 数 点 型 (Float) 符 号 指 数 部 仮 数 部 から 構 成 される 符 号 は 正 負 を 示 す 239

240 指 数 部 は 規 格 により 基 数 が2であったり16であったりするが その 時 のべき 乗 が 設 定 される 尚 定 義 は 規 格 により 異 なる 仮 数 部 は 小 数 部 であり この 小 数 部 に 基 数 のべき 乗 倍 したものが 数 値 となる 通 常 は32ビット 構 成 64ビット 構 成 であるが 指 数 部 と 仮 数 部 の 配 分 は 規 格 に より 異 なる S 指 数 部 仮 数 部 S : 符 号 で 正 が0 負 が1となります 指 数 部 : 基 数 ( 通 常 メーンフレームは16 パソコンなどは2を 採 用 しています)に 対 する 乗 数 (16 6 であれば 6)が 保 存 されます 仮 数 部 : 小 数 点 以 下 の 部 分 を 格 納 します 小 数 点 以 下 のデータを 格 納 する 方 法 は 前 項 の 小 数 部 表 記 と 同 じ 方 法 で 行 います 2を 基 数 とした 浮 動 小 数 点 表 記 の 場 合 は 格 納 したいデータを 2 n x0.xxxx の 形 式 に 変 換 し n の 部 分 を 指 数 部 に 0.xxxx の 部 分 を 仮 数 部 に 符 号 を S に 保 存 します 但 し 2を 基 数 とした IEEE の 規 格 では 小 数 部 の 有 効 桁 を 尐 しでも 増 やすために 2 n x1.xxxxとし 1の 部 分 は 保 存 しないようにし 整 数 に 戻 す 時 に 暗 黙 で1を 含 める 形 式 をとります 補 足 : Windows システムが 採 用 している IEEE の32ビット 構 成 における 浮 動 小 数 点 表 現 のビット 配 分 は 以 下 となります S :1ビット 指 数 部 :8ビット 仮 数 部 :23ビット を 32ビットの IEEE 方 式 で 保 存 した 場 合 の 内 容 は 以 下 の 通 りです =-(26x ) 文 字 列 (String) ASCII,JIS EUC など 様 々な 規 格 があるが この 規 格 で 定 義 されたコードが 設 定 される この 作 成 されたコードと 参 照 しようとするコード 指 定 が 異 なる 場 合 は 字 化 けがおきる 例 えば Unix 系 で 作 成 される 文 書 は EUC コードであるが これを Windowsで 参 照 した 場 合 SJIS で 参 照 してしまう 為 に 字 化 けが 起 きてしまう まともに 見 る 場 合 は 文 字 コードを 切 り 替 えなければならない 各 ビットには 採 用 された 文 字 コード 表 に 従 って 対 応 するコードが 格 納 されます 勿 論 この 格 納 されているコードの 体 系 で 参 照 しない 場 合 は 正 しく 参 照 できない( 文 字 化 けとな ります)ことになります 240

241 論 理 値 型 (Bool) TRUE,FALSE を 定 義 する 型 である この 型 では 対 応 する 環 境 により 2 進 数 の0と1で 設 定 される 形 式 や 文 字 列 で True,False と 格 納 される 形 式 があります 補 足 :2の 補 数 により 格 納 する 理 由 整 数 における 負 の 表 記 を2の 補 数 で 行 う 理 由 は 負 の 数 値 が 格 納 されているメモリーとの 演 算 が 簡 単 な 仕 組 みで 実 現 できる 部 分 になります 例 えば 負 の 数 が 保 存 されている 領 域 との 加 算 処 理 を 行 う 場 合 保 存 されている 内 容 が 正 か 負 かを 判 断 し 加 算 回 路 を 実 行 させるか 減 算 回 路 を 実 行 させるかを 判 断 するので は 処 理 が 多 くなります もし メモリ 内 に 記 録 されている 内 容 が 正 であっても 負 であっても 同 じ 演 算 方 法 で 結 果 が 出 せれば 演 算 回 路 はシンプルとなります この 目 的 を 実 現 したので 補 数 による 演 算 なのです 以 下 に 補 数 演 算 について 紹 介 します 241

242 補 足 : コンピュータが 扱 う 型 と 内 容 を 要 約 すると 以 下 となります 242

243 6.5 オブジェクト 指 向 プログラミング PHP 言 語 や VB でプログラミングを 行 った 場 合 必 然 的 にオブジェクト 指 向 プログラミングとなります その 理 由 は PHP や VB の 開 発 環 境 がオブジェクト 指 向 の 上 に 立 って 存 在 することにあります では オブ ジェクト 指 向 プログラミングとはどんなものでしょう オブジェクト 指 向 というと 難 解 な 言 葉 が 飛 び 交 い ます クラス インスタンス オブジェクト 隠 蔽 継 承 プルモフィズム などなどです 頭 の 良 い 方 はこのような 内 容 を 簡 単 に 理 解 されるようですが 私 たち 凡 人 になかなか 取 っ 付 き 難 いのが 現 状 と 思 います ここで 簡 単 な 概 念 からオブジェクト 指 向 プログラミングを 見 てみたいと 思 います もし 円 を 描 くプログラムを 作 りたいとします 但 し このプログラムが 描 く 円 は 色 大 きさ 縁 取 り などなど 様 々な 対 応 を 行 うものとします このプログラムを 実 現 する 方 法 として 引 数 や 共 通 領 域 にデ ータをおき 要 求 したい 内 容 を 書 き 込 んでから 処 理 を 要 求 するという 方 法 もあります ですが この 方 式 ですと 設 定 すべき 内 容 が 膨 大 になり しかも 要 求 する 時 点 で 動 的 に 設 定 するなど 運 用 が 極 めて 煩 雑 に もなります もしこのプログラムが 自 分 の 中 に 外 部 からの 要 求 に 関 係 する 情 報 を 保 持 し その 情 報 を 外 部 の 要 求 数 分 スタティックに 準 備 できれば そのプログラムの 利 用 者 は 自 分 が 処 理 したい 内 容 が 登 録 されている 情 報 を 指 定 するだけで 済 むことになります では このプログラムが 持 つ 情 報 を 処 理 内 容 ごとに 変 更 し 別 々のプログラムとして 定 義 できたらどう でしょう また そのプログラムの 一 部 を 自 前 のものと 置 き 換 えることができたらどうでしょう 利 用 者 にとり あたかも 別 々のプログラムが 必 要 な 分 だけ 取 得 できたことと 同 じになります 勿 論 それらに 対 する 利 用 法 は 同 じであるはずです これを 実 現 しているのがオブジェクト 指 向 プログラミングなのです まず 最 初 に 登 場 する 処 理 と 処 理 情 報 を 併 せ 持 ったものがクラスで このクラスから 利 用 者 が 必 要 とす る 各 種 のプログラムを ベースとなるプログラムから 別 名 で 複 製 (これがオブジェクトとなります)でき たらどうでしょうか また その 各 々のオブジェクトの 情 報 が 処 理 内 容 ( 色 は 赤 形 状 は 楕 円 大 きさ など)に 合 わせ て 別 々に 設 定 できれば(そのオブジェクト 名 を 介 して) 或 いは 一 部 を 独 自 作 成 分 と 入 れ 替 えられれば 期 待 した 処 理 数 分 のプログラムを 手 に 入 れたと 同 じことになります 勿 論 それらのオブジェクトに 対 する 要 求 方 法 も 全 く 同 じになるのですから 非 常 に 便 利 になるとは 思 い ませんか これが オブジェクト 指 向 プログラミングの 考 え 方 になります このオブジェクト 名 を 介 さないと 処 理 に 関 連 する 情 報 は 設 定 できないことから この 部 分 の 情 報 が 外 部 から 隠 蔽 されていると 定 義 しています また クラスで 定 義 されている 情 報 は そのままオブジェクト に 反 映 されますので 利 用 者 は その 中 で 必 要 な 部 分 だけを 設 定 すればよく また 入 れ 替 えることがで きることから この 部 分 を 継 承 と 定 義 しています 勿 論 処 理 内 容 を 定 義 するような 情 報 は 予 めオブジェクト 名 を 介 して 設 定 されているのですから 各 々 のオブジェクトに 対 する 要 求 方 法 も 同 じとなります これを ポリモフィズムと 定 義 しているのです なお オブジェクトとインスタンスは 同 じ 概 念 となります 補 足 :PHP では INCLUDE や Require コマンドにより 継 承 機 能 が 実 現 されます 243

244 原 始 プログラミング 体 系 ( 個 別 ライブラリ) 第 1 次 進 化 プログラミング 体 系 ( 共 通 ライブラリ) 第 2 次 進 化 プログラミング 体 系 (オブジェクト) 244

245 6.6 文 字 コードについて 文 字 コードとは 画 面 上 に 表 示 したい 文 字 を 内 部 的 にどのような 数 値 で 表 現 するかを 規 定 したものです 対 象 となるデータを 画 面 等 に 表 示 する 場 合 そのデータが 想 定 している 文 字 コード( 規 定 )に 合 わないコード( 規 則 )で 画 面 に 表 示 した 場 合 は そのデータを 正 しく 表 示 できない( 文 字 化 け)こととなります この 文 字 コードの 代 表 となるのが ASCII コード であり この ASCII コードを 基 準 に 日 本 語 を 含 めた 多 国 語 コードが 作 られています ASCII コード ASCII とは American Standard Code for Information Interchange の 略 で 日 本 語 では 情 報 交 換 用 米 国 標 準 符 号 と 訳 されます このコードは 英 数 字 ( 大 文 字 小 文 字 ) 及 び 幾 つかの 標 準 的 な 特 殊 文 字 を 規 定 しているもので 基 本 的 には 他 のコードと 共 通 となって います この ASCII コードは 7ビット(0x00~0x7f)で 表 現 されています 245

246 補 足 : 上 記 以 外 にも メインフレームで 利 用 されている EBCDIC コードなど いろいろの 文 字 コードが 使 用 され ています 外 部 から 入 手 したデータが どのような 文 字 コードで 作 成 されたかを 常 に 意 識 する 必 要 がある と 言 うことになります 以 下 に EBCDIC コードにおける 英 数 字 のコード 定 義 を 紹 介 します 246

247 6.7 暗 号 化 のベースとなる 仕 組 み 247

248 248

249 6.8 コンピュータを 取 り 巻 く 技 術 の 進 化 ディジタルコンピュータの 原 型 といわれるソロバンが 登 場 したのが14 世 紀 ごろであり それ 以 降 様 々 な 進 化 を 遂 げながら 現 在 のコンピュータに 到 達 しました この 進 化 の 過 程 を 省 みながら コンピュータが 今 後 どのように 変 化 するのかを 考 えて 見 ましょう 時 期 ハードウェア 側 面 ソフトウェア 側 面 補 足 14 世 紀 中 国 でそろばんが 使 われ 始 めました そろばんはディジタル 式 計 算 機 に 分 類 されています 1617 年 対 数 の 考 え 方 を 使 った 計 算 尺 (ネーピアの 棒 )スコット ランドの 数 学 者 ネーピアにより 考 案 されました 1622 年 ネーピアの 棒 を 現 在 の 計 算 尺 と 同 等 のものに 英 国 の 数 学 者 オートレッドにより 改 良 されました 計 算 尺 は 定 規 をスライド するなど 数 値 を 連 続 的 に 扱 うことからアナログ 式 計 算 機 に 分 類 されています 1642 年 歯 車 を 使 った 加 減 算 ができる 計 算 機 (パスカリーヌ)が フランスの 学 者 パスカルにより 発 明 されました 1670 年 代 加 減 乗 除 のできる 歯 車 式 計 算 機 が ドイツの 学 者 ライプ ニッツにより 発 明 されました 明 治 時 代 タイガー 計 算 機 ( 大 本 寅 治 郎 により 改 良 )が 卓 上 計 算 機 として 普 及 しました 1820 年 演 算 処 理 と 記 憶 処 理 を 分 離 し プログラムの 考 え 方 を 採 用 した 解 析 機 関 を 英 エイダ 伯 爵 夫 人 が この 解 析 機 関 で 動 作 するプログラムを 作 ったことから 人 類 初 のプログラムを 作 ったと 言 われる ようになりました 国 の 発 明 家 バベッジが 考 案 しました ( 実 現 はでき ませんでしたが コンピュ ータの 父 と 呼 ばれるよう になりました) 1854 年 英 国 のブールにより 真 と 偽 の2つの 値 を 使 う 論 理 学 が 提 唱 されました つまり 0と1の 演 算 を 行 える ものを 作 れば 全 ての 計 算 が 可 能 であることを 提 唱 したの です 1938 年 Z1 シリーズ という 機 械 式 計 算 機 がドイツのツーゼに より 開 発 されました (Z1 の 改 良 版 である Z2 は リレー を 使 って 電 気 の ON/OFF を 行 っていました ) 1939 年 ABC というリレーと 真 空 管 を 使 った 電 子 計 算 機 が ア 249

250 メリカのアタナソフにより 開 発 されました 1943 年 真 空 管 を 使 った COLOSSUS という 電 子 計 算 機 が イギ リスで 暗 号 解 読 用 に 開 発 されました 1944 年 プログラムにより 動 作 するコンピュータ(MARKⅠ)が アメリカのエイケン(ハーバード 大 学 )と IBM の 協 力 に より 完 成 しました 1946 年 真 空 管 を1800 本 ( 重 量 30t) 使 った ENIAC コン ピュータが アメリカのモークリーとエッカート(ペン シルベニア 大 学 )により 大 砲 の 砲 弾 の 落 下 位 置 計 算 用 として 開 発 されました ( 計 算 手 順 は スイッチの 切 り 替 えや 信 号 線 の 切 り 替 えを 手 動 で 行 っていました ) 1948 年 トランジスター が アメリカのベル 研 究 所 のショッ クレーらにより 開 発 されました 1949 年 フォンノイマンが 提 唱 するプログラム 内 臓 方 式 (フォン ノイマン 型 )を 採 用 した EDSAC コンピュータが 英 国 のウイルクス(ケンブリッジ 大 学 )を 中 心 に 開 発 されま した これ 以 降 のコンピュータ は 高 速 化 大 量 化 小 型 化 低 価 格 化 が 進 んだだけ で 基 本 的 な 考 え 方 は 何 も 変 わっていないのが 実 状 で す コンピュータも 1950 年 代 終 わりには 真 空 管 に 代 わりトランジスターが 採 用 され 1960 年 代 には IC へと 切 り 替 わって 行 きました アーキテクチャーとしては 小 石 そろばん 計 算 尺 歯 車 式 計 算 機 バベッジの 解 析 機 関 ノイ マン 型 コンピュータへと 進 化 したことになります コンピュータの 主 要 構 成 素 子 としては リレー 真 空 管 トランジスター IC(LSI 含 む)と 進 化 したことになります 主 要 なコンピュータの 形 態 は 汎 用 大 型 コンピュータ ミニコンピュータ ワークステーション パソコンへと 切 り 替 わって 行 きました ( 勿 論 汎 用 コンピュータはメインフレームとして パソコ ンはパーソナルユースとして 共 存 しています またそれ 以 外 のスーパーコンピュータやワークステ ーションなども それぞれの 分 野 で 共 存 しています ) 1951 年 商 用 コンピュータである UNIBAC が ENIAC の 開 発 メ ンバーであったモークリーとエッカートにより 開 発 さ れ レミントン ランド 社 から 発 売 されました 1952 年 IBM は IBM701 を 発 売 し コンピュータ 業 界 の 主 導 権 を 握 りました 1955 年 大 型 コンピュータ 用 OS が ノースアメリカ 航 空 で 開 発 さ れました 1957 年 科 学 技 術 計 算 用 高 級 言 語 として FORTLAN が IBM のジョ 250

251 ンバッカスにより 開 発 され IBM704 に 搭 載 されました 1959 年 事 務 計 算 用 高 級 言 語 として COBOL がグレース ホッパ ー( 女 性 )により 開 発 されました BASIC 言 語 が アメリカ BASIC: のダートマス 大 学 の 教 授 ジ Beginner s All-Purpose ョン ケニーとトーマス カ Symbolic Instruction ーツにより 開 発 されました Code 1960 年 ALGOL が 登 場 し 後 の C 言 語 や Java 言 語 に 影 響 を 与 ALGOL: Algorithmic Language えました 1964 年 IBM は IBM360 を 発 売 し OS/360 を 開 発 し IBM360 に 搭 載 しました コンピュータ 業 界 で 不 動 の 地 位 を 築 きました (CPU のみでのアップグレード 機 能 も 実 現 されています) 1965 年 DEC 社 により 低 価 格 ミニコン PDP-8 を 一 般 企 業 や 研 究 所 用 に 発 売 されました 1960 年 代 には 軍 事 用 OS とした MULTICS が MIT AT&T 及 び GE の 共 同 で 開 発 されました ま た TSS 機 能 を 搭 載 した Unix が ベル 研 究 所 のケン トンプソン 達 により 開 発 されました 1970 年 代 には Unix オペレーティングシステムが ミニコンピュータ 用 OS として 浸 透 した また この Unix オペレーティングシステムのソフトウェア 開 発 言 語 が 1973 年 にアセンブ ラから C 言 語 へと 切 り 替 えられました ( 他 のコンピュータへの 移 植 が 容 易 になりました) 1980 年 代 には この Unix はワークステーションやスーパーコンピュータにも 搭 載 されるように なりました 1970 年 半 ばには 1000 個 以 上 のトランジスターが 搭 載 された LSI が 登 場 次 いで 10 万 個 以 上 のトランジスタを 搭 載 した 超 LSI が 登 場 しました また 1つのパッケージにコンピュータ 機 能 ( 演 算 と 制 御 )を 全 て 収 めたマイクロコンピュータも 開 発 されました 1960 年 代 後 半 には アメリカのダグラス エンゲルバードにより GUI が 考 案 されましたが 当 時 のコンピュータでは 性 能 不 足 の 為 に 業 界 では 受 け 入 れられませんでした 1969 年 マイクロコンピュータ 4004 が Intel 社 により 開 発 / 販 売 されました インターネットの 原 型 を 言 われた ARPANET( 米 国 防 総 省 )が 運 用 を 開 始 しました 1974 年 CP/M という OS がゲーリ CP/M: ーキルドールにより 開 発 さ Control Program for れ 爆 発 的 に 普 及 しました Micro Computer (Unix の 影 響 を 受 けた OS で 251

252 すが TSS 機 能 はありません でした) 世 界 初 のパソコン アルテ ア が アメリカの MITS 社 から 発 売 されま した (KB もモニタもない 箱 と ビルゲイツは アルテア に 搭 載 する BASIC 言 語 を 開 発 し MITS 社 に 売 り 込 み 採 用 されたことにより 爆 発 BASIC はパソコンの 定 番 と なりました この 後 にビル ゲーツはマイクロソフト 社 を 設 立 します スイッチだけのもので Intel8080CPU が 搭 載 されていました ) 的 な 利 益 を 得 ました 1981 年 IBM が PC を 初 めて 発 売 (Intel の CPU を 搭 載 しま GUI を 搭 載 した アルト コンピュータがゼロックスのパ ロ アルト 研 究 所 のアランケイにより 試 作 されました し)しました 1983 年 GUI を 搭 載 した リサ がアップル 社 より 発 売 されました ( 高 額 である 理 由 から 普 及 はしませんでした) ARPANET に TCP-IP プロトコルが 導 入 されました 1984 年 アップル 社 により GUI を 搭 載 した マッキントッシュ が 低 価 格 で 発 売 され 爆 発 的 なヒットとなりました 1984 年 IBM により オープンアー キテクチャの PC/AT が 発 売 されました IBM-PC 用 OS である PC-DOS が マイクロシステム 社 (IBM 社 の 依 頼 により 開 発 )により 開 発 され IBM/PC に 搭 載 され ました また MS-DOS と いう 名 前 で PC 互 換 機 にも 搭 載 されました マイクロソフトは シアト ルコンピュータプロダクツ 社 から Intel8086CPU(IBM PC/AT に 搭 載 された CPU)に 搭 載 する OS を 権 利 ごと 購 入 し PC-DOS として 作 り 変 えました 1985 年 Window がマイクロソフト 社 から 発 売 されましたが 機 能 及 び 性 能 面 で 極 めて 不 評 でした ( 特 にマッキントッ シュの 操 作 性 に 比 較 して 务 っていました) 1986 年 NSFNET( 全 米 科 学 財 団 )が 拠 点 大 学 のスーパーコンピュ ータを 結 ぶネットワークを 開 始 しました 1991 年 パソコン 用 Unix である Linux オペレーティングシ ステムが フィンランドの 大 学 生 リーナス トーバルズに より 開 発 され オープンソースにてインターネット 上 で 無 料 公 開 されました (Linux は リーナス トーバルズと Unix の 合 成 語 です) インターネットの 爆 発 的 ヒットのきっかけとなった ワー ルドワイドウェーブ(WWW)が 開 発 されました 1994 年 日 本 の 首 相 官 邸 がインターネットに 接 続 されました 252

253 また 日 本 郵 政 省 がホームページを 開 設 しました 1995 年 マッキントッシュ 並 みの GUI を 搭 載 した Windows95 が マイクロソフト 社 より 発 売 され 爆 発 的 なヒットとなり ました Windows95 は IBM 互 換 機 の 全 てに 適 用 できるこ とから あらゆる 分 野 に 浸 透 することになりました 結 局 マッキントッシュが 発 売 された10 年 後 に マ ッキントッシュ 相 当 のユー ザインターフェースを 持 っ た Windows が 登 場 したこと になります 1995 年 ~ 1998 年 には CD-RW が 登 場 し 2001 年 には DVD-ROM が 登 場 その 後 は DVD-RW などへと 次 々と 進 化 を 続 けています 企 業 向 け OS として WindowsNT Windows2000 へ 個 人 向 け OS として Windows98(USB や IE 搭 載 ) WindowsME(マ ルチメディア 対 応 )へ また それらの 統 合 版 としての WindowsXP(eXPerience)へと 進 化 を 続 け マイクロソフ ト 社 の 独 占 的 な 地 位 を 確 立 して 行 きました ディジタル: ラテン 語 で 指 という 意 味 で 指 を 使 って 数 を 数 える 時 に 指 を 伸 ばすか 折 り 曲 げるかの2 通 りしか ないことからきている まとめ: このように コンピュータの 原 型 が 考 案 されて 以 来 コンピュータの 仕 組 みそのものは 進 化 しておら ず 小 型 化 高 速 化 大 容 量 化 共 通 化 及 びソフトウェア 分 野 のみが 大 きく 変 化 して 来 たことが 伺 え ます この 傾 向 は これからもしばらく 続 くことが 予 想 されます このように 見 ると これからのパソ コンは 独 立 に 構 成 される 装 置 としてではなく コンピュータそのものがあらゆる 物 に 変 形 し 或 いはあ らゆる 場 所 に 設 置 され 入 力 装 置 と 表 示 装 置 さえ 持 っていれば そこからワイアレス 通 信 により コン ピュータを 使 ったいろいろの 処 理 が 実 現 できる 時 代 が 来 ると 考 えられます つまり 家 庭 内 も 含 めた 様 々な 電 化 製 品 や 自 動 車 などが 大 きなネットワーク(ワイレスを 中 心 とした)に 接 続 され 何 時 でも どこからでも 小 さな 端 末 ( 携 帯 端 末 のようなもの) 扱 い 易 い 端 末 (ノートのような 薄 型 入 出 力 端 末 ) を 使 って ワイアレスにアクセスし 制 御 できる 仕 組 みです これからの 時 代 は 団 塊 の 世 代 が 高 齢 化 を 迎 えますので 今 までに 経 験 の 無 い 高 齢 化 の 時 代 がやってきます この 高 齢 化 に 向 けて 個 々 人 に 合 った 機 能 やアクセス 装 置 の 分 野 が 大 きく 様 変 わりするだろうことが 予 想 されます ですが 基 本 的 な 仕 組 みに 関 しては 今 の 延 長 線 上 で 暫 くは 続 くものと 思 われます 253

254 第 7 章 最 終 課 題 7.1 スクリプトプログラミング 西 暦 を 和 暦 に 変 換 表 示 するプログラムです 以 下 の 仕 様 に 従 ってプログラムを 完 成 させてください ベースプログラムは 以 下 とします kadai1.php Expand.inc 正 しい 形 式 で 西 暦 が 入 力 され 和 暦 変 換 ボタンがクリックされた 場 合 は 西 暦 を 和 暦 に 変 換 し て 表 示 します 変 換 を 行 った 日 付 と 変 換 結 果 は 以 下 の 画 面 のように 表 示 します 変 換 を 行 った 内 容 は $_SESSION 変 数 に 保 存 しておき 履 歴 変 換 処 理 毎 に 一 緒 に 表 示 します ( 新 しい 変 換 内 容 順 に 表 示 します) 初 期 化 ボタンがクリックされた 場 合 は 履 歴 を 含 め 初 期 状 態 にします 表 記 された 内 容 に 従 って 完 成 させてください kadai1.php <?php // // 入 力 画 面 の 表 示 // function display_input_area() { require("expand.inc"); // $yyyy,$mm,$dd の 展 開 print <<<EOD <HTML> <BODY> <CENTER> <FONT size=5> ビジネス 情 報 システム 科 課 題 (1) </FONT> <FORM METHOD=POST ACTION="{$_SERVER['PHP_SELF']"> 西 暦 <INPUT TYPE="text" NAME="yyyy" SIZE="5" VALUE="$yyyy"> 入 力 画 面 の 作 254

255 </FORM> </CENTER> </BODY> </HTML> EOD; // // 入 力 値 のチェック // function date_is_valid() { require("expand.inc"); // $yyyy,$mm,$dd の 展 開 if (! ereg("^[0-9]{4$", $yyyy)) return FALSE; if (! ereg("^(0?[1-9] 1[0-2])$", $mm)) return 月 3 月 5 月 7 月 8 月 10 月 12 月 は31 日 月 4 月 6 月 9 月 11 月 は30 日 月 には28 日 か29 日 割 れるか 400で 割 れて 100で 割 れなければ29 // // 元 号 の 計 算 // 返 り 値 : 計 算 結 果 の 文 字 列 // function calc_wareki() { require("expand.inc"); // $yyyy,$mm,$dd の 展 開 $border = array( array(" 開 始 日 "=> , " 終 了 日 "=> , " 元 号 "=>" 明 治 "), array(" 開 始 日 "=> , " 終 了 日 "=> , " 元 号 "=>" 大 正 "), array(" 開 始 日 "=> , " 終 了 日 "=> , " 元 号 "=>" 昭 和 "), array(" 開 始 日 "=> , " 終 了 日 "=> , " 元 号 "=>" 平 成 ") ); $target = sprintf("%04d%02d%02d", $yyyy, $mm, 無 い 変 換 日 が 指 定 されたらエラーで 返 す@@@@@ for ($i=0;!empty($border[$i]); $i++) 指 定 された 西 暦 がどの 和 暦 に 含 まれるかのチェックし 適 合 したら 以 下 の 処 理 を 行 う@@@@@@@ $wareki = $yyyy - substr($border[$i][' 開 始 日 '], 0, 4) + 1; break; if ($i > 3) return " 計 算 対 象 外 "; return sprintf("%s%s 年 %d 月 %d 日 ", $border[$i][' 元 号 '], ($wareki == "1")? " 元 " : $wareki, $mm, $dd); // // メイン // /* session_start(); */ // セッションを 開 始 / 復 帰 require("expand.inc"); display_input_area(); // $yyyy,$mm,$dd の 展 開 // 入 力 エリアの 表 示 255

256 if (!empty($_post['clear'])) { // 初 期 化 が 押 された if (!empty($_session['hist'])) { unset($_session['hist']); // 履 歴 を 破 棄 exit; if (date_is_valid()) { // 入 力 のチェック $wareki = calc_wareki(); // 元 号 の 計 算 $result = sprintf(" 西 暦 %d 年 %d 月 %d 日 は%s です <br>\n", $yyyy, $mm, $dd, $wareki); else { if (!empty($yyyy)!empty($mm)!empty($dd)) { print("<font color=red> 日 付 の 入 力 が 誤 っています</font>\n"); if (!empty($result)) { // 履 歴 に 追 加 & 表 示 $hist =!empty($_session['hist'])? $_SESSION['hist'] : に 変 換 した 内 容 と 履 歴 を 再 登 録 して 画 面 に 表 Web サーバ 構 築 と 各 種 プログラミング expand.inc <?php $yyyy =!empty($_post['yyyy'])? $_POST['yyyy'] : ""; $mm =!empty($_post['mm'])? $_POST['mm'] : ""; $dd =!empty($_post['dd'])? $_POST['dd'] : "";?> 256

257 7.2 データベース 連 携 の 基 本 温 度 データベースの 内 容 を 表 示 するプログラムです 以 下 の 仕 様 に 従 って データベースとプログラム を 完 成 させてください 添 付 のプログラムに 合 わせてデータベースを 作 成 してください データベース 名 :tenkidb テーブル 名 :otenki 項 目 と 属 性 : day DATE tenki TEXT ondo INTEGER uryou INTEGER INSERT 構 文 例 : INSERT INTO otenki VALUES( 2004/11/5, 晴 れ,30,10); 表 記 された 内 容 に 従 って 完 成 させてください kadai2.php <html> <head><title>example 1</title></head> <body> データベースに 接 続 if ($con == false) { print("データベースに 接 続 できませんでした 理 由 : $php_errormsg<br>\n"); exit; $sql = "SELECT day AS 年 月 日, tenki AS 天 気, ondo AS 温 度, uryou AS 雤 量 FROM otenki ORDER BY select を 実 行 if ($result == false) { printf("sql 実 行 に 失 敗 しました 理 由 : ". pg_last_error($con)); 257

Microsoft PowerPoint - InfPro_I9.pptx

Microsoft PowerPoint - InfPro_I9.pptx 今 日 の 学 習 内 容 エディタ(emacs)を 使 った 基 本 的 なHTML の 書 き 方 Webページの 公 開 HTMLの 基 礎 知 識 HTML(Hyper Text Markup Language)は Webページを 作 るための 必 要 な 記 述 言 語 HTMLにおける 指 定 の 内 容 は: 1. 文 章 (テキスト)に 対 する 役 割 2. 文 章 やイメージなどのページ

More information

KINGSOFT Office 2016 動 作 環 境 対 応 日 本 語 版 版 共 通 利 用 上 記 動 作 以 上 以 上 空 容 量 以 上 他 接 続 環 境 推 奨 必 要 2

KINGSOFT Office 2016 動 作 環 境 対 応 日 本 語 版 版 共 通 利 用 上 記 動 作 以 上 以 上 空 容 量 以 上 他 接 続 環 境 推 奨 必 要 2 目 次 動 作 環 境 特 長 方 法 方 法 起 動 終 了 方 法 方 法 操 作 方 法 使 方 使 方 使 方 詳 細 設 定 使 方 KINGSOFT Office 2016 動 作 環 境 対 応 日 本 語 版 版 共 通 利 用 上 記 動 作 以 上 以 上 空 容 量 以 上 他 接 続 環 境 推 奨 必 要 2 KINGSOFT Office 2016 特 長 主 特 長 以

More information

治 験 実 施 管 理 システム NMGCP 向 け Excel 形 式 プロトコール 作 成 手 順 書 V4.0.3 対 応 版 第 1 版 株 式 会 社 富 士 通 アドバンストエンジニアリング All Rights Reserved,Copyright 株 式 会 社 富 士 通 アドバン

治 験 実 施 管 理 システム NMGCP 向 け Excel 形 式 プロトコール 作 成 手 順 書 V4.0.3 対 応 版 第 1 版 株 式 会 社 富 士 通 アドバンストエンジニアリング All Rights Reserved,Copyright 株 式 会 社 富 士 通 アドバン 2014 年 1 月 7 日 治 験 依 頼 者 各 位 新 潟 市 民 病 院 治 験 管 理 室 Excel 形 式 の 電 子 プロトコール 提 出 の 御 依 頼 当 院 では 効 率 的 で 正 確 な 治 験 の 実 施 のため 電 子 カルテ 内 に 専 用 の Excel 形 式 による 電 子 プロトコールを 導 入 しております つきましては 治 験 依 頼 の 際 に 下 記

More information

Microsoft Word - 311Tools_END

Microsoft Word - 311Tools_END 11.1 テキストエディター(TeraPad) 第 11 章 さらに 使 いこなすためのツール Windows の 標 準 で 搭 載 されているテキストエディターのメモ 帳 Word などに 比 べて メモ 帳 は 軽 く ちょっとした 文 章 を 書 くのに 非 常 に 便 利 です しかし メモ 帳 は 軽 いだけに 機 能 性 はそれほど 高 くありません この 章 で 紹 介 する TeraPad

More information

006-021_責)Wordトレ2-1章_斉

006-021_責)Wordトレ2-1章_斉 . Wordの 起 動 Wordの 基 礎 知 識. Wordの 起 動 Wordの 起 動 は 次 のように 行 います 他 のアプリケーションソフトのように いくつかの 起 動 方 法 があります スタートメニューからの 起 動 スタートメニューから 起 動 する 方 法 は 次 の 通 りです [スタート]メニューの[すべてのプログラム]から[Microsoft-Office]の [Microsoft-Word]を

More information

端 末 型 払 い 出 しの 場 合 接 続 構 成 図 フレッツ グループから 払 出 されたIPアドレス /32 NTT 西 日 本 地 域 IP 網 フレッツ グループ フレッツ グループから 払 出 されたIPアドレス /

端 末 型 払 い 出 しの 場 合 接 続 構 成 図 フレッツ グループから 払 出 されたIPアドレス /32 NTT 西 日 本 地 域 IP 網 フレッツ グループ フレッツ グループから 払 出 されたIPアドレス / CTU 端 末 型 接 続 設 定 例 H19 年 10 月 端 末 型 払 い 出 しの 場 合 接 続 構 成 図 フレッツ グループから 払 出 されたIPアドレス 172.25.1.1/32 NTT 西 日 本 地 域 IP 網 フレッツ グループ フレッツ グループから 払 出 されたIPアドレス 172.25.1.2/32 172.25.1.1 172.25.1.2 192.168.24.1

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 1 履 修 履 歴 データベースの 仕 組 み 学 生 が 履 修 履 歴 を 登 録 して 企 業 へデータを 送 信 すると 企 業 担 当 者 が 履 修 履 歴 データを 見 られるようになります 不 特 定 の 企 業 に 履 修 履 歴 データが 閲 覧 されるわけではありません < 基 本 的 な 流 れ> A 社 データ ベース 応 募 企 業 へ データを 送 信 学 生 A 専

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 1 山 都 町 移 住 定 住 サイト マイホームページ 操 作 説 明 書 平 成 26 年 3 月 10 日 2 会 員 登 録 からホームページ 公 開 まで 会 員 仮 登 録 本 登 録 申 請 ログイン センター 承 認 ホームページ 公 開 センター 承 認 公 開 申 請 ホームページ 作 成 ホームページ 作 成 の4つのステップ 1 ホームページの 設 定 (p4) 2 レイアウト

More information

目 次 1. Web メールのご 利 用 について... 2 2. Web メール 画 面 のフロー 図... 3 3. Web メールへのアクセス... 4 4. ログイン 画 面... 5 5. ログイン 後 (メール 一 覧 画 面 )... 6 6. 画 面 共 通 項 目... 7 7.

目 次 1. Web メールのご 利 用 について... 2 2. Web メール 画 面 のフロー 図... 3 3. Web メールへのアクセス... 4 4. ログイン 画 面... 5 5. ログイン 後 (メール 一 覧 画 面 )... 6 6. 画 面 共 通 項 目... 7 7. Web メール 操 作 説 明 書 京 都 与 謝 野 町 有 線 テレビ 0 目 次 1. Web メールのご 利 用 について... 2 2. Web メール 画 面 のフロー 図... 3 3. Web メールへのアクセス... 4 4. ログイン 画 面... 5 5. ログイン 後 (メール 一 覧 画 面 )... 6 6. 画 面 共 通 項 目... 7 7. メール 一 覧 画 面...

More information

Microsoft Word - 不正アクセス行為の禁止等に関する法律等に基づく公安

Microsoft Word - 不正アクセス行為の禁止等に関する法律等に基づく公安 不 正 アクセス 行 為 の 禁 止 等 に 関 する 法 律 等 に 基 づく 公 安 委 員 会 による 援 助 等 の 措 置 に 関 する 訓 令 平 成 12 年 7 月 1 日 警 察 本 部 訓 令 第 25 号 改 正 平 成 14 年 11 月 22 日 本 部 訓 令 第 29 号 平 成 16 年 3 月 25 日 本 部 訓 令 第 6 号 平 成 24 年 5 月 1 日

More information

html_text

html_text HTML の 基 礎 2015.12.15 1. HTML ファイルの 構 成 1.1. HTML とは? Web ブラウザでホームページを 表 示 するためには,HTML(Hyper Text Markup Language)と 呼 ぶ 言 語 で 記 述 す る 必 要 が あ り ま す.HTML 形 式 のファイルは < と > で 囲 んだ 予 約 語 (タグ)を 含 むテキストファイルで,Web

More information

地域ポータルサイト「こむねっと ひろしま」

地域ポータルサイト「こむねっと ひろしま」 5. エディタの 使 い 方 5.1. エディタとは? NetCommons の 全 モジュールで 共 通 する 編 集 画 面 です 5.2. 通 常 のエディタの 使 い 方 (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) (16) (17)(18) (19)(20)(21) (22) (23) (24) (25)

More information

Fckeditor の 基 本 的 な 使 い 方 Point!! fckeditor を 上 手 く 使 うコツ 始 めにページ 内 に 一 通 り 文 章 ( 画 像 や 表 を 含 む)を 書 いてから 文 字 装 飾 をして 下 さい 編 集 したいテキストや 画 像 を 選 択 し アイコ

Fckeditor の 基 本 的 な 使 い 方 Point!! fckeditor を 上 手 く 使 うコツ 始 めにページ 内 に 一 通 り 文 章 ( 画 像 や 表 を 含 む)を 書 いてから 文 字 装 飾 をして 下 さい 編 集 したいテキストや 画 像 を 選 択 し アイコ Fckeditor マニュアル 目 次 Fckeditor の 基 本 的 な 使 い 方... 2 記 事 の 登 録 プレビューの 前 に... 2 リンクを 挿 入... 5 画 像 を 挿 入 する... 6 PC に 保 存 している 画 像 の 挿 入... 6 WEB 上 の 画 像 を 挿 入... 8 文 字 装 飾... 10 文 章 を 見 出 しにする... 10 太 文 字

More information

入 札 参 加 資 格 申 請 システム 操 作 マニュアル 入 札 参 加 資 格 の 資 格 有 効 ( 変 更 ) 日 を 迎 えると 追 加 届 の 登 録 ができるようになります ( 入 札 参 加 資 格 申 請 の 定 時 受 付 では いずれかの 申 請 先 団 体 から 入 札 参

入 札 参 加 資 格 申 請 システム 操 作 マニュアル 入 札 参 加 資 格 の 資 格 有 効 ( 変 更 ) 日 を 迎 えると 追 加 届 の 登 録 ができるようになります ( 入 札 参 加 資 格 申 請 の 定 時 受 付 では いずれかの 申 請 先 団 体 から 入 札 参 あいち 電 子 調 達 共 同 システム( 物 品 等 ) 入 札 参 加 資 格 申 請 システム 操 作 マニュアル - 業 者 - 目 次... 8-1 8-1 本 店 ID( 業 者 用 ID)の 確 認 ~ 初 期 パスワード 変 更... 8-3 8-1-1 入 札 参 加 資 格 申 請 システム メニュー... 8-3 8-1-2 契 約 営 業 所 等 ID 確 認 (パスワード

More information

やさしく名刺ファイリング v.3.0 操作マニュアル

やさしく名刺ファイリング v.3.0 操作マニュアル 操 作 マニュアル やさしく 名 刺 ファイリング 基 本 操 作 目 次 1. はじめに 2. やさしく 名 刺 ファイリングの 起 動 2-1.データベースの 作 成 2-2.スキャナの 設 定 3. 名 刺 の 読 み 込 み 3-1. 専 用 スキャナでの 読 み 込 み 3-2. 市 販 スキャナでの 読 み 込 み 4. 名 刺 の 認 識 修 正 登 録 4-1. 名 刺 の 認 識

More information

目 次 1.ログイン 方 法 P2 2.ログアウト 方 法 P3 3. 基 本 設 定 変 更 サイトネーム スローガンの 設 定 P10~11 カラーバリエーションの 選 択 P12 メニュースタイル 色 の 設 定 P12 4.トップページの 画 像 編 集 画 像 の 変 更 P13~14 T

目 次 1.ログイン 方 法 P2 2.ログアウト 方 法 P3 3. 基 本 設 定 変 更 サイトネーム スローガンの 設 定 P10~11 カラーバリエーションの 選 択 P12 メニュースタイル 色 の 設 定 P12 4.トップページの 画 像 編 集 画 像 の 変 更 P13~14 T ホームページングサービス G o o d P a g e E a s y GoodPageASPシリーズ 操 作 マニュアル 基 本 操 作 編 (EASY+のメニュー 操 作 については メニュー 操 作 編 をご 覧 下 さい) ASPシリーズ(SUPERLITE EASY EASY+)の 基 本 操 作 手 順 は 共 通 ですが マニュアルではGoodPageEASYの 画 面 で 説 明

More information

モール管理者マニュアル Ver.1.0

モール管理者マニュアル Ver.1.0 1 Html 編 集 ツール 補 足 マニュアル Ver.1.0 株 式 会 社 ソフトクリエイト 2012/11/14 目 次 1. Html について... 3 1.1. Html とは... 4 1.2. Html タグの 基 本... 5 1.2.1. HTML タグの 基 礎... 5 1.2.2. HTML タグの 種 類 ( 主 要 タグ)... 7 2. Html 編 集 ツール...

More information

スライド 1

スライド 1 Android 版 目 視 録 運 用 操 作 マニュアル 作 成 2012/03/22 更 新 2014/09/26 目 視 録 とは 携 帯 またはパソコンで 施 工 写 真 を 登 録 確 認 できるシステムです ご 利 用 の 為 にはIDとパスワードが 必 要 です TEG ログインID ( ) パスワード ( ) https://teg.mokusiroku.com/

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc 第 3 章 関 数 この 章 では 日 付 と 時 刻 を 扱 う 関 数 や 検 索 条 件 に 一 致 するデータを 取 り 出 す 関 数 の 使 い 方 また 複 数 の 関 数 を 組 み 合 わせてエラー 値 を 非 表 示 にする 方 法 を 学 習 します STEP 1: 日 付 / 時 刻 関 数 TODAY 関 数 NOW 関 数 TODAY 関 数 は パソコンの 内 蔵 時

More information

<4D6963726F736F667420576F7264202D204D46834E8389834583688A6D92E8905C8D905F93B193FC819593FA8E9F95D2283194C5292E646F63>

<4D6963726F736F667420576F7264202D204D46834E8389834583688A6D92E8905C8D905F93B193FC819593FA8E9F95D2283194C5292E646F63> 目 次 第 1 章 本 書 の 概 要 1 1-1 本 書 で 学 べる 内 容... 1 1-2 MFクラウド 確 定 申 告 とは... 2 1-3 MFクラウド 確 定 申 告 の 長 所... 3 1-4 MFクラウド 確 定 申 告 の 利 用 料 金... 4 1-5 本 書 を 学 ぶにあたって 必 要 な 知 識... 5 1-6 本 書 で 学 ぶ 具 体 的 な 内 容... 6

More information

メール 受 信 画 面 のレイアウトを 変 更 することができます ここでは 初 期 設 定 のレイアウトで 表 示 されているボタ ンやマークについて 解 説 します メール 一 覧 画 面 には 受 信 したメールが 一 覧 表 示 されます メール 受 信 タブをクリックすると 受 信 箱 フ

メール 受 信 画 面 のレイアウトを 変 更 することができます ここでは 初 期 設 定 のレイアウトで 表 示 されているボタ ンやマークについて 解 説 します メール 一 覧 画 面 には 受 信 したメールが 一 覧 表 示 されます メール 受 信 タブをクリックすると 受 信 箱 フ .3 1...3 メール 受 信 タブのサブメニューから 直 接 受 信 箱 以 外 のフォルダを 表 示 することもできます 共 有 メー ルボックスのフォルダは 指 定 できません 3. 35 メール 受 信 画 面 のレイアウトを 変 更 することができます ここでは 初 期 設 定 のレイアウトで 表 示 されているボタ ンやマークについて 解 説 します メール 一 覧 画 面 には 受

More information

スライド 1

スライド 1 アリババ ワールドパスポート 製 品 詳 細 ご 利 用 ガイド 2010/03/11 Ver1.00 2012/10/09 Ver1.50 お 問 い 合 わせ 先 アリババ 株 式 会 社 メール:infoggs@alibaba-inc.jp 103-0007 東 京 都 中 央 区 日 本 橋 浜 町 2-12-4 エスエス 製 薬 本 社 ビル4F 目 次 文 字 装 飾 の 追 加 変 更

More information

< 目 次 > 8. 雇 用 保 険 高 年 齢 雇 用 継 続 給 付 27 ( 育 児 休 業 給 付 介 護 休 業 給 付 ) 8.1 高 年 齢 雇 用 継 続 給 付 画 面 のマイナンバー 設 定 27 8.2 高 年 齢 雇 用 継 続 給 付 の 電 子 申 請 28 8.3 高

< 目 次 > 8. 雇 用 保 険 高 年 齢 雇 用 継 続 給 付 27 ( 育 児 休 業 給 付 介 護 休 業 給 付 ) 8.1 高 年 齢 雇 用 継 続 給 付 画 面 のマイナンバー 設 定 27 8.2 高 年 齢 雇 用 継 続 給 付 の 電 子 申 請 28 8.3 高 雇 用 保 険 マイナンバー 改 定 向 け 操 作 説 明 書 < 目 次 > 1.マイナンバー 等 の 法 令 改 定 対 応 について 3 1.1 法 令 改 定 の 変 更 点 3 1.2 その 他 主 要 な 変 更 点 4 2.マイナンバー 管 理 システムとの 連 携 設 定 5 2.1 マイナ de 社 労 夢 の 運 用 設 定 5 2.2 マイナ de 社 労 夢 CL の 運

More information

<4D6963726F736F667420576F7264202D20819C486F70658F6F93588ED297708AC7979D89E696CA837D836A83858341838B8169342E33566572816A2E646F63>

<4D6963726F736F667420576F7264202D20819C486F70658F6F93588ED297708AC7979D89E696CA837D836A83858341838B8169342E33566572816A2E646F63> 商 品 管 理 商 品 管 理 を 行 うためのメニューです 4.1 商 品 管 理 のサイドメニュー 商 品 管 理 には 以 下 のサイドメニューがあります 商 品 一 覧 登 録 済 みの 商 品 の 一 覧 を 表 示 します 既 に 登 録 済 みの 商 品 の 検 索 検 索 した 商 品 を 編 集 する 際 に 使 用 します 新 規 作 成 商 品 を 新 規 登 録 する 画 面

More information

<4D6963726F736F667420576F7264202D203193FA8AD45F95CA8E86325F89898F4B315F94F093EF8AA98D90939994AD97DF914F82CC8FEE95F182CC8EFB8F57814589C28E8B89BB2E646F63>

<4D6963726F736F667420576F7264202D203193FA8AD45F95CA8E86325F89898F4B315F94F093EF8AA98D90939994AD97DF914F82CC8FEE95F182CC8EFB8F57814589C28E8B89BB2E646F63> 1.ログイン 方 法 1-1: 県 域 統 合 型 GIS 総 合 ポータルから 研 修 用 のユーザID 及 びパスワードを 入 力 後 ログインする 1-2:ログイン 後 マップ 編 集 を 選 択 します 1-3:マップ 一 覧 から 編 集 したいマップを 選 ぶ 今 回 の 場 合 1. 避 難 勧 告 等 発 令 までの 情 報 収 集 可 視 化 ( 班 ) を 選 択 する 1 2.

More information

目 次. WEB メールへのログイン.... メール 送 信 手 順.... メール 受 信 手 順... 6. アドレス 帳 の 操 作 手 順... 8 5. フォルダーの 操 作 手 順... 8 6. メール 発 信 者 登 録 署 名 登 録 手 順... 0 7. 基 本 的 な 設 定

目 次. WEB メールへのログイン.... メール 送 信 手 順.... メール 受 信 手 順... 6. アドレス 帳 の 操 作 手 順... 8 5. フォルダーの 操 作 手 順... 8 6. メール 発 信 者 登 録 署 名 登 録 手 順... 0 7. 基 本 的 な 設 定 Web メール 手 順 書 目 次. WEB メールへのログイン.... メール 送 信 手 順.... メール 受 信 手 順... 6. アドレス 帳 の 操 作 手 順... 8 5. フォルダーの 操 作 手 順... 8 6. メール 発 信 者 登 録 署 名 登 録 手 順... 0 7. 基 本 的 な 設 定... 8. 参 考 情 報... 9 . WEB メールへのログイン 概

More information

4 応 募 者 向 けメニュー 画 面 が 表 示 されます 応 募 者 向 けメニュー 画 面 で [ 交 付 内 定 時 の 手 続 を 行 う] [ 交 付 決 定 後 の 手 続 を 行 う]をクリックします 10

4 応 募 者 向 けメニュー 画 面 が 表 示 されます 応 募 者 向 けメニュー 画 面 で [ 交 付 内 定 時 の 手 続 を 行 う] [ 交 付 決 定 後 の 手 続 を 行 う]をクリックします 10 2 科 学 研 究 費 助 成 事 業 のトップページ 画 面 が 表 示 されます [ 研 究 者 ログイン]をクリック します 掲 載 している 画 面 は 例 示 です 随 時 変 更 されます 3 科 研 費 電 子 申 請 システムの 応 募 者 ログイン 画 面 が 表 示 されます e-rad の ID パ ス ワード を 入 力 し [ログイン]をクリックします 9 4 応 募 者

More information

<4D6963726F736F667420576F7264202D20574254816995B68F918DEC90AC89898F4B899E977095D2816A2E646F63>

<4D6963726F736F667420576F7264202D20574254816995B68F918DEC90AC89898F4B899E977095D2816A2E646F63> 文 書 作 成 演 習 ( 応 用 編 ) (Word007,Excel007) 文 書 作 成 演 習 ( 応 用 編 ) のテキストを 参 考 にしながら, 次 の 学 級 だよりを 作 成 してみましょう IPA 教 育 用 画 像 素 材 集 より < 演 習 のための 準 備 > 演 習 用 素 材 のフォルダをデスクトップ 上 に 作 成 します IPA 教 育 用 画 像 素 材 集

More information

TIPS - 棚 割 りを 開 始 するまで Liteを 起 動 し 企 業 情 報 の 追 加 を 行 い 棚 割 を 行 う 企 業 の 追 加 をして 下 さい 企 業 情 報 の 追 加 時 に エラーメッセージが 表 示 された 場 合 別 途 TIPS トラブルが 発 生 した 場 合

TIPS - 棚 割 りを 開 始 するまで Liteを 起 動 し 企 業 情 報 の 追 加 を 行 い 棚 割 を 行 う 企 業 の 追 加 をして 下 さい 企 業 情 報 の 追 加 時 に エラーメッセージが 表 示 された 場 合 別 途 TIPS トラブルが 発 生 した 場 合 TIPS 目 次 TIPS 項 目 棚 割 りを 開 始 するまで 商 品 画 像 の 追 加 方 法 商 品 情 報 の 一 括 更 新 登 録 方 法 棚 割 情 報 の 連 携 方 法 小 売 様 棚 割 ソフトとの 棚 割 情 報 連 携 について 他 棚 割 ソフトとの 棚 割 情 報 連 携 について 棚 割 情 報 のExcel 取 込 について 棚 板 設 定 の 詳 細 商 品 設

More information

(Microsoft Word - Easy\203y\201[\203W\221\200\215\354\203K\203C\203h.doc)

(Microsoft Word - Easy\203y\201[\203W\221\200\215\354\203K\203C\203h.doc) Easy ページ 操 作 ガイド http://359ch.com ところチャンネル( 資 ) Easy ページサービス 操 作 ガイド 2009.1.8 版 1. はじめに Easy ページサービスとは パソコンからブラウザを 利 用 して 簡 単 にホームページを 公 開 更 新 できるサービス です Docomo や AU SoftBank 等 の 携 帯 電 話 を 利 用 して 同 様 にホームページを

More information

POWER EGG V2.01 ユーザーズマニュアル ファイル管理編

POWER EGG V2.01 ユーザーズマニュアル ファイル管理編 POWER EGG V2.0 ユーザーズマニュアル ファイル 管 理 編 Copyright 2009 D-CIRCLE,INC. All Rights Reserved 2009.4 はじめに 本 書 では POWER EGG 利 用 者 向 けに 以 下 の POWER EGG のファイル 管 理 機 能 に 関 する 操 作 を 説 明 しま す なお 当 マニュアルでは ファイル 管 理 機

More information

01_07_01 データのインポート_エクスポート_1

01_07_01 データのインポート_エクスポート_1 データのインポート/エクスポートについて 概 要 スタッフエクスプレスでは 他 のソフトウェアで 作 成 されたスタッフデータ 得 意 先 データなどを 取 り 込 む(インポートする)ことができます また スタッフエクスプレスに 登 録 済 みのデータを Excel 形 式 CSV 形 式 で 出 力 (エクスポート)す ることができます 注 意 インポートできるデータは 次 の 条 件 を 満

More information

はじめに確認していただきたいこと

はじめに確認していただきたいこと ページの 内 容 を 編 集 する ページ 内 の 領 域 を 追 加 削 除 したり 修 正 したりして 編 集 します 1 編 集 メニュー 表 示 を 押 す 2 編 集 したい 領 域 の 下 にスクロールする グレーの 帯 が 表 示 されています 3 グレーの 帯 の 部 分 にカーソルを 合 わせる 編 集 メニューが 表 示 されます 4 編 集 したい 内 容 に 合 わせて 操

More information

HTG-35U ブルーバック表示の手順書 (2014年12月改定)

HTG-35U ブルーバック表示の手順書 (2014年12月改定) HTG-35U ブルーバック 表 示 の 手 順 書 概 要 本 書 は HTG-35U にてブルーバックの 画 面 を 出 力 するための 手 順 書 です HTG-35U のビットマップ 出 力 機 能 及 び 固 定 文 字 表 示 機 能 を 使 用 してブルーバックの 表 示 を 設 定 します また ブルーバックの 表 示 / 非 表 示 をタイマーで 自 動 に 切 り 替 えを 行

More information

SXF 仕 様 実 装 規 約 版 ( 幾 何 検 定 編 ) 新 旧 対 照 表 2013/3/26 文 言 変 更 p.12(1. 基 本 事 項 ) (5)SXF 入 出 力 バージョン Ver.2 形 式 と Ver.3.0 形 式 および Ver.3.1 形 式 の 入 出 力 機 能 を

SXF 仕 様 実 装 規 約 版 ( 幾 何 検 定 編 ) 新 旧 対 照 表 2013/3/26 文 言 変 更 p.12(1. 基 本 事 項 ) (5)SXF 入 出 力 バージョン Ver.2 形 式 と Ver.3.0 形 式 および Ver.3.1 形 式 の 入 出 力 機 能 を SXF 仕 様 実 装 規 約 版 ( 幾 何 検 定 編 ) 新 旧 対 照 表 2013/3/26 改 訂 の 要 因 旧 新 (2013 年 4 月 版 ) 文 言 削 除 p.11(1. 基 本 事 項 ) (2) 保 証 すべき 実 数 の 精 度 p.5(1. 基 本 事 項 ) (2) 保 証 すべき 実 数 の 精 度 1. 用 紙 系 ( 線 種 ピッチ 等 用 紙 上 の 大 きさで

More information

もくじ はじめに 本 書 はスマートフォンやタブレットのアプリ LINE の 設 定 を 行 うためのマニュアルとなります 詳 しい 操 作 方 法 については メーカーホームページ 上 の 基 本 的 な 使 い 方 を 参 照 ください LINE 基 本 的 な 使 い 方 http://hel

もくじ はじめに 本 書 はスマートフォンやタブレットのアプリ LINE の 設 定 を 行 うためのマニュアルとなります 詳 しい 操 作 方 法 については メーカーホームページ 上 の 基 本 的 な 使 い 方 を 参 照 ください LINE 基 本 的 な 使 い 方 http://hel 本 書 は 大 切 に 保 管 ください LINE 設 定 マニュアル LINEバージョン 5.0.4 第 1 版 もくじ はじめに 本 書 はスマートフォンやタブレットのアプリ LINE の 設 定 を 行 うためのマニュアルとなります 詳 しい 操 作 方 法 については メーカーホームページ 上 の 基 本 的 な 使 い 方 を 参 照 ください LINE 基 本 的 な 使 い 方 http://help.line.me/line/?lang=ja

More information

検 索 しよう... 1 結 果 を 見 よう ~ 検 索 結 果 一 覧 ~... 2 結 果 を 見 よう ~ 検 索 結 果 詳 細 ( 図 書 )~... 3 結 果 を 見 よう ~ 検 索 結 果 詳 細 ( 雑 誌 )~... 4 ログインしよう... 5 私 の 本 棚 を 活 用

検 索 しよう... 1 結 果 を 見 よう ~ 検 索 結 果 一 覧 ~... 2 結 果 を 見 よう ~ 検 索 結 果 詳 細 ( 図 書 )~... 3 結 果 を 見 よう ~ 検 索 結 果 詳 細 ( 雑 誌 )~... 4 ログインしよう... 5 私 の 本 棚 を 活 用 蔵 書 検 索 (コンピュータ 目 録 (OPAC)による 図 書 雑 誌 検 索 方 法 ) OPAC(オーパック)=Online Public Access Catalog https://libwww.akita-pu.ac.jp/drupal/ 秋 田 県 立 大 学 図 書 情 報 センター 検 索 しよう... 1 結 果 を 見 よう ~ 検 索 結 果 一 覧 ~... 2 結 果

More information

目 次 1.はじめに... 3 2. 書 式 の 説 明... 3 3. 表 紙... 4 4.スケジュール... 5 5. 組 入 れ 基 準... 9 6. 併 用 禁 止 薬... 10 7. 併 用 注 意 薬... 10 8. 同 種 同 効 薬... 10 9. 医 師 モニタリング..

目 次 1.はじめに... 3 2. 書 式 の 説 明... 3 3. 表 紙... 4 4.スケジュール... 5 5. 組 入 れ 基 準... 9 6. 併 用 禁 止 薬... 10 7. 併 用 注 意 薬... 10 8. 同 種 同 効 薬... 10 9. 医 師 モニタリング.. 治 験 実 施 管 理 システム NMGCP 向 け Excel 形 式 プロトコール 作 成 手 順 書 V4.0.4 対 応 版 第 1 版 株 式 会 社 富 士 通 アドバンストエンジニアリング All Rights Reserved,Copyright 株 式 会 社 富 士 通 アドバンストエンジニアリング 2010 目 次 1.はじめに... 3 2. 書 式 の 説 明... 3 3.

More information

Microsoft Word - Active.doc

Microsoft Word - Active.doc 利 マニュアル 梅 校 メールサーバをご 利 されていた 教 員 の 皆 さまへ 2009 年 1 7 のメールサーバ 移 に 伴 い 学 外 からの 電 メールの 送 受 信 はウェブメール(Active!mail) からのみ 可 能 となりました Active!mail の 利 法 については 本 マニュアルをご 確 認 ください 次 Active!mail にログインする...2 Active!mail

More information

1 本 店 の 申 請 において 代 理 人 を 立 てない 場 合 電 子 証 明 書 の 利 用 者 は 代 表 者 で 取 得 してください 6 電 子 証 明 書 の 利 用 者 は 誰 にすればよいのですか? 2 本 店 の 申 請 で 代 理 人 を 立 てる または 支 店 の 申 請

1 本 店 の 申 請 において 代 理 人 を 立 てない 場 合 電 子 証 明 書 の 利 用 者 は 代 表 者 で 取 得 してください 6 電 子 証 明 書 の 利 用 者 は 誰 にすればよいのですか? 2 本 店 の 申 請 で 代 理 人 を 立 てる または 支 店 の 申 請 2012 年 10 月 1 日 更 新 東 京 電 子 自 治 体 共 同 運 営 電 子 証 明 書 の 取 得 電 子 調 達 サービス 電 子 証 明 書 に 関 する 1 行 政 書 士 などに 資 格 審 査 申 請 を 委 託 する 場 合 は 電 子 証 明 書 を 貸 し 出 せばよいのですか? 電 子 証 明 書 は 実 印 と 同 じ 扱 いとなります 貸 し 出 しによって 電

More information

2 Wee とは Wee はホームページの 更 新 ツールです Wee は サイトの 枠 組 みをWeb 製 作 業 者 が 作 成 し 更 新 は お 客 様 に 自 由 にしていただこうというコンセプトの 製 品 です インターネットに 繋 がる 場 所 ならどこからでも ブラウザでホームページ

2 Wee とは Wee はホームページの 更 新 ツールです Wee は サイトの 枠 組 みをWeb 製 作 業 者 が 作 成 し 更 新 は お 客 様 に 自 由 にしていただこうというコンセプトの 製 品 です インターネットに 繋 がる 場 所 ならどこからでも ブラウザでホームページ 1 ホームページ 更 新 ツール Wee&Wee Mobile のご 紹 介 http//www.i 2 Wee とは Wee はホームページの 更 新 ツールです Wee は サイトの 枠 組 みをWeb 製 作 業 者 が 作 成 し 更 新 は お 客 様 に 自 由 にしていただこうというコンセプトの 製 品 です インターネットに 繋 がる 場 所 ならどこからでも ブラウザでホームページの

More information

目 次 ログイン 方 法... 3 基 本 画 面 構 成... 4 メールサービス... 5 メールサービス 画 面 構 成... 5 アカウント 詳 細 / 設 定... 6 高 機 能 フィルター... 7 ユーザーフィルター 設 定... 8 新 規 フィルターの 追 加... 8 My ホ

目 次 ログイン 方 法... 3 基 本 画 面 構 成... 4 メールサービス... 5 メールサービス 画 面 構 成... 5 アカウント 詳 細 / 設 定... 6 高 機 能 フィルター... 7 ユーザーフィルター 設 定... 8 新 規 フィルターの 追 加... 8 My ホ 296Cloud マニュアル 1/15 目 次 ログイン 方 法... 3 基 本 画 面 構 成... 4 メールサービス... 5 メールサービス 画 面 構 成... 5 アカウント 詳 細 / 設 定... 6 高 機 能 フィルター... 7 ユーザーフィルター 設 定... 8 新 規 フィルターの 追 加... 8 My ホームページ... 11 My ホームページ 画 面 構 成...

More information

1.2. ご 利 用 環 境 1.2.1. 推 奨 ブラウザ Internet Explorer 10 11 Google Chrome(バージョン 32 時 点 で 動 作 確 認 済 み) Mozilla Firefox(バージョン 26 時 点 で 動 作 確 認 済 み) Safari 7

1.2. ご 利 用 環 境 1.2.1. 推 奨 ブラウザ Internet Explorer 10 11 Google Chrome(バージョン 32 時 点 で 動 作 確 認 済 み) Mozilla Firefox(バージョン 26 時 点 で 動 作 確 認 済 み) Safari 7 1. アーカイブデータベースを 検 索 / 閲 覧 する 1.1. データの 検 索 方 法 東 京 アーカイブ では 以 下 に 分 類 されるカテゴリの 画 像 データ 資 料 データを 閲 覧 できます 江 戸 城 浮 世 絵 双 六 和 漢 書 江 戸 東 京 の 災 害 記 録 絵 葉 書 写 真 帖 近 代 の 地 図 東 京 府 東 京 市 関 係 資 料 番 付 建 築 図 面 書

More information

OpenCity2説明

OpenCity2説明 和 光 市 市 民 活 動 支 援 サイト 新 掲 示 板 (FCKエディタ)について 通 常 ホームページを 作 成 するには HTML という 専 門 言 語 の 知 識 が 必 要 ですが FCK エディ タを 使 えば ワードやエクセルと 同 じ 感 覚 で タイトル 文 字 を 太 字 にしたり 表 を 作 成 したり 画 像 を 挿 入 したり 更 にはワードで 作 成 した 文 章 スタイルそのままにコピー&ペースト

More information

5-2 一 般 ユーザー 用 :メール 2 送 信 者 のリンクをクリックすると 受 信 メールの 内 容 を 見 ることができます 受 信 メール 内 容 画 面 項 目 送 信 者 宛 先 CC 本 文 (テキスト) 本 文 (HTML) メールアドレスのリンクをクリックするとアドレス 帳 へ

5-2 一 般 ユーザー 用 :メール 2 送 信 者 のリンクをクリックすると 受 信 メールの 内 容 を 見 ることができます 受 信 メール 内 容 画 面 項 目 送 信 者 宛 先 CC 本 文 (テキスト) 本 文 (HTML) メールアドレスのリンクをクリックするとアドレス 帳 へ 5-1 一 般 ユーザー 用 :メール お 使 いのブラウザ 上 でメールの 送 受 信 ができます メールはJobMagicのサーバーにて 管 理 されており いつでもどこでも 別 のマシーンでログインしても 同 じ 環 境 でご 利 用 いただけます 受 信 したメールを 読 む 1 受 信 したメールを 読 むには3 種 類 の 方 法 があります メニューからメールメニューをクリック 新 着

More information

untitled

untitled 第 1 節 第 3 章 企 業 ショップ 基 本 情 報 の 登 録 3.2 プレビュー 表 示 機 能 ここでは 基 本 情 報 新 鮮 情 報 商 品 サービス 情 報 クーポン 情 報 求 人 情 報 を 登 録 する 際 に 実 際 の 登 録 処 理 前 に 公 開 側 での 表 示 イメージを 確 認 する 方 法 を 説 明 します 1 基 本 情 報 新 鮮 情 報 商 品 サービス

More information

項 目 設 定 設 置 可 能 項 目 数 100 項 目 投 票 フォームの 設 置 可 能 投 票 項 目 数 1 項 目 (10 選 択 肢 ) 必 須 項 目 設 定 条 件 項 目 設 定 添 付 ファイル 合 計 容 量 入 力 項 目 を 必 須 項 目 に 設 定 できます フォーム

項 目 設 定 設 置 可 能 項 目 数 100 項 目 投 票 フォームの 設 置 可 能 投 票 項 目 数 1 項 目 (10 選 択 肢 ) 必 須 項 目 設 定 条 件 項 目 設 定 添 付 ファイル 合 計 容 量 入 力 項 目 を 必 須 項 目 に 設 定 できます フォーム 更 新 日 :2015 年 4 月 14 日 料 金 初 期 費 用 月 額 料 金 無 料 サーバーの 初 期 セットアップ 時 以 外 または 複 数 フォームメーラーを インストールする 場 合 には 別 途 費 用 が 必 要 となります 無 料 スペック 100 個 作 成 可 能 フォーム 数 一 般 投 票 注 文 フォームに 対 応 設 置 可 能 項 目 数 100 項 目 添 付

More information

R4財務対応障害一覧

R4財務対応障害一覧 1 仕 訳 入 力 仕 訳 入 力 時 摘 要 欄 で. + Enter を 押 すと アプリケーションでエラーが 発 生 しまインデックスが 配 列 の 境 界 外 です が 出 る 場 合 がある 問 題 に 対 応 しま 2 仕 訳 入 力 仕 訳 入 力 主 科 目 と 補 助 科 目 を 固 定 にすると2 行 目 以 降 の 補 助 科 目 コピーが 動 作 しない 問 題 に 対 応

More information

■新聞記事

■新聞記事 情 報 処 理 C (P.1) 情 報 処 理 C (2016 年 度 ) ホームページ 作 成 入 門 テキストエディタ(メモ 帳 TeraPad など)でHTMLファイルを 作 成 する HTML(Hyper Text Markup Language ) ホームページを 記 述 するための 言 語 のこと テキストエディタの 起 動 (TeraPad の 場 合 ) [スタート]-[プログラム]-[テキストエディタ]-[TeraPad]

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 楽 天 市 場 Yahooショッピング! 商 品 複 製 マニュアル 1 在 庫 連 携 を 行 うためには 事 前 に 各 モールのコード 合 わせの 作 業 が 必 要 です 詳 しくは 各 モールとの 在 庫 連 携 に 必 要 なコード 連 携 マニュアルをご 覧 ください 2 楽 天 Yahooショッピング!の 仕 様 は 変 更 になっている 場 合 があります 各 モールの 仕 様 も

More information

2 課 題 管 理 ( 科 学 研 究 費 補 助 金 ) 画 面 が 表 示 されます 補 助 事 業 期 間 終 了 後 欄 の[ 入 力 ] をクリックします [ 入 力 ]ボタンが 表 示 されていない 場 合 には 所 属 する 研 究 機 関 の 事 務 局 等 へお 問 い 合 わせく

2 課 題 管 理 ( 科 学 研 究 費 補 助 金 ) 画 面 が 表 示 されます 補 助 事 業 期 間 終 了 後 欄 の[ 入 力 ] をクリックします [ 入 力 ]ボタンが 表 示 されていない 場 合 には 所 属 する 研 究 機 関 の 事 務 局 等 へお 問 い 合 わせく 2.6. 研 究 成 果 報 告 書 の 作 成 2.6.1 研 究 成 果 報 告 内 容 ファイルを 作 成 1 科 学 研 究 費 助 成 事 業 の Web ページ 等 から 研 究 成 果 報 告 内 容 ファイル 様 式 をダウンロードし ます 2 ダウンロードした 研 究 成 果 報 告 内 容 ファイル 様 式 に 報 告 内 容 を 記 入 し 保 存 します 所 定 の 様 式

More information

この 章 では 電 子 入 札 システムをご 利 用 いただくための 事 前 準 備 について 説 明 します 事 前 準 備 と して ID 初 期 パスワードの 確 認 初 期 パスワード 初 期 見 積 用 暗 証 番 号 の 変 更 IC カード 登 録 またはICカード 更 新 を 行 っ

この 章 では 電 子 入 札 システムをご 利 用 いただくための 事 前 準 備 について 説 明 します 事 前 準 備 と して ID 初 期 パスワードの 確 認 初 期 パスワード 初 期 見 積 用 暗 証 番 号 の 変 更 IC カード 登 録 またはICカード 更 新 を 行 っ 目 次... 1 1.1 ID 初 期 パスワードの 確 認... 3 1.2 初 期 パスワード 初 期 見 積 用 暗 証 番 号 の 変 更... 6 1.3 ICカード 登 録... 10 1.4 ICカード 更 新... 18 1.5 Internet Explorer の 設 定... 25 目 次 をクリックすると 当 該 ページへ 遷 移 します この 章 では 電 子 入 札 システムをご

More information

Microsoft Word - FBE3A91F.doc

Microsoft Word - FBE3A91F.doc 広 島 大 学 ウェブマネジメントシステム 共 通 事 項 (Ver:2009.04.16) 本 システムに 関 する 問 い 合 わせ 本 システムに 関 する 問 い 合 わせは 下 記 までご 連 絡 ください 社 会 連 携 情 報 政 策 室 広 報 グループ 内 線 :5017 5017 6131 E-mail mail:koho@office.hiroshima koho@office.hiroshima-u.ac.jp

More information

Microsoft PowerPoint - 130522_リビジョンアップ案内_最終.pptx

Microsoft PowerPoint - 130522_リビジョンアップ案内_最終.pptx WaWaOfficeシリーズ バージョン8.2リビジョンアップ 2013 年 6 月 18 日 リリース 予 定 株 式 会 社 アイアットOEC ローカル 機 能 の 改 善 プレビュー 表 追 加 の 覧 表 にプレビュー 表 を 設 定 可 能 にしました 1 表 2 表 1 +プレビュー 表 から 選 択 設 定 法 個 設 定 個 設 定 基 本 設 定 PC 専 パラメータの 覧 表 時

More information

HTMLとは HyperText Markup Language ハイパーテキスト:テキストを 超 えたもの マークアップ:<...>で 指 示 する 規 格 厳 密 には htttp://www.w3.org/tr/html4/strict.dtd 他 に loose.dtd,frameset.d

HTMLとは HyperText Markup Language ハイパーテキスト:テキストを 超 えたもの マークアップ:<...>で 指 示 する 規 格 厳 密 には htttp://www.w3.org/tr/html4/strict.dtd 他 に loose.dtd,frameset.d 第 10 回 HTMLの の 基 礎 HTMLとは 作 成 手 順 基 本 形 改 行 と 段 落 整 形 済 みテキスト 横 線 見 出 し リスト1(UL,OL) リスト2(DL) インライン 画 像 リンク HTMLとは HyperText Markup Language ハイパーテキスト:テキストを 超 えたもの マークアップ:で 指 示 する 規 格 厳 密 には htttp://www.w3.org/tr/html4/strict.dtd

More information

確 定 申 告 書 作 成 システム 操 作 手 順 書 ~ 個 人 利 用 者 向 け 操 作 説 明 書 ~ 平 成 27 年 1 月 JA 長 野 県 営 農 センター ( 株 ) 長 野 県 協 同 電 算 目 次 1.システムの 起 動... 1 ... 1 ... 2 2.ログインとログアウト... 2 ... 3 ...

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション インターネット 出 願 手 引 き (システムWAKABA 継 続 入 学 申 請 手 引 き) 目 次 1.システムWAKABAトップ 画 面 2 2. 学 生 種 選 択 画 面 3 3. 出 願 申 請 画 面 (1) 全 科 履 修 生 の 場 合 4 (2) 全 科 履 修 生 以 外 の 場 合 6 4.オンライン 授 業 8 5. 科 目 登 録 申 請 画 面 (1) 授 業 種 別

More information

■コンテンツ

■コンテンツ Joruri CMS 2.0.0 基 本 マニュアル (2013.7.23) 2012.2.14 データ データでは 複 数 の 場 所 で 共 通 して 利 用 できる 情 報 (テキスト 形 式 ファイル 形 式 )を 作 成 登 録 管 理 できます テキスト データ>テキスト 作 成 されたテキストが 一 覧 表 示 されます 複 数 の 場 所 で 利 用 するテキスト( 住 所 TEL

More information

Gmail 利用者ガイド

Gmail 利用者ガイド Gmail 利 用 者 ガイド 目 次 1. はじめに... 1 2. Gmail を 利 用 する 前 に... 2 3. 初 めてのログイン... 4 3.1. ログイン... 4 3.2. CAPTCHA の 入 力... 5 4. メールボックスの 説 明... 8 5. メールの 受 信... 9 6. メールの 送 信 返 信... 10 6.1. メールの 新 規 作 成... 10

More information

C.1 共 有 フォルダ 接 続 操 作 の 概 要 アクセスが 許 可 されている 研 究 データ 交 換 システムの 個 人 用 共 有 フォルダまたは メーリングリストの 共 有 フォルダに 接 続 して フォルダを 作 成 したり ファイル をアップロードまたはダウンロードしたりすることがで

C.1 共 有 フォルダ 接 続 操 作 の 概 要 アクセスが 許 可 されている 研 究 データ 交 換 システムの 個 人 用 共 有 フォルダまたは メーリングリストの 共 有 フォルダに 接 続 して フォルダを 作 成 したり ファイル をアップロードまたはダウンロードしたりすることがで C.1 共 有 フォルダ 接 続 操 作 の 概 要 C.2 Windows から 接 続 操 作 する C.3 Mac OS X から 接 続 操 作 する 67 C.1 共 有 フォルダ 接 続 操 作 の 概 要 アクセスが 許 可 されている 研 究 データ 交 換 システムの 個 人 用 共 有 フォルダまたは メーリングリストの 共 有 フォルダに 接 続 して フォルダを 作 成 したり

More information

1 書 誌 作 成 機 能 (NACSIS-CAT)の 軽 量 化 合 理 化 電 子 情 報 資 源 への 適 切 な 対 応 のための 資 源 ( 人 的 資 源,システム 資 源, 経 費 を 含 む) の 確 保 のために, 書 誌 作 成 と 書 誌 管 理 作 業 の 軽 量 化 を 図

1 書 誌 作 成 機 能 (NACSIS-CAT)の 軽 量 化 合 理 化 電 子 情 報 資 源 への 適 切 な 対 応 のための 資 源 ( 人 的 資 源,システム 資 源, 経 費 を 含 む) の 確 保 のために, 書 誌 作 成 と 書 誌 管 理 作 業 の 軽 量 化 を 図 平 成 2 8 年 3 月 25 日 NACSIS-CAT 検 討 作 業 部 会 NACSIS-CAT/ILL の 軽 量 化 合 理 化 について( 基 本 方 針 )( 案 ) これからの 学 術 情 報 システム 構 築 検 討 委 員 会 ( 以 下, これから 委 員 会 ) は これか らの 学 術 情 報 システムの 在 り 方 について ( 平 成 27 年 5 月 29 日 )

More information

研究者情報データベース

研究者情報データベース 研 究 者 情 報 管 理 システム 研 究 者 向 けデータ 一 括 登 録 機 能 操 作 マニュアル 2013 年 6 月 4 日 目 次 1. はじめに... 1 1.1 本 マニュアルの 注 意 事 項... 1 2. 操 作 手 順... 2 2.1 データ 登 録 手 順... 2 2.2 データ 読 み 込 みエラー 時 の 対 応 手 順... 13 3. 登 録 データ 一 覧...

More information

5 振 込 依 頼 書 の 作 成 方 法 ()ツールの 起 動 コピーまたはダウンロードしたツールをダブルクリックして 開 いてください (ツール 起 動 の 際 マクロを 有 効 にしてください ) ダブルクリック 後 以 下 のメッセージが 出 力 されますので 読 み 取 り 専 用 ボタン

5 振 込 依 頼 書 の 作 成 方 法 ()ツールの 起 動 コピーまたはダウンロードしたツールをダブルクリックして 開 いてください (ツール 起 動 の 際 マクロを 有 効 にしてください ) ダブルクリック 後 以 下 のメッセージが 出 力 されますので 読 み 取 り 専 用 ボタン 振 込 依 頼 書 作 成 ツール のご 利 用 説 明 書 はじめに 振 込 依 頼 書 作 成 ツール( 以 下 ツール という ) は パソコンを 使 用 し 全 国 の ろうきんが 統 一 して 使 用 する 振 込 依 頼 書 を 作 成 するためのツールです ツールを 利 用 して 頂 くことで お 客 様 が 振 込 依 頼 書 を 手 書 きで 作 成 する 負 担 をなくし また

More information

(Microsoft PowerPoint - Ver12\203o\201[\203W\203\207\203\223\203A\203b\203v\216\221\227\277.ppt)

(Microsoft PowerPoint - Ver12\203o\201[\203W\203\207\203\223\203A\203b\203v\216\221\227\277.ppt) ACAD-DENKI DENKI Ver.12 新 機 能 / 改 善 機 能 アルファテック 株 式 会 社 1 新 機 能 改 善 機 能 一 覧 ACAD-DENKI/EL Ver.12 新 機 能 と 改 善 機 能 新 メニュー/ 新 機 能 拡 張 プロジェクト 管 理 外 部 端 子 コネクタ 端 子 ネット 分 割 化 リアルタイム 線 番 挿 入 改 善 項 目 図 題 情 報 編

More information

目 次 遺 失 物 管 理 プログラム 利 用 者 マニュアル 1. 動 作 条 件... 2 2. 遺 失 物 管 理 プログラムのインストール... 2 3. 運 用 の 流 れ... 3 3.1. 起 動 方 法... 3 4. 操 作 方 法 について... 4 4.1. 基 本 的 な 操

目 次 遺 失 物 管 理 プログラム 利 用 者 マニュアル 1. 動 作 条 件... 2 2. 遺 失 物 管 理 プログラムのインストール... 2 3. 運 用 の 流 れ... 3 3.1. 起 動 方 法... 3 4. 操 作 方 法 について... 4 4.1. 基 本 的 な 操 平 成 19 年 11 月 9 日 目 次 遺 失 物 管 理 プログラム 利 用 者 マニュアル 1. 動 作 条 件... 2 2. 遺 失 物 管 理 プログラムのインストール... 2 3. 運 用 の 流 れ... 3 3.1. 起 動 方 法... 3 4. 操 作 方 法 について... 4 4.1. 基 本 的 な 操 作 方 法... 4 4.2. 項 目 の 入 力 値 制 限

More information

購買ポータルサイトyOASIS簡易説明書 b

購買ポータルサイトyOASIS簡易説明書 b 購 買 ポータルサイト yoasis 簡 易 説 明 書 横 河 電 機 株 式 会 社 本 書 は 購 買 ポータルサイト yoasis の 簡 易 的 な 基 本 操 作 について 記 載 してあります 詳 細 な 操 作 方 法 については 別 冊 の 購 買 ポータルサイト yoasis 操 作 説 明 書 をご 覧 下 さい 本 書 の 内 容 は 性 能 / 機 能 の 向 上 などにより

More information

電子申告直前研修会(所得税編)

電子申告直前研修会(所得税編) 電 子 申 告 直 前 研 修 会 ( 所 得 税 編 ) 2011 年 1 月 17 日 : 名 古 屋 2011 年 1 月 18 日 : 東 京 2011 年 1 月 19 日 : 大 阪 2011 年 1 月 20 日 : 福 岡 本 日 の 研 修 内 容 項 目 細 目 1. 所 得 税 電 子 申 告 の 事 前 準 備 1) 顧 問 先 管 理 でのデータ 整 備 2)e-Tax 暗

More information

経 理 上 くん db(version 8.001)の 変 更 点 概 要 Ⅰ. 消 費 税 /リバースチャージ 方 式 の 申 告 に 対 応 1 特 定 課 税 仕 入 特 定 課 税 仕 入 返 還 区 分 を 追 加 しました Ⅱ.その 他 の 改 良 修 正 詳 細 は 後 述 を 参 照

経 理 上 くん db(version 8.001)の 変 更 点 概 要 Ⅰ. 消 費 税 /リバースチャージ 方 式 の 申 告 に 対 応 1 特 定 課 税 仕 入 特 定 課 税 仕 入 返 還 区 分 を 追 加 しました Ⅱ.その 他 の 改 良 修 正 詳 細 は 後 述 を 参 照 経 理 上 手 くんdbNL(Vers 6.001) バージョンアップ 変 更 点 概 要 財 務 処 理 db 導 入 更 新 Version 8.001 当 プログラムは マイクロソフト 社 のサポート 対 応 終 了 に 伴 い Windows XP 搭 載 機 へのインストールは 不 可 と なっています 消 費 税 /リバースチャージ 方 式 の 申 告 に 対 応 特 定 課 税 仕 入

More information

A

A A. ツールボタン の 使 い 方 下 の 図 は NetCommons の 共 通 エディタで 表 示 されるツールボタンの 一 覧 です 書 式 設 定 左 からフォント サイズ スタイルを 設 定 するためのプルダウンメニューです 効 果 をつけたい 箇 所 の 先 頭 でク リックするか 効 果 をつけたい 箇 所 をカーソルで 選 択 してボタンをクリックします 文 字 効 果 左 から

More information

2 科 学 研 究 費 助 成 事 業 のトップページ 画 面 が 表 示 されます [ 研 究 者 ログイン]をクリック します 掲 載 している 画 面 は 例 示 です 随 時 変 更 されます 3 科 研 費 電 子 申 請 システムの 応 募 者 ログイン 画 面 が 表 示 されます e

2 科 学 研 究 費 助 成 事 業 のトップページ 画 面 が 表 示 されます [ 研 究 者 ログイン]をクリック します 掲 載 している 画 面 は 例 示 です 随 時 変 更 されます 3 科 研 費 電 子 申 請 システムの 応 募 者 ログイン 画 面 が 表 示 されます e 2.2.1 科 研 費 電 子 申 請 システム( 交 付 申 請 手 続 き)へログイン 1 Web ブラウザを 起 動 し 日 本 学 術 振 興 会 の 電 子 申 請 のご 案 内 サイト (http://www-shinsei.jsps.go.jp/)を 表 示 し 科 学 研 究 費 助 成 事 業 をクリックします 8 2 科 学 研 究 費 助 成 事 業 のトップページ 画 面 が

More information

技術報告会原稿フォーマット

技術報告会原稿フォーマット Web 情 報 共 有 サービス 利 用 マニュアル 1. ファイルの 保 存 ブラウザを 開 き https://webshare.kyokyo-u.ac.jp を 開 く.ログイン 画 面 が 表 示 されるので,ユーザ ID(メールの ID) とパスワードを 入 力 し,ログインボタンをクリックする( 図 2). ログインに 成 功 すると,TOP フォルダの 一 覧 が 表 示 される (

More information

設定フロー ★印は必須の設定です

設定フロー ★印は必須の設定です AutoBiz StartUp Manual オートビズ 基 本 設 定 マニュアル ( 一 括 登 録 ~ メルマガ 配 信 編 ) 目 次 1. 登 録 用 アドレスリスト(CSV ファイル)の 作 成... 2 2.シナリオ 名 の 変 更...4 3. 登 録 ページ 作 成 でフォームを 作 成... 5 4. 完 了 ページ 作 成 で 解 除 完 了 ページの 設 定... 7 5.

More information

1 全 体 のレイアウトを 把 握 する 2 段 組 レイアウト 1 段 組 レイアウト 左 サイドメニューが 表 示 され, 新 着 記 事 が 一 覧 (または 簡 略 形 式 ) 投 稿 した 記 事 が, 日 付 順 にそのまま 表 示 される で 表 示 される 管 理 メニュー(ダッシュ

1 全 体 のレイアウトを 把 握 する 2 段 組 レイアウト 1 段 組 レイアウト 左 サイドメニューが 表 示 され, 新 着 記 事 が 一 覧 (または 簡 略 形 式 ) 投 稿 した 記 事 が, 日 付 順 にそのまま 表 示 される で 表 示 される 管 理 メニュー(ダッシュ 編 集 者 ユーザー 用 CONTENTS 全 体 のレイアウトを 把 握 する... 1 管 理 メニュー(ダッシュボード)へログインする... 1 ダッシュボードの 見 方 を 覚 える... 2 新 規 投 稿 の 方 法 について... 3 投 稿 記 事 を 編 集 する... 4 メディア( 外 部 ファイル)を 追 加 する... 5 別 のサイトへリンクする... 6 HTML 編

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 株 式 会 社 化 に 伴 う から 特 定 の 員 への 株 式 譲 渡 に 係 る 課 税 関 係 と 手 続 きについて 平 成 20 年 2 月 商 工 中 金 当 資 料 は 貴 において 本 件 取 引 に 関 する 検 討 をされるに 際 して ご 参 考 のための 情 報 提 供 のみを 目 的 として 国 税 庁 の 確 認 を 受 けた 内 容 に 基 づき 商 工 中 金 が

More information

Microsoft Word - ML_ListManager_10j.doc

Microsoft Word - ML_ListManager_10j.doc メーリングリスト 利 用 の 手 引 き(リスト 管 理 者 編 ) for LyrisSynaptive ListManager 10j 第 5 版 目 次... 1 1. メーリングリストとは?... 2 2. メーリングリストの 開 設... 2 2-1 管 理 者 画 面 へのログイン... 2 2-2 リスト 管 理 者 自 身 のパスワードの 変 更... 4 3. メンバーの 登 録...

More information

SchITコモンズ【活用編】

SchITコモンズ【活用編】 2016 SchIT コモンズ 活 用 編 株 式 会 社 スキット 1. 画 像 のサイズ 変 更 (リサイズ) 1. 画 像 の 大 き さ( 幅 )を 変 更 (ア) 画 像 を 挿 入 する 場 合 は[ 画 像 の 挿 入 ]のマークをクリックします [ 参 照 ]をクリックし 任 意 の 場 所 から 挿 入 したい 画 像 を 選 択 し [ 画 像 の 挿 入 ]をクリックします (イ)

More information

WebMail ユーザーズガイド

WebMail ユーザーズガイド ニフティクラウド ビジネスメール メール 共 有 サービス ユーザーズガイド 第 1.1 版 平 成 26 年 5 月 19 日 ニフティ 株 式 会 社 目 次 はじめに... 3 1. 共 有 メールボックスとは... 4 2. 共 有 メールボックスを 表 示 する... 5 3. 閲 覧 履 歴 操 作 履 歴 を 表 示 する... 8 4. 共 有 メールボックスからメールを 送 信 する...

More information

決 算 時 の 流 れ-1 1 年 間 の 仕 訳 入 力 が 終 了 したら 以 下 の 手 順 で 決 算 書 を 作 成 します Step1 精 算 表 を 印 刷 する 1.[F2 入 力 ]タブより 合 計 表 を 選 択 し 月 度 の 指 定 で 期 首 ~12ヶ 月 目 を 指 定

決 算 時 の 流 れ-1 1 年 間 の 仕 訳 入 力 が 終 了 したら 以 下 の 手 順 で 決 算 書 を 作 成 します Step1 精 算 表 を 印 刷 する 1.[F2 入 力 ]タブより 合 計 表 を 選 択 し 月 度 の 指 定 で 期 首 ~12ヶ 月 目 を 指 定 財 務 応 援 決 算 時 の 処 理 財 務 応 援 の 決 算 時 の 処 理 について 説 明 します (C) EPSON SALES JAPAN CORPORATION, All rights reserved.2012 1 決 算 時 の 流 れ-1 1 年 間 の 仕 訳 入 力 が 終 了 したら 以 下 の 手 順 で 決 算 書 を 作 成 します Step1 精 算 表 を 印

More information

Microsoft Word - 20150728_Office365ProPlus利用マニュアル.docx

Microsoft Word - 20150728_Office365ProPlus利用マニュアル.docx Office365ProPlus 利 用 マニュアル ( 学 生 教 職 員 共 通 ) 敬 愛 大 学 千 葉 敬 愛 短 期 大 学 メディアセンター Ver1.1 2015 年 7 月 28 日 制 改 訂 履 歴 バージョン 年 月 日 改 訂 履 歴 1.0 2015/6/24 初 版 1.1 2015/7/28 Microsoft アカウント の 記 述 を Office365 のアカウント

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 創 薬 基 盤 推 進 研 究 事 業 (4 次 公 募 ) H27 年 度 公 募 に 係 る 府 省 共 通 研 究 開 発 管 理 システム (e-rad)への 入 力 方 法 について 1 目 次 1.はじめに 2. 実 際 の 応 募 手 続 き 3. 応 募 手 続 き 完 了 の 確 認 2 1-a. はじめに1 注 意 事 項 1. 平 成 27 年 度 の 創 薬 基 盤 推 進

More information

事前チェック提出用現況報告書作成ツール入力マニュアル(法人用)

事前チェック提出用現況報告書作成ツール入力マニュアル(法人用) 事 前 チェック 提 出 用 現 況 報 告 書 作 成 ツール 入 力 マニュアル ( 法 人 用 ) 平 成 26 年 7 月 一 般 社 団 法 人 日 本 補 償 コンサルタント 協 会 目 次 1. ツールの 概 要 1 2. 動 作 環 境 1 3. マクロの 設 定 (1) Excel のバージョンの 確 認 2 (2) マクロの 設 定 3 4. 現 況 報 告 書 の 作 成 (1)

More information

タグの 内 側 で 関 数 を 定 義 してタグ 側 で 実 行 することもできます <TITLE>JavaScript サンプル</TITLE> function write(str) { document.write(str); } write('hello World!'); 上 例 のように

タグの 内 側 で 関 数 を 定 義 してタグ 側 で 実 行 することもできます <TITLE>JavaScript サンプル</TITLE> function write(str) { document.write(str); } write('hello World!'); 上 例 のように 情 報 メディアとインターネット 授 業 資 料 (2011.7.4) 1.HTML の 基 本 HTML ファイルというのは 例 えば 以 下 のような 内 容 のテキストファイルです 拡 張 子 を.html また は.htm とするのが 普 通 で Web ブラウザで 読 み 込 まれて 中 身 の 表 示 が 行 われます Simple HTML File Hello

More information

Microsݯft Word - 91 forܠ2009November.docx

Microsݯft Word - 91 forܠ2009November.docx 特 集 : Query & Analysis の 仕 訳 転 送 機 能 SunSystems と 連 携 し て 使 用 す る こ と が で き る Infor Performance Management Query&Analysis( 以 下 Q&A) ( 旧 : SunSystems Vision ) と い う 製 品 が あ り ま す Q&A は Microsoft Excel の

More information

富士山チェックリスト

富士山チェックリスト 富 士 山 決 算 マニュアル 富 士 山 賃 貸 管 理 財 務 会 計 を 使 用 して 決 算 を 行 う 場 合 の 一 般 的 な 手 順 をご 説 明 します 個 人 不 動 産 の 決 算 を 行 う 場 合 P1~P8 個 人 一 般 の 決 算 を 行 う 場 合 P4~P8 P11 青 色 申 告 特 別 控 除 額 の 入 力 個 人 農 業 の 決 算 を 行 う 場 合 P4~P11

More information

<4D F736F F D2090C389AA8CA72D92F18F6F2D D F ED28CFC82AF91808DEC837D836A B E838B A815B816A2E646F6378>

<4D F736F F D2090C389AA8CA72D92F18F6F2D D F ED28CFC82AF91808DEC837D836A B E838B A815B816A2E646F6378> 1. 基 本 事 項 1.1. システムで 行 えること デジタルライブラリー では データベース 上 に 登 録 されている 様 々なカテゴリのデータを 検 索 閲 覧 できます データを 検 索 する キーワード 検 索 全 データをフリーワードで 検 索 できます 簡 易 検 索 データの 共 通 項 目 に 条 件 を 指 定 し 全 データを 横 断 して 検 索 できます 詳 細 検 索

More information

スライド 1

スライド 1 CSVファイルによる 利 用 者 情 報 設 定 ガイド NTTレゾナント( 株 ) ビジネスgoo 事 務 局 1 当 ガイドについて ビジネスgooへ 利 用 者 の 情 報 を 登 録 または 更 新 を 行 う 際 数 名 程 度 の 設 定 であれば 設 定 画 面 への 手 入 力 で 問 題 はないと 思 いますが 数 十 人 単 位 となりますと 手 入 力 では 大 変 です ビジネスgooではCSVファイルを

More information

1

1 精 華 町 個 人 情 報 保 護 条 例 改 正 に 向 けての 考 え 方 ( 案 ) 平 成 27 年 4 月 精 華 町 0 1 目 次 1 個 人 情 報 保 護 に 関 する 法 体 系 と 番 号 法 における 特 定 個 人 情 報 の 保 護 措 置... 1 2 番 号 法 と 精 華 町 個 人 情 報 保 護 条 例 における 個 人 情 報 の 定 義 上 の 差 異...

More information

1-1 一覧画面からの印刷

1-1 一覧画面からの印刷 第 7 章 公 報 の 印 刷 7-1 一 覧 画 面 からの 印 刷 検 索 された 公 報 は 印 刷 することができます 目 次 印 刷 や 公 報 全 文 複 数 件 の 公 報 印 刷 も 可 能 です はじめに 検 索 画 面 から 結 果 一 覧 ボタンを 押 して 検 索 結 果 一 覧 画 面 を 表 示 させます 印 刷 方 法 をご 確 認 ください 一 括 選 択 ( 反 転

More information

コンピュータ基礎実習(上級) 第二回

コンピュータ基礎実習(上級) 第二回 コンピュータ 基 礎 実 習 ( 上 級 ) 第 四 回 ウェブページの 作 成 について3 清 水 淳 紀 前 回 までの 内 容 ページの 作 成 方 法 ( 編 集 アップロード 確 認 ) ページはKompozer やメモ 帳 等 で 編 集 する ページを 公 開 するには アップロードをする 必 要 がある Internet Explorerなどでページを 開 き F5キーで 表 示 を

More information

戦略担当者のための

戦略担当者のための アーカイブに 登 録 するための ナレッジ 作 成 方 法 1.ナレッジの 整 理 2.ナレッジの 文 章 化 (1)タイトルと 目 次 の 設 定 (2) 本 文 の 作 成 (3) 体 裁 の 整 備 と 校 正 (4)PDFの 作 成 2008 年 8 月 http://www.darecon.com 1.ナレッジの 整 理 初 めにナレッジ( 知 識 ノウハウ)を 整 理 します 以 下 の4

More information

医 療 費 自 己 負 担 額 支 払 明 細 書 入 力 シート - 目 次 - < 第 1 章 > 共 通 事 項 説 明 医 療 費 自 己 負 担 額 支 払 明 細 書 入 力 シート 目 次 1.1 本 システムの 注 意 点 1 1.2 入 力 項 目 について 1.2.1 基 本 情

医 療 費 自 己 負 担 額 支 払 明 細 書 入 力 シート - 目 次 - < 第 1 章 > 共 通 事 項 説 明 医 療 費 自 己 負 担 額 支 払 明 細 書 入 力 シート 目 次 1.1 本 システムの 注 意 点 1 1.2 入 力 項 目 について 1.2.1 基 本 情 医 療 費 自 己 負 担 額 支 払 明 細 書 入 力 シート - 目 次 - < 第 1 章 > 共 通 事 項 説 明 医 療 費 自 己 負 担 額 支 払 明 細 書 入 力 シート 目 次 1.1 本 システムの 注 意 点 1 1.2 入 力 項 目 について 1.2.1 基 本 情 報 入 力 項 目 2 1.2.2 子 ども 医 療 費 明 細 入 力 項 目 3 1.2.3 ひとり

More information

1 林 地 台 帳 整 備 マニュアル( 案 )について 林 地 台 帳 整 備 マニュアル( 案 )の 構 成 構 成 記 載 内 容 第 1 章 はじめに 本 マニュアルの 目 的 記 載 内 容 について 説 明 しています 第 2 章 第 3 章 第 4 章 第 5 章 第 6 章 林 地

1 林 地 台 帳 整 備 マニュアル( 案 )について 林 地 台 帳 整 備 マニュアル( 案 )の 構 成 構 成 記 載 内 容 第 1 章 はじめに 本 マニュアルの 目 的 記 載 内 容 について 説 明 しています 第 2 章 第 3 章 第 4 章 第 5 章 第 6 章 林 地 ( 資 料 3) 林 地 台 帳 及 び 地 図 整 備 マニュアル( 案 ) 概 要 本 資 料 は 現 時 点 での 検 討 状 況 を 基 に 作 成 したものであり 今 後 事 務 レベルの 検 討 会 等 を 経 て 成 案 を 得 ることとしてい ます 平 成 28 年 7 月 林 野 庁 計 画 課 1 林 地 台 帳 整 備 マニュアル( 案 )について 林 地 台 帳 整 備 マニュアル(

More information

目 次 1 ログインする 1 2 研 修 情 報 を 登 録 する 2 step1 登 録 フォームに 入 力 する 2 step2 プレビューで 入 力 内 容 を 確 認 する 18 step3 下 書 き 保 存 する 20 step4 登 録 する 21 step5 管 理 者 による 承

目 次 1 ログインする 1 2 研 修 情 報 を 登 録 する 2 step1 登 録 フォームに 入 力 する 2 step2 プレビューで 入 力 内 容 を 確 認 する 18 step3 下 書 き 保 存 する 20 step4 登 録 する 21 step5 管 理 者 による 承 京 都 市 社 会 福 祉 研 修 情 報 システム 京 福 祉 の 研 修 情 報 ネット 操 作 マニュアル - 主 催 者 編 - 第 1.3 版 2016 年 5 月 16 日 目 次 1 ログインする 1 2 研 修 情 報 を 登 録 する 2 step1 登 録 フォームに 入 力 する 2 step2 プレビューで 入 力 内 容 を 確 認 する 18 step3 下 書 き 保

More information

Lecture/CompPracR2003/12th

Lecture/CompPracR2003/12th Lecture/CompPracR2003/12th 2016 年 7 月 17 日 コンピュータ 演 習 ( 再 ) 第 12 回 (1) Webページの 作 成 (1) Webページを 作 成 する 道 具 (1) テキストエディタを 使 うメリット デメリット (2) HTML (2) HTMLとは (2) HTMLの 書 き 方 (3) HTMLファイルの 構 造 (3) 空 白 と 改 行

More information

3. 選 任 固 定 資 産 評 価 員 は 固 定 資 産 の 評 価 に 関 する 知 識 及 び 経 験 を 有 する 者 のうちから 市 町 村 長 が 当 該 市 町 村 の 議 会 の 同 意 を 得 て 選 任 する 二 以 上 の 市 町 村 の 長 は 当 該 市 町 村 の 議

3. 選 任 固 定 資 産 評 価 員 は 固 定 資 産 の 評 価 に 関 する 知 識 及 び 経 験 を 有 する 者 のうちから 市 町 村 長 が 当 該 市 町 村 の 議 会 の 同 意 を 得 て 選 任 する 二 以 上 の 市 町 村 の 長 は 当 該 市 町 村 の 議 第 6 回 税 理 士 試 験 固 定 資 産 税 はじめに 第 一 問 については 個 別 理 論 題 の 出 題 であった 1については 固 定 資 産 評 価 員 及 び 固 定 資 産 評 価 補 助 員 に 関 する 出 題 であったが 個 別 理 論 での 出 題 であり 判 断 に 迷 う 点 もなく 高 得 点 を 取 ることが 可 能 な 問 題 であった については 区 分 所

More information

<4D F736F F D2091E F18CB48D C481698E7B90DD8F9590AC89DB816A2E646F63>

<4D F736F F D2091E F18CB48D C481698E7B90DD8F9590AC89DB816A2E646F63> 平 成 18 年 7 月 独 立 行 政 法 人 国 立 大 学 財 務 経 営 センター 国 立 大 学 法 人 等 による 国 立 大 学 財 務 経 営 センターへの 土 地 譲 渡 収 入 の 一 部 納 付 の 仕 組 みについて 国 立 大 学 法 人 等 が 国 から 出 資 された 土 地 を 譲 渡 した 場 合 文 部 科 学 大 臣 が 定 める 基 準 に より 算 定 した

More information

スライド 1

スライド 1 新 機 能 マニュアル( 事 業 者 向 け) 平 成 22 年 7 月 新 機 能 概 要 携 帯 電 話 メールアドレス 入 力 項 目 追 加 ( 詳 細 2P) ページデザイン 選 択 (5パターン) ページレイアウトが 選 択 可 能 になります ( 詳 細 3P) Googleマップ 設 定 Googleマップを 自 動 表 示 します ( 詳 細 4P) QRコードの 表 示 / 非

More information

目 次 機 能 -------------------- 3 運 用 上 の 注 意 -------------------- 4 処 理 手 順 -------------------- 5 画 面 説 明 ログイン -------------------- 6 直 送 先 選 択 1 -----

目 次 機 能 -------------------- 3 運 用 上 の 注 意 -------------------- 4 処 理 手 順 -------------------- 5 画 面 説 明 ログイン -------------------- 6 直 送 先 選 択 1 ----- DONKEL order system 御 利 用 ガイド お 得 意 様 : 様 電 話 : ご 担 当 者 様 : お 得 意 様 ID: パスワード: * 変 更 希 望 の 方 はP4をご 覧 ください ドンケル 株 式 会 社 目 次 機 能 -------------------- 3 運 用 上 の 注 意 -------------------- 4 処 理 手 順 --------------------

More information

SPARQL Finder設置方法

SPARQL Finder設置方法 簡 易 LOD 検 索 サイト 作 成 ツール (SPARQL Finder) 設 定 方 法 2013/12/25 大 阪 大 学 産 業 科 学 研 究 所 加 藤 敦 丈, 古 崎 晃 司 概 要 目 次 概 要 本 ドキュメントは, 簡 易 LOD 検 索 サイト 作 成 ツール の 利 用 方 法 を 解 説 したものです. ツールの 詳 細,ダウンロードは 公 開 サイト https://sourceforge.jp/projects/easylod/wiki/easylodsite

More information

名刺作成講習

名刺作成講習 名 刺 作 成 講 習 (Word 2007 編 ) OS:Windows Vista Basic 講 習 内 容 Microsoft Word 2007 でオリジナル 名 刺 の 作 成 名 刺 用 紙 の 確 認 印 刷 用 紙 の 詳 細 を 調 べる ラベル 製 品 名 エーワン 製 品 番 号 A-ONE 51002 用 紙 サイズ A4 列 数 2 行 数 5 上 余 白 11 横 余

More information