実践! PHP講座 第7号

※ 手っ取り早くPHPを習得したい方へ

『マンモス本』として有名な本をお勧めします!

赤のマンモス本 – PHP4徹底攻略
青のマンモス本 – PHP4徹底攻略 実戦編

=======================
実践! PHP講座 第7号
=======================

あきらです。『実践! PHP講座』第7回を始めます。

大阪日本橋で中古ノートパソコンを買いました。
NEC の VersaPro VA70H という古いパソコンです。
Fedora Core 5 (Linux) をインストールして使っています。
サウンドカードなど、インストール時に自動認識してくれたので、
Windows のインストールより楽でした。
PHPでの開発・テストには十分です。

さて、今回はFormとJavaScriptの連携です。
PHPとは直接関係無いのですが、組み合わせることで通常のアプリケーション
のような動作を実現できます。

それでは、今回はじっくり始めましょう!

————————————————–
フォーム攻略 ?JavaScript編?

WebアプリでPHPの出来ることは、最終的にはHTMLの出力です。
ここで、JavaScriptをHTMLの一部として出力することで、動的なJavaScript
を出力できます。

JavaScriptの解説は、この講座の目的では無いので、各自Googleなどで情報
収集してください。

————————————————–
JavaScriptで実現すること

今回はJavaScriptを活用することで以下を実現します。

1. メッセージを alert (ダイアログ)で表示する。

画面上にエラーを表示してもいいのですが、レイアウトが崩れたり、画面を
スクロールしなくてはならなくなります。

2. submitボタンを使わずにフォームデータを送信する。

誤ってEnterキーを押してしまった場合、submitボタンやimageボタンがある
と、フォームが送信されてしまいます。

3. 色々なイベントの際に入力を全て取得する。

経験されている方もいると思いますが、単純にボタンやアンカーでイベント
を検出すると、入力途中の値が消えてしまいます。

実現方法は、

1. 画面全体をフォームとしてデザインする。

入力途中の値も送信されます。

2. イベント種別を設定するhiddenパラメータを定義する。

PHP側ではこの値で処理を分岐します。

3. フォーム送信用のJavaScript関数を定義する。

各イベントでこの関数を呼び出すことでフォームを送信します。

4. 各イベントで上記関数を呼び出す。

各イベントでこの関数を呼び出すことでフォームを送信します。

————————————————–
サンプルプログラム

今回もサンプルプログラムを用意したので、ダウンロードしてください。

http://akira.bitter.jp/magazine/04_form_javascript.zip

前回同様に解凍し、移動します。

※ akira_ctl.php は機能追加していますので前回のものは使えません。

————————————————–
解説

それでは、解説して行きます。
ブラウザで確認しながら、エディタでプログラムソースを見てください。

今回はいきなり動作するサンプルです。

[Step 1]

URL : http://localhost/akira/04_form_javascript/step_1.php
PHP : C:Inetpubwwwrootakira4_form_javascriptstep_1.php

akira_ctl.php を拡張して、システム領域とページ領域を区別しました。
本当はページ別に細分化するべきなのですが、それは今後。

akira_msg.php でメッセージの管理用の関数を定義しました。
セッション変数のシステム領域を使います。

akira_msg.php でメッセージの管理用の関数を定義しました。
セッション変数のシステム領域を使います。

メインの部分は今までのサンプルとほぼ同じです。

大きく違うのは、$_POST[‘_event’] をチェックしてイベント別の関数を処理
している部分です。
スクリプト言語ですので、関数が定義されているかチェックして呼び出す事が
可能です。これを使わない手はありません。

このように、Webアプリは、ほぼ決まりきったパターンで処理できることがわ
かったと思います。
毎回同じ処理を記述するのは無駄です。また、バグの基ともなります。

そこで…

[Step 2]

URL : http://localhost/akira/04_form_javascript/step_2.php
PHP : C:Inetpubwwwrootakira4_form_javascriptstep_2.php

メイン部分をクラス化しました。
クラスを「extends」すると、同名の関数(メソッド)は置き換えられます。
変更・追加する部分を関数定義して行けばどんどん変更して行けます。

このような開発では、HTML, JavaScript, PHPの基礎知識が必要です。
さらにこれらを総合して実現方法を発想する必要があります。
たとえ天才でも経験が必要だと思います。

— 今回のまとめ ———————————-
・現在、JavaScriptは基礎知識として必要。
・クラスを使うことによって開発効率アップ。
・基本的な関数などはあえてクラスを使わない。
・総合的な発想には経験が必要。

————————————————–
それでは宿題です。あなたのために。

今回のスクリプトを改造して、各行を上下移動できるようにしてください。
!Hint
<a href=”javascript:on_events(‘move’,’up’,0,”);”>↑</a>
などとして、
function event_move()
を定義してはどうでしょうか?

— 今回のTips ————————————
なぜ最初から最終ソースを解説しないのですか?

それは、自分が理解してきた道のりをあなたに経験してもらうためです。

また、実務に使う場合、他人のプログラムのバグを修正する必要があるでし
ょう。その際、あきらのサンプルプログラムを読んだ経験が生かされると考
えるからです。

コピペで済ましていては、デバッグや顧客の望む物はできません。

あきらは最初からPHP言語だけ使ってきたわけではありません。
多くのサンプルプログラムを書いてはテストし、確かな物だけを選択してき
ました。時間はかかってもその他の言語もこうして理解するほか無いでしょ
う。

PHP言語は「入り口」かもしれませんが、依存すべきではありません。
他の言語がメインになった場合でも対応できる「地力」が必要なのです。

すべては、「あなた自身のため」です。
————————————————–

次は「基礎のまとめ」を計画しています。
その後、「データ入出力編」を計画しています。

1件のコメント

  1. ここ最近、頻繁に拝見させて頂いております。

    とても興味深い記事が多く、あきらさんのPGに対する考え方も共感出来、非常に参考になっています。

    「ただ読んでいるだけでは・・・」と思いながらも、自分はまだまだ未熟で有力な意見も述べられないので、「せめてコメントを・・・」と記させて頂きました。

    またこれからも拝見させて頂きたいと思います。

ostorish へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください